我很新的服务器的东西,我有一个关于Apache代理的安全问题。
我正在做的是:我有一个websocket服务器运行在同一系统上的端口11221上的非安全模式(仅本地,但与Apache,这是一个不同的应用程序)。
在我的apache中,我使用该服务器的代理创build了一个configuration:
ServerName websocket.example.com SSLCertificateFile /path/to/fullchain.pem SSLCertificateKeyFile /path/to/privkey.pem ProxyPass / ws://localhost:11221/ ProxyPassReverse / ws://localhost:11221/
这个组合完美地工作,我可以连接使用一个安全的 websocket连接到服务器(使用wss://websocket.example.com )。 我检查了我无法直接连接到它。 ws://websocket.example.com:11221将失败,连接被拒绝(按预期)。
我现在的问题是:这是安全的吗? 即使在链接到websocket协议后,即使连接保持encryption? 据我的研究所了解,它确实保持encryption,但我找不到明确的答案。
SSL层仅适用于客户端到apache的连接, 这就是为什么你已经configuration了Apache,不是吗? (也称为“SSL卸载”。我通常使用磅或haproxy,比apache简单/小,如果这是所有你使用的Apache。)
Apache和任何正在监听端口11221之间的通信必须是未encryption的; 否则您需要将SLL证书安装到websocket应用程序中(也可以使用https://而不是ws://)。
也就是说,如果你不能在同一个系统上把数据传输到另一个进程(毕竟你使用localhost进行通信),那么你就有更大的问题。 理论上讲,在本地系统上具有适当权限的人可以窃听通信,但是那个人也可以简单地在涉及的进程中使用strace来获得数据。