首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以编程方式为Tyrus WebSocket @ServerEndpoint启用WSS

如何以编程方式为Tyrus WebSocket @ServerEndpoint启用WSS
EN

Stack Overflow用户
提问于 2018-12-19 18:46:42
回答 2查看 736关注 0票数 2

我有一个微服务,它有一个REST端点和一个WebSocket端点。

它对Grizzly和Tyrus进行了Spring连接,并通过使用JAX-RS过滤器和ServerEndpointConfig.Configurator的单点登录添加了身份验证。我已经使用SSLContextConfigurator和SSLEngineConfigurator向REST端点添加了SSL和一个(当前)自签名证书。

我没有看到在Tyrus1.14中对org.glassfish.tyrus.server.Server做同样的事情的方法。

事实上,代码硬连接了协议名称,这让我想知道这是否可能:

LOGGER.info("WebSocket Registered apps: URLs all start with ws://" + this.hostName + ":" + this.getPort());

还有一个类似的问题,here,但它需要将一个WAR文件部署到一个完整的Glassfish实例上。我想通过编程的方式来做这件事。

EN

回答 2

Stack Overflow用户

发布于 2018-12-20 18:42:05

使用https://stackoverflow.com/a/27239122/17641的建议解决

listener = new NetworkListener("grizzly", "0.0.0.0", port); listener.setSecure(true); listener.setSSLEngineConfig(new SSLEngineConfigurator(getSslContextConfigurator()).setClientMode(false).setNeedClientAuth(false));

其中getSslContextConfigurator使用密钥库byte[]和密码构造一个org.glassfish.grizzly.ssl.SSLContextConfigurator

票数 1
EN

Stack Overflow用户

发布于 2020-11-18 17:16:17

我设法使用上面的变体实现了这一点。但是,我强烈建议不要使用它,因为它的性能很糟糕。这与Tyrus或Grizzly无关,但与Java无关。Java中的SSL库是出了名的慢,而且因为Grizzly使用Java,任何WSS都会受到影响。

显然,Jetty和Tomcat提供了一种使用OpenSSL而不是标准Java SSL的方法。或者,使用SSL终结器(例如Apache web服务器或HAProxy)来处理SSL并将标准WS连接传递到服务器

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53849572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档