【问题标题】:How to secure a Websocket. Apache Vhost or ServerEndpointConfig如何保护 Websocket。 Apache Vhost 或 ServerEndpointConfig
【发布时间】:2020-11-19 08:22:35
【问题描述】:

我有一个通过 Apache2-Vhost 托管的 Tomcat9 网络服务器。

如何保护在 tomcat 上运行的 websocket?

  1. 是否通过来自letsencrypt/certbot 的Apache Vhost 证书?
  2. 是否在Tomcat的Websocket类的javax.websocket.server.ServerEndpointConfig.Configurator中?
@Override
public void modifyHandshake(ServerEndpointConfig config, HandshakeRequest request, HandshakeResponse response) {

  SSLContext csslContext = SSLContext.getInstance("TLS");

  config.getUserProperties().put(Constants.SSL_CONTEXT_PROPERTY, csslContext);
  config.getUserProperties().put(Constants.SSL_PROTOCOLS_PROPERTY, csslContext);
}

【问题讨论】:

  • 没有“Apache2 Tomcat”网络服务器,你有哪一个? Apache httpd 还是 Tomcat?由于您还标记了 Java,我假设它是 tomcat 并相应地进行编辑。正确(有解释),如果是别的。此外,不涉及任何代码,我认为这个问题不在 stackoverflow 上(参见 help center
  • 当你说“安全”时,你到底是什么意思?
  • @ChristopherSchultz 我的意思是,确保数据传输安全。就像 https 在 http 上所做的一样。
  • 所以你想保护反向代理(Apache httpd?)和Tomcat之间的通信通道?它们目前是如何连接的? (例如,什么协议/httpd 模块在起作用)?
  • @ChristopherSchultz 我想保护从客户端(网络浏览器/网站)到 tomcat9 网络服务器的通道。 tomcat 9 网络服务器是 8080 上的本地主机,在许多应用程序中都是默认的,我的 apache 服务器通过 tomcat 连接器连接。重要的是,与 apache 的 websocket 连接是安全的。

标签: java apache tomcat websocket


【解决方案1】:

Websocket 连接始终通过 HTTP(S) 请求启动,升级到 Websocket。因此,保护​​客户端和 Web 服务器(或反向代理)之间的连接与保护“常规”HTTP 连接完全相同。

您永远不需要为此编写任何代码,因此您在修改握手的问题中的示例 #1 不是您需要考虑的任何事情。

您应该查看类似于 #1 的内容,您可以从证书颁发机构 (CA) 获得证书并将其安装到反向代理 (httpd) 中。

【讨论】:

    猜你喜欢
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2020-06-29
    相关资源
    最近更新 更多