Я новичок во всех этих серверах, и у меня есть вопрос относительно безопасности прокси-сервера apache.
Я делаю следующее: у меня есть сервер websocket, работающий в небезопасном режиме на порту 11221 в той же системе (только localhost, но с apache, это другое
В моем apache я создал конфигурацию с прокси для этого сервера:
ServerName websocket.example.com
SSLCertificateFile /path/to/fullchain.pem
SSLCertificateKeyFile /path/to/privkey.pem
ProxyPass / ws://localhost:11221/
ProxyPassReverse / ws://localhost:11221/
Эта комбинация работает безупречно, я могу подключиться с помощью безопасного подключения к серверу через веб-сокет (используя ] wss: //websocket.example.com
). И я проверил, что не могу подключиться напрямую к нему. ws: //websocket.example.com: 11221
завершится ошибкой с отказом в соединении (как и ожидалось).
Мой вопрос теперь: это безопасно ?. Т.е. остается ли соединение зашифрованным даже после перехода на протокол websocket? Насколько я понял из своих исследований, он остается зашифрованным, но я не мог найти однозначного ответа.
Очевидно, что уровень SSL применяется только к соединению от клиента к apache; вот почему вы все-таки настроили apache, не так ли? (Также называется «разгрузкой SSL». Я обычно использую для этого pound или haproxy, что намного проще / меньше, чем apache, если это все, для чего вы используете apache.)
Связь между apache и всем, что слушает порт 11221, осуществляется обязательно в незашифрованном виде; в противном случае вам также потребуется установить сертификат SLL в приложение websocket (а также использовать https: //, а не ws: //).
Тем не менее, если вы не можете один процесс передавать данные другому процессу в той же системе (в конце концов, вы используете localhost
для связи), тогда у вас будут большие проблемы. Теоретически кто-то с соответствующими привилегиями в локальной системе может подслушивать общение, но этот человек может также просто использовать strace
для процесса получения данных.