Я новичок во всем этом серверном материале, и у меня есть вопрос относительно безопасности прокси-сервера 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
завершится ошибкой при отказе в соединении (как и ожидалось).
Мой вопрос теперь: это безопасно? Т.е. остается ли соединение зашифрованным даже после переключения на протокол веб-сокета? Насколько я понял из своего исследования, он остается зашифрованным, но я не смог найти однозначного ответа.
Очевидно, что уровень SSL применяется только к соединению от клиента к apache; вот почему вы все-таки настроили apache, не так ли? (Также называется «разгрузкой SSL». Я обычно использую для этого pound или haproxy, что намного проще / меньше, чем apache, если это все, для чего вы используете apache.)
Связь между apache и всем, что слушает порт 11221, обязательно не зашифрована; в противном случае вам также потребуется установить сертификат SLL в приложение websocket (а также использовать https: //, а не ws: //).
Тем не менее, если вы не можете один процесс передавать данные другому процессу в той же системе (в конце концов, вы используете localhost
общаться), то у вас большие проблемы. Теоретически кто-то с соответствующими привилегиями в локальной системе может подслушивать общение, но этот человек также может просто использовать strace
о процессе получения данных.