<div dir="ltr"><div>Yeah, that looks like it would help. When I was tracing the code, this line was returning zero packets because there wasn't enough data:<br><br><span class="inbox-inbox-blob-code-inner">{<span class="inbox-inbox-pl-smi">Packets</span>, <span class="inbox-inbox-pl-smi">Buf</span>} <span class="inbox-inbox-pl-k">=</span> <span class="inbox-inbox-pl-en">tls_handshake</span>:<span class="inbox-inbox-pl-en">get_tls_handshake</span>(<span class="inbox-inbox-pl-smi">Version</span>,<span class="inbox-inbox-pl-smi">Data</span>,<span class="inbox-inbox-pl-smi">Buf0</span>, <span class="inbox-inbox-pl-smi">Options</span>)<br>(<a href="https://github.com/erlang/otp/commit/1364c7308e17d43d1a2244e3f2bf11cfec3789ef#diff-f053ce3c6b9ffc18f497e4bcbc9661f2R426">https://github.com/erlang/otp/commit/1364c7308e17d43d1a2244e3f2bf11cfec3789ef#diff-f053ce3c6b9ffc18f497e4bcbc9661f2R426</a>)<br><br></span></div><span class="inbox-inbox-blob-code-inner">In that commit, it looks like if no packets can be decoded, you go back and look for more data, which is what it wasn't doing before.<br></span></div><br><div class="gmail_quote"><div dir="ltr">On Thu, May 3, 2018 at 1:03 AM Ingela Andin <<a href="mailto:ingela.andin@gmail.com">ingela.andin@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi Ryan!</div><div><br></div><div class="gmail_extra"><br><div class="gmail_quote"></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2018-05-02 18:08 GMT+02:00 Ryan Stewart <span dir="ltr"><<a href="mailto:zzantozz@gmail.com" target="_blank">zzantozz@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"> I actually just checked it in the current release of 20, and it works there. It's just broken in 18 and 19 that I know of.<br></div></blockquote><div><br></div><div><br></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">Ah, ok the only relevant commit that I can think of that could have fixed it is: 1364c7308e17d43d1a2244e3f2bf11cfec3789ef</span><div class="gmail_extra" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"><br></div><div class="gmail_extra" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial">Regards Ingela Erlang/OTP team </div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"></div><div class="m_-5980352711182340148gmail-HOEnZb"><div class="m_-5980352711182340148gmail-h5"><br><div class="gmail_quote"><div dir="ltr">On Wed, May 2, 2018 at 10:52 AM Ingela Andin <<a href="mailto:ingela.andin@gmail.com" target="_blank">ingela.andin@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi!<div><br></div><div>I have not had time to check, but it sounds like it could be another bug that  I recently fixed. Could you try out the release candidate for OTP 21.</div><div><br></div><div></div></div><div dir="ltr"><div>Regards Ingela Erlang/OTP Team - Ericsson AB<br></div></div><div dir="ltr"><div><div class="gmail_extra"><br><div class="gmail_quote">2018-05-02 16:38 GMT+02:00 Ryan Stewart <span dir="ltr"><<a href="mailto:zzantozz@gmail.com" target="_blank">zzantozz@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>Hi Ingela! Yeah, let me be more clear. The issue is when Erlang is acting as a client and receives a "certificate request" from a server during the handshake, as described at <a href="https://tools.ietf.org/html/rfc5246#section-7.4.4" target="_blank">https://tools.ietf.org/html/rfc5246#section-7.4.4</a>. Since Erlang is receiving the message, it's a decode rather than an encode, but the problem is that it's not handling fragmented messages, similar to the story I linked. I'm able to recreate the issue easily by starting a server that sends certificate requests using the system-installed CAs on a CentOS box, like this:<br><br>$ openssl req -x509 -newkey rsa:2048 -keyout private.pem -out public.pem -days 365 -nodes<br>$ openssl s_server -accept 12345 -cert public.pem -key private.pem -CAfile /etc/pki/tls/certs/ca-bundle.crt -verify 1<br><br></div>Then from Erlang:<br><br>1> application:ensure_all_started(ssl).<br>{ok,[crypto,asn1,public_key,ssl]}<br>2> ssl:connect("localhost", 12345, []).<br><br>=ERROR REPORT==== 2-May-2018::14:30:13 ===<br>SSL: certify: tls_connection.erl:774:Fatal error: handshake failure<br>{error,{tls_alert,"handshake failure"}}<br><br></div>There are so many CAs included by default these days, it's enough to trigger this bug. If you add a "-msg" to the s_server, you'll see the (very long) certificate request sent out, followed by a handshake_failure alert received from the client (Erlang). On the off chance you try this on a system without enough CAs, I guess we could just generate a bunch of certs and make our own, big CA file. The certificate request in my test above was 19185 bytes, which is larger than a TLS record is allowed to be, so it forces fragmentation.<br></div><div class="m_-5980352711182340148gmail-m_-6035252855029667271m_-8686707403195451664HOEnZb"><div class="m_-5980352711182340148gmail-m_-6035252855029667271m_-8686707403195451664h5"><br><div class="gmail_quote"><div dir="ltr">On Wed, May 2, 2018 at 5:32 AM Ingela Andin <<a href="mailto:ingela.andin@gmail.com" target="_blank">ingela.andin@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi!<br><div><div class="gmail_extra"><br><div class="gmail_quote"></div></div></div></div><div dir="ltr"><div><div class="gmail_extra"><div class="gmail_quote">2018-05-01 19:23 GMT+02:00 Ryan Stewart <span dir="ltr"><<a href="mailto:zzantozz@gmail.com" target="_blank">zzantozz@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I've been getting handshake_failure alerts when trying to connect to a particular server, and I think I've traced it to the fact that the TLS records aren't being handled correctly with respect to fragments. In particular, this server is sending a rather large "certificate request" to allow for client cert auth, and the list is too long to fit in one TLS record. That's breaking the TLS handshake in at least Erlang 18 and 19, I believe. It's basically a mirror image of the problem described in <a href="https://bugs.erlang.org/browse/ERL-83" target="_blank">https://bugs.erlang.org/browse/ERL-83</a>. That issue is with Erlang as the TLS server. I'm seeing the same thing with it being the client. Is this addressed somewhere?<br></div>
<br></blockquote><div><br></div></div></div></div></div><div dir="ltr"><div><div class="gmail_extra"><div class="gmail_quote"><div>Can you give me a possibility to recreate the issue?  That issue you described was fixed in 18 and both the client and the server uses the same code to encode handshakes. The issue was in the encoding and not in the<br></div><div>decoding. Can you tell us more details of how you reached your conclusion?<br><br></div><div>Regards Ingela Erlang/OTP Team - Ericsson AB<br></div><div><br><br><br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div></div></div>
</blockquote></div>
</div></div></blockquote></div><br></div></div></div></blockquote></div>
</div></div></blockquote></div></div></div></blockquote></div>