Ошибки соединения с MongoDB Shell при использовании тестовых самозаверяющих сертификатов - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь протестировать установку mongoDB с самозаверяющими сертификатами. Я следовал инструкциям в документации mongoDB для создания файлов 'pem' с использованием ссылок на каждую страницу:

Приложение A - Сертификат OpenSSL CA для тестирования
Приложение B - Сертификаты сервера OpenSSL для тестирования
Приложение C - Сертификаты клиента OpenSSL для тестирования

Я обновил /etc/mongod.conf следующим образом:

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongodb/test-server1.pem
    allowConnectionsWithoutCertificates: true
    allowInvalidHostnames: true
    allowInvalidCertificates: true
    CAFile: /etc/ssl/mongodb/mongodb-test-ca.crt

Изначально у меня не было опции 'allow', но они не имеют никакого значения, поэтому я оставляю in на данный момент.

Запуск оболочки mongodb приводит к этой ошибке :

root@ip-10-0-3-61:~/mongo-cert# mongo --tls --tlsCertificateKeyFile test-client.pem
MongoDB shell version v4.2.5
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
2020-04-17T17:07:25.809+0000 E  NETWORK  [js] SSL peer certificate validation failed: self signed certificate in certificate chain
2020-04-17T17:07:25.810+0000 E  QUERY    [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SSLHandshakeFailed: SSL peer certificate validation failed: self signed certificate in certificate chain :
connect@src/mongo/shell/mongo.js:341:17
@(connect):2:6
2020-04-17T17:07:25.812+0000 F  -        [main] exception: connect failed
2020-04-17T17:07:25.812+0000 E  -        [main] exiting with code 1
root@ip-10-0-3-61:~/mongo-cert#

Если я добавлю '--tlsAllowInvalidCertificates' в команду, она будет работать:

root@ip-10-0-3-61:~/mongo-cert# mongo --tls --tlsCertificateKeyFile test-client.pem  --tlsAllowInvalidCertificates
MongoDB shell version v4.2.5
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
2020-04-17T17:09:18.934+0000 W  NETWORK  [js] SSL peer certificate validation failed: self signed certificate in certificate chain
Implicit session: session { "id" : UUID("3b0d0920-931d-4143-a8a2-afde432c1444") }
MongoDB server version: 4.2.5
>


I have read other people who have followed the mongodb instructions successfully. 

I just do not understand what I have done wrong.

1 Ответ

0 голосов
/ 18 апреля 2020

Вам необходимо также предоставить файл CA для mongo (опция --tlsCAFile), в дополнение к клиентскому сертификату.

Когда включена полная проверка с TLS, и сервер, и клиент проверяют другой сертификат. Это означает, что оба должны иметь доступ к сертификату CA, используемому для подписи листовых сертификатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...