Tomcat Websocket禁用主机名验证

时间:2018-07-09 11:09:33

标签: java tomcat websocket

我正在尝试为tomcat websocket实施禁用主机名验证,但没有找到任何示例。

我已经能够禁用证书验证:

WebSocketContainer container = ContainerProvider.getWebSocketContainer();
ClientEndpointConfig config = ClientEndpointConfig.Builder.create().build();
TrustStrategy acceptingTrustStrategy = (X509Certificate[] chain, String authType) -> true;
SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
                .loadTrustMaterial(null, acceptingTrustStrategy)
                .build();

config.getUserProperties().put("org.apache.tomcat.websocket.SSL_CONTEXT", sslContext);

官方文件说:

对于安全服务器端点,默认情况下启用主机名验证。要绕过此验证(不推荐),必须通过org.apache.tomcat.websocket.SSL_CONTEXT用户属性提供自定义SSLContext。自定义SSLContext必须配置有扩展javax.net.ssl.X509ExtendedTrustManager的自定义TrustManager。然后,可以通过各个抽象方法的适当实现来控制所需的验证(或缺少验证)。

https://tomcat.apache.org/tomcat-8.5-doc/web-socket-howto.html

但是,只要我了解X509ExtendedTrustManager用于证书验证,而不是主机名验证。

有人可以帮我吗?

0 个答案:

没有答案