Java上的服务器名称指示(SNI)
问题内容:
谁能帮助我开始使用Java用服务器名称指示进行HTTP连接吗?
我正在尝试从我管理的网站请求内容。我一直在使用Apache的HttpClient库,但是我对安全内容的请求失败,因为该网站仅将SNI用于HTTPS,并且DefaultHttpClient中未启用SNI。我一直在Apache的HttpClient库中寻找有关如何实现此目标的说明,但最终看到此文档:http
:
//hc.apache.org/httpclient-3.x/sslguide.html,该文件已过时(当HttpClient和HttpCore是Apache的commons软件包的一部分时,请参考代码)。
那么…有什么帮助吗?
问题答案:
您可能要跟踪https://issues.apache.org/jira/browse/HTTPCLIENT-1119
Java
7的底层客户端实现能够支持它,并通过SSLSocketImpl#setHost(由sun.net.www.protocol.https.HttpsClient调用)公开该功能。
在Java 7上使用
new URL("https://cmbntr.sni.velox.ch/").openStream()
直到修复HTTPCLIENT-1119