Java Java 7 中的 SNIServerName 支持

Java SNIServerName support in Java 7

根据 Wikipedia, Java 1.7 should support SNIServerName, but as per Java docs 在他们的 javax.net.ssl package.Can 中没有这样的 class 有人请澄清一下吗?我是否必须使用 Java 8 API 才能使用 SNIServerName class?

支持有,见https://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements-7.html:

Server Name Indication (SNI) for JSSE client: The Java SE 7 release supports the Server Name Indication (SNI) extension in the JSSE client. SNI is described in RFC 4366. This enables TLS clients to connect to virtual servers.

但是,它是以不同的方式实现的。例如 https://issues.apache.org/jira/browse/HTTPCLIENT-1119 讨论了这个。相关报价可能是

Java 8 has a completely different SNI API provided out of javax.net.ssl package

所以是的,class 不会有 Java 7,而你会 "have to use Java 8 API to use SNIServerName class",就像你问的那样。

有关如何将 SNI 与 Java 7 一起使用的讨论,请参阅 this thread