java - Java 上的服务器名称指示 (SNI)

标签 java http ssl sni

任何人都可以帮助我开始使用 Java 执行带有服务器名称指示的 HTTP 连接吗?

我正在尝试从我管理的站点请求内容。我一直在使用 Apache 的 HttpClient 库,但我对安全内容的请求失败了,因为该网站仅将 SNI 用于 HTTPS,而 DefaultHttpClient 中未启用 SNI。我已经在 Apache 的 HttpClient 库中寻找关于如何处理这个问题的说明,但我看到最终得到了这个文档:http://hc.apache.org/httpclient-3.x/sslguide.html ,已过时(指的是 HttpClient 和 HttpCore 是 Apache 公共(public)包的一部分时的代码)。

那么...有什么帮助吗?

最佳答案

您可能想跟踪 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

关于java - Java 上的服务器名称指示 (SNI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12361090/

相关文章:

java - 让 Hibernate 在保存时级联,但不删除?

java - 当对象状态改变时调用方法

java - 在 Java 中处理 HTTP 调用的大文件

java - TLS 扩展 "Server Name Indication"(SNI) : value not available on server side

mysql - Cloud SQL 上的证书验证

java - 改进 LDAP 的 Java 代码

java - 无法使用 SMTP 发送电子邮件(获取 javax.mail.MessagingException : Could not convert socket to TLS;)

http - Elixir:使用流 API 的 HTTPResponseStream

http - 多个客户端如何同时连接到服务器上的一个端口,比如 80?

java - Bamboo 代理 - 错误 SSLPeerUnverifiedException : peer not authenticated