Websocket 限制PCF中不安全的web套接字协议连接

Websocket 限制PCF中不安全的web套接字协议连接,websocket,playframework,ssl-certificate,cloud-foundry,pivotal-web-services,Websocket,Playframework,Ssl Certificate,Cloud Foundry,Pivotal Web Services,我们正在Prepod azure PCF环境中托管一个应用程序,该环境公开websocket端点供客户端设备连接。当托管在PCF上并在PCF HAProxy之后运行时,是否有规定的方法来使用TLS/SSL保护所述websocket端点 我在解释这些信息时遇到困难,例如,我们是否应该在服务器上公开端口4443,并且PCF默认情况下将其作为一个安全端口,以确保无法建立不安全的连接?还是需要在HAProxy上进行一些配置 当托管在PCF上并在PCF HAProxy之后运行时,是否有规定的方法来使用TL

我们正在Prepod azure PCF环境中托管一个应用程序,该环境公开websocket端点供客户端设备连接。当托管在PCF上并在PCF HAProxy之后运行时,是否有规定的方法来使用TLS/SSL保护所述websocket端点

我在解释这些信息时遇到困难,例如,我们是否应该在服务器上公开端口4443,并且PCF默认情况下将其作为一个安全端口,以确保无法建立不安全的连接?还是需要在HAProxy上进行一些配置

当托管在PCF上并在PCF HAProxy之后运行时,是否有规定的方法来使用TLS/SSL保护所述websocket端点

有几件事:

  • 在将应用程序部署到PCF时,您不需要配置证书或类似的东西。平台负责所有这些。在您的情况下,它可能由HAProxy处理,但也可能是其他负载平衡器,甚至Gorouter,具体取决于您的平台操作团队安装的PCF。最终的结果是,TLS在进入你的应用程序之前首先被终止,所以你不必担心它

  • 您的应用程序应始终强制用户使用HTTPS。如何做到这一点取决于所使用的语言/框架,但大多数都有一些功能

    此过程通常通过检查传入请求是否通过HTTP或HTTPS进行工作。如果是HTTP,则可以通过HTTPS重定向到同一URL。这对所有应用程序都很重要,而不仅仅是使用WebSocket的应用程序。加密所有的东西

    记住,你是在一个或多个反向代理后面,所以如果你手动地这样做,你需要考虑什么是在<代码> X-PRODDE-DPROTO 或<代码> X转发端口>代码,而不仅仅是上游连接,它是Gorouter,而不是客户端的浏览器。

  • 如果您强制用户使用HTTPS(#1),那么您的用户将无法启动到您的应用程序的不安全WebSocket连接。Chrome和Firefox等浏览器都有限制,以防止在通过HTTPS加载站点时建立不安全的WebSocket连接

    您将收到一条消息,如Firefox中的操作不安全或无法连接:安全错误:无法构造“WebSocket”:不安全的WebSocket连接可能无法从通过HTTPS加载的页面启动。在Chrome中

  • 我在解释这些信息时遇到困难,例如,我们是否应该在服务器上公开端口4443,并且PCF默认情况下将其作为一个安全端口,以确保无法建立不安全的连接?还是需要在HAProxy上进行一些配置

    从应用程序的角度来看,您没有做任何不同的事情。您的应用程序应该在指定的端口上启动并侦听,即
    $port
    中的内容。这与HTTP、HTTP、WS&WSS流量相同。简而言之,作为一名应用程序开发人员,在部署到PCF时不需要考虑这一点

    唯一的例外是,如果您的平台操作团队使用的负载平衡器本机不支持WebSocket。在这种情况下,为了解决这个问题,他们需要分离流量。HTTP和HTTPS在传统的端口80和443上运行,它们将在不同的端口上路由WebSocket。PCF文档推荐4443,您可能会在这里看到该端口。我不能告诉你你的平台是否是这样设置的,但如果你知道你正在使用HAproxy,它可能不是

    无论如何,如果您不知道,只需推送一个应用程序并尝试通过端口443启动一个安全的WebSocket连接,看看它是否工作。如果失败,试试4443,看看是否有效。或者询问您的平台运营团队

    无论如何,即使您需要使用端口4443,在PCF上运行的应用程序也没有什么不同。唯一的区别在于启动WebSocket连接的Javascript代码。它需要知道如何使用端口4443而不是默认的443

    希望有帮助