5

Java 7 带来了对 SNI 的客户端支持。是否存在已知的 SNI 服务器角色的开源实现?Java 提供“透明支持”TLS 连接(包括握手),但我需要解耦握手过程,以便我可以根据 SNI 主机名扩展发回证书。

在网上找不到文档后,我查看了 OpenJDK 源代码,但似乎没有一点可以在 Java 发送 ServerHello 消息之前监控 ClientHello 消息。

4

3 回答 3

4

我前段时间做了一个快速破解:https ://bitbucket.org/zmarcos/sniserversocket

如果您按照说明操作:https ://bitbucket.org/zmarcos/sniserversocket/wiki/Home

它甚至可以在 Glassfish 等 Java EE 服务器上运行。

于 2013-07-12T03:18:10.980 回答
1

我不知道 Java 7 的已知开源实现,但Java 8 中将提供服务器 SNI 支持。如果您将此移植到 Java 7,我很想知道。

于 2013-07-12T01:08:42.160 回答
0

我自己也遇到了同样的问题,最后写了一个开源库:TLS Channel。该库的范围实际上更大:它是 SSLEngine 的完整抽象(很难直接使用),将其公开为 ByteChannel。

关于 SNI,该库在创建 SSLEngine 之前解析第一个字节。然后,用户可以向服务器通道提供一个函数,以根据接收到的域名选择 SSLContexts。

于 2017-07-22T14:23:14.800 回答