【发布时间】:2019-08-14 03:48:26
【问题描述】:
我需要连接到支持 SNI 的 spring websocket 服务器。我使用的是 Spring WebSocket Client,它默认不发送 SNI 扩展,因为 jdk 1.8.0 默认不发送 SNI 扩展。
Extended server_name (SNI Extension) not sent with jdk1.8.0 but send with jdk1.7.0
java的官方文档建议使用SSLParameters添加SNI Matcher并将SSLParameters设置为SSLSocket,然后再使用该SSLSocket进行任何HttpsUrlConnection。
https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#SNIExtension
有什么方法可以用 Spring WebSocket Client 设置这个属性吗?
有一些 ClientEndpointCongfig 属性可以根据给定的链接设置,但我没有找到任何可用于使用 Spring websocket 客户端设置 SSLSocket 或 SSLSocketfactory 的属性。
https://tomcat.apache.org/tomcat-8.5-doc/web-socket-howto.html
这是 Spring websocket 客户端的示例代码:
List<Transport> transports = new ArrayList<>(1);
StandardWebSocketClient standardWebSocketClient = new StandardWebSocketClient();
transports.add(new WebSocketTransport( standardWebSocketClient) );
WebSocketClient transport = new SockJsClient(transports);
WebSocketStompClient stompClient = new WebSocketStompClient(transport);
StompSessionHandler sessionHandler = new MyStompSessionHandler();
stompClient.connect(URL, sessionHandler);
【问题讨论】:
-
您好,您找到解决此问题的方法了吗?我也面临同样的问题。
标签: java tomcat spring-websocket stomp sni