我有一台服务器,并且基于此示例添加了一个 SNIMatcher
http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#SNIExamples
SSLServerSocket sslServerSocket = ...;
SNIMatcher matcher = SNIHostName.createSNIMatcher("www\\.example\\.(com|org)");
Collection<SNIMatcher> matchers = new ArrayList<>(1);
matchers.add(matcher);
SSLParameters params = sslServerSocket.getSSLParameters();
params.setSNIMatchers(matchers);
sslServerSocket.setSSLParameters(params);
我在 hosts 文件中添加了 example.com 和 example.org 为 127.0.0.1
当我访问 example.com 和 example.org 时,它们都获得了相同的 localhost 证书(我为 example.org 创建了一个单独的证书)
我的问题是附加 SNIMatcher 的正确方法是什么
我是否需要为每个拥有自己证书的虚拟主机创建一个单独的匹配器?(我这样做了,但我得到了一个 IllegalArgumentException,因为两个主机都具有相同的类型 0 (StandardConstants.SNI_HOST_NAME)
所以我改变了我附加的方式,只是按照示例 (com|org) 的方式进行操作,但它为两者返回了相同的证书。只是想知道正确的方法是什么?
谢谢你