title: TLS with SNI in Java clients
body: <p>There is an ongoing discussion on the <a href="http://nhindirect.org/message/list/Security+and+Trust+Workgroup" rel="noreferrer">security and trust working group for NHIN Direct</a> <a href="http://nhindirect.org/message/view/Security+and+Trust+Workgroup/23578139" rel="noreferrer">regarding the IP-to-domain mapping problem that is created with traditional SSL</a>. If an HISP (as defined by NHIN Direct) wants to host thousands of NHIN Direct "Health Domains" for providers, then it will an "artificially inflated cost" to have to purchase an IP for each of those domains.</p>
  
  <p>Because Apache and OpenSSL have recently released TLS with support for the SNI extension, it is possible to use SNI as a solution to this problem <strong>on the server side</strong>. However, if we decide that we will <em>allow</em> server implementations of the NHINDirect transport layer to support TLS+SNI, then we must <strong>require</strong> that all clients support SNI too. OpenSSL based clients should do this by default and one could always us stunnel to implement an TLS+SNI aware client to proxy if your given programming language SSL implementation does not support SNI. It appears that native Java applications using OpenJDK do not yet support SNI, but I cannot get a straight answer out of that project. I know that there are OpenSSL Java libraries available but I have no idea if that would be considered viable.</p>
  
  <p>Can you give me a "state of the art" summary of where TLS+SNI support is for Java clients? I need a Java implementers perspective on this.</p>