РЕДАКТИРОВАТЬ: не было ничего плохого. Я был идиотом. Приведенные ниже настройки верны.
Я установил экземпляр mongodb (3.4) в Windows, настроенный следующим образом:
net:
port: 27017
ssl:
mode: preferSSL
PEMKeyFile: C:\...\mongodb.pem
CAFile: C:\...\mongodb.ca
allowConnectionsWithoutCertificates: true
Сертификат - это подписанный ЦС сертификат, выпущенный для определенного домена и поддомена с подстановочными знаками.
Затем я могу подключиться к базе данных со своего локального компьютера с помощью простой программы на C #, которая имеет следующую строку подключения:
mongodb://user:password@hostname?ssl=true
и он отлично работает. Клиент не использует сертификат.
Я повозился с параметрами, и действительно кажется, что он действительно подключается с использованием SSL:
mode:requireSSL
и установить ssl=false
в строке подключения я не могу подключиться, что ожидаетсяThe remote certificate is invalid according to the validation procedure.
, что также ожидаетсяno SSL certificate provided by peer
- что ожидается; клиент не использует сертификат, поэтому я настроил allowConnectionsWithoutCertificates: true
тем не мение, когда я смотрю на трафик с помощью Wireshark, я могу проверить все пакеты и прочитать данные, отправляемые на сервер и с сервера, в виде открытого текста. На панели сведений о пакете нет уровня SSL / TLS, только Ethernet, IP, TCP, а затем протокол Mongo Wire.
У меня вопрос: это ожидается? Разве трафик не должен быть зашифрован и, следовательно, не читается в Wireshark?