我使用Apache HttpClient(4.5.2)使用Java 8,我收到此错误:
javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name
我知道我可以使用:
解决这个问题 System.setProperty("jsse.enableSNIExtension", "false");
但如果我这样做,其他https网站将无法再连接。
从这两个站点我只能连接到一个站点,具体取决于我是否启用了SNI,但是我没有找到允许我连接成功的设置:
任何人都可以复制或已经解决了这个问题吗?
答案 0 :(得分:0)
引发此异常是因为服务器返回的证书与您请求的FQDN不匹配。在客户端禁用SNI不是合适的解决方案,而是必须按照HttpClient doc
中的说明禁用主机名验证SSLContext sslContext = SSLContexts.createSystemDefault();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
sslContext,
NoopHostnameVerifier.INSTANCE);