我有一个运行本地websocket服务器的java web start应用程序。此应用程序接收一些数据,签署这些数据并通过websocket连接将签名数据返回给浏览器。 我使用Tyrus容器作为我的本地websocket服务器。最近我发现自己陷入困境:浏览器尝试在ssl上下文中建立与ws的连接,但我的ws服务器不支持安全的websocket连接。
我收到以下错误:
混合内容:加载了“https://example.com”页面 HTTPS,但尝试连接到不安全的WebSocket端点 'WS://本地主机:8025 /符号/'。此请求已被阻止;这个 端点必须通过WSS提供。
Uncaught SecurityError:无法构造'WebSocket':不安全 WebSocket连接可能无法从加载的页面启动 HTTPS。
换句话说,Tyrus没有给我这样的东西:
new org.glassfish.tyrus.server.Server.Server("wss", "localhost", 8025, "/sign", null, MyClass.class);
有没有办法可以运行带有SSL的Tyrus服务器,或者有人知道另一个自包含的websocket服务器吗?
提前致谢
答案 0 :(得分:1)
我发现Netty IO(https://github.com/netty/netty)能够以独立的方式提供安全套接字。但是我放弃了,因为我需要在我的java web start应用程序中提供有效的数字证书(jks)。这是一个巨大的安全问题,因为任何人都可以反编译jar并使用该证书构建网站或使用我的凭据签署文档。
所以我把逻辑移到了JBoss实例化的Web套接字服务器上。