【发布时间】:2017-01-24 13:12:45
【问题描述】:
根据Wikipedia,Java 1.7 应该支持 SNIServerName,但是根据Java docs,他们的 javax.net.ssl 包中没有这样的类。有人可以澄清一下吗?我是否必须使用 Java 8 API 才能使用 SNIServerName 类?
【问题讨论】:
根据Wikipedia,Java 1.7 应该支持 SNIServerName,但是根据Java docs,他们的 javax.net.ssl 包中没有这样的类。有人可以澄清一下吗?我是否必须使用 Java 8 API 才能使用 SNIServerName 类?
【问题讨论】:
那里有支持,见https://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements-7.html:
JSSE 客户端的服务器名称指示 (SNI):Java SE 7 版本 支持 JSSE 中的服务器名称指示 (SNI) 扩展 客户。 SNI 在 RFC 4366 中进行了描述。这使 TLS 客户端能够 连接到虚拟服务器。
但是,它以不同的方式实现。例如https://issues.apache.org/jira/browse/HTTPCLIENT-1119 讨论了这个。相关报价可能是
Java 8 提供了完全不同的 SNI API javax.net.ssl 包
所以是的,Java 7 中不会有该类,并且您将“必须使用 Java 8 API 才能使用 SNIServerName 类”,就像您问的那样。
有关如何在 Java 7 中使用 SNI 的讨论,请参阅this thread。
【讨论】: