<div dir="ltr">Hi!<br><div class="gmail_extra"><br><div class="gmail_quote">2017-10-24 11:38 GMT+02:00 Rob A'Court <span dir="ltr"><<a href="mailto:saintderanged.web@gmail.com" target="_blank">saintderanged.web@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 style="font-size:12.8px">Hi</div><div style="font-size:12.8px"><br></div><span style="font-size:12.8px">I</span><span style="font-size:12.8px">s there a way to downgrade a TLS connection to TCP without an TLS Alert exchange in Erlang/Elixir?</span></div></blockquote><div><br></div><div><br></div><div>No! That would break the TLS protocol:</div><div><br></div><div>FROM the RFC.</div><div><br></div><pre class="gmail-newpage" style="font-size:13.3333px;margin-top:0px;margin-bottom:0px;color:rgb(0,0,0)">  "If the application protocol using TLS provides that any data may be
   carried over the underlying transport after the TLS connection is
   closed, the TLS implementation must receive the responding
   close_notify alert before indicating to the application layer that </pre><div><span style="color:rgb(0,0,0);font-size:13.3333px">      the TLS connection has ended.</span> "<br></div><div><br></div><div><br></div><div><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"><div style="font-size:12.8px"></div><div style="font-size:12.8px">To give a bit of context: We've implemented the MS-TDS protocol (used by Microsoft SQL Server) using Elixir and the ssl and gen_tcp libraries. A TDS connection typically is unencrypted apart from the login. It starts unencrypted with a prelogin handshake, after that comes the TLS handshake, and encrypted login packet is sent and then all further packets are unencrypted. </div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Using :ssl.close to downgrade the socket to TCP expects a TLS alert exchange to end the SSL connection however TDS does not expect or support TLS alerts, it simply goes back to being unencrypted after the login. I appreciate this is not standard TLS but I'm not expecting to change Microsoft's protocol to SQL Server any time soon! </div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Currently we stop encryption by sending data directly to the TCP socket and changing the controlling process of the TCP socket to our receiving process. This works however it leaves the ssl_connection process hanging around. It monitors our receiving process and if that process dies a TLS alert is sent which TDS is not expecting. The alert is only sent in some teardown scenarios but it just seems rather messy. We're wondering if there's a better way to approach our problem?</div></div></blockquote><div><br></div><div><br></div><div>Not any clean way that I can think of, but you might be a able to make an unclean one if you are willing to do what you describe above, which is  not very clean.</div><div> </div><div><br></div><div>Regards Ingela Erlang/OTP Team - Ericsson AB<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 style="font-size:12.8px"></div><div style="font-size:12.8px">Many thanks<span class="gmail-HOEnZb"><font color="#888888"><br><br>Rob</font></span></div></div>
<br>______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div></div>