MongoDB: Ошибка получения сертификата однорангового SSL-сертификата: самозаверяющий сертификат

2877
sagioto

Я следовал этому руководству, чтобы создать корневой сертификат CA, а затем использовал его для подписи ключа для сервера mongod. Я запускаю monogd с этой конфигурацией, следуя этой документации :

 net: ssl: mode: requireSSL PEMKeyFile: /home/user/device.pem CAFile: /home/user/rootCA.pem allowInvalidCertificates: true allowInvalidHostnames: true 

Последние 2, которые я добавил, так как я получаю ошибку соединения.

Я использую эти линии для подключения:

./mongo <host>:<port>/<db> -u <user> -p <pwd> --ssl --sslAllowInvalidCertificates --sslCAFile ~/Downloads/rootCA.pem  ./mongo <host>:<port>/<db> -u <user> -p <pwd> --ssl --sslAllowInvalidCertificates  ./mongo <host>:<port>/<db> -u <user> -p <pwd> --ssl 

Но все они производят:

MongoDB shell version v3.4.2 connecting to: mongodb://<host>:<port>/<db> 2017-03-30T14:39:15.307+0300 E NETWORK [thread1] SSL peer certificate validation failed: self signed certificate 2017-03-30T14:39:15.311+0300 E QUERY [thread1] Error: socket exception [CONNECT_ERROR] for SSL peer certificate validation failed: self signed certificate : connect@src/mongo/shell/mongo.js:237:13 @(connect):1:6 exception: connect failed 

Есть идеи, что я делаю не так? Я знаю, что это самозаверяющий сертификат. Буду признателен за вашу помощь.

Также попробовал следующий ответ здесь: https://stackoverflow.com/questions/21297139/how-do-you-sign-certificate-signing-request-with-your-certification-authority/21340898#21340898

5

1 ответ на вопрос

3
Wan Bachtiar

В вашем mongod конфигурационного файла, необходимо указать режим SSL, чтобы быть requireSSL. Это означает, что mongodсервер использует и принимает только зашифрованные соединения TLS / SSL.

Клиентская mongoоболочка в вашем случае должна указывать --sslPEMKeyFile для передачи клиентского PEM-файла. Смотрите также Конфигурация SSL оболочки mongo или Учебное пособие: настройка SSL для клиентов .

Последние 2, которые я добавил, так как я получаю ошибку соединения.

Что касается безопасности, будьте особенно внимательны при настройке конфигурации. Пожалуйста, смотрите описание двух параметров, для чего они предназначены: --allowInvalidCertificates и --allowInvalidHostnames

Вы уверены, что клиенты должны иметь сертификаты? Я понял, что это так, только если я также укажу параметр CAFile. Что касается безопасности, конечно, я только пытаюсь ослабить ограничения, насколько это возможно, чтобы соединение работало, а затем снова ограничить его, как только я выясню, что не так, и оно не является производственным или вообще содержит какие-либо данные .. , sagioto 7 лет назад 2