MongoDB: Die SSL-Peer-Zertifikatsüberprüfung ist fehlgeschlagen: selbst signiertes Zertifikat

2958
sagioto

Ich habe dieses Tutorial befolgt, um ein Root-CA-Zertifikat zu erstellen, und dann zum Signieren eines Schlüssels für den Mongod-Server. Ich führe monogd mit dieser Konfiguration aus, indem ich diesem Dokument folge :

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

Die 2 letzten, die ich hinzugefügt habe, seit ich einen Verbindungsfehler erhalte.

Ich verwende diese Leitungen zum Verbinden:

./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 

Aber alle diese produzieren:

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 

Irgendeine Idee, was mache ich falsch? Ich weiß, dass es sich um ein selbstsigniertes Zertifikat handelt

Ich habe auch versucht, der Antwort hier zu folgen: https://stackoverflow.com/questions/21297139/how-do-you-sign-certificate-signing-request-with-your-certification-authority/21340898#21340898

5

1 Antwort auf die Frage

3
Wan Bachtiar

In Ihrer mongod Konfigurationsdatei geben Sie SSL - Modus zu sein requireSSL. Dies bedeutet, dass der mongodServer nur TLS / SSL-verschlüsselte Verbindungen verwendet und akzeptiert.

Die Client- mongoShell muss in Ihrem Fall --sslPEMKeyFile angeben, um die PEM-Datei des Clients zu übergeben. Siehe auch Mongo Shell-SSL-Konfiguration oder Tutorial: SSL für Clients konfigurieren .

Die 2 letzten, die ich hinzugefügt habe, seit ich einen Verbindungsfehler erhalte.

Seien Sie in Bezug auf die Sicherheit besonders vorsichtig, wenn Sie die Konfigurationen aktivieren. Sehen Sie sich die Beschreibung der beiden Parameter an, für was sie gedacht sind: --allowInvalidCertificates und --allowInvalidHostnames

Sind Sie sicher, dass Kunden Zertifikate haben müssen? Ich habe verstanden, dass dies nur der Fall ist, wenn ich auch den CAFile-Parameter angegeben habe. Aus Sicherheitsgründen versuche ich natürlich nur, die Einschränkungen so weit wie möglich zu lockern, um die Verbindung zum Laufen zu bringen und sie wieder einzuschränken, sobald ich herausgefunden habe, was falsch ist, und es liegt keine Produktion vor oder es befinden sich überhaupt Daten darin. . sagioto vor 7 Jahren 2