5

Я следовал этому руководству, чтобы создать корневой сертификат 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

1 ответ1

3

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .