【问题标题】:Java SNIServerName support in Java 7Java 7 中的 Java SNIServerName 支持
【发布时间】:2017-01-24 13:12:45
【问题描述】:

根据Wikipedia,Java 1.7 应该支持 SNIServerName,但是根据Java docs,他们的 javax.net.ssl 包中没有这样的类。有人可以澄清一下吗?我是否必须使用 Java 8 API 才能使用 SNIServerName 类?

【问题讨论】:

    标签: java ssl sni


    【解决方案1】:

    那里有支持,见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

    【讨论】:

    • 谢谢,这有帮助。我需要在运行时为this issue 启用/禁用 SNI。由于设置 SNI 参数的选项在 Java 7 中不直接可用,因此我将覆盖 SSLSocketFactory 的 createSocket() 方法名称,主机名为空以禁用 SNI。
    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多