So konfigurieren Sie MongoDB korrekt für die Verwendung von Letsencrypt SSL unter Ubuntu

8

Wie konfiguriere ich MongoDB korrekt für die Verwendung von Letsencrypt SSL unter Ubuntu?

Ich habe mit Letsencrypt ein SSL-Zertifikat erstellt und es kombiniert über:

cat /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem > /etc/ssl/mongo.pem

Und Setup Mongo Konfiguration wie:

net:
  port: 27017
  bindIp: 0.0.0.0
  ssl:
    mode: requireSSL
    PEMKeyFile: /etc/ssl/mongo.pem

Beim Versuch, Mongo zu starten, wird folgende Fehlermeldung angezeigt:

No SSL certificate validation can be performed since no CA file has been provided; please specify an sslCAFile parameter

Wie stelle ich die CAFile richtig ein? Verwendet Ubuntu normalerweise keinen "CA-Pfad" mit einer Reihe verschiedener Root-Zertifikate in den eigenen Dateien? Ich habe versucht, das CURL CA-Bundle zu verwenden, aber das hat auch nicht funktioniert.

Ich benutze Mongo v3.0.12 und Ubuntu 14.04

Petah
quelle
3
Ich würde zuerst versuchen, das zu tun, was die Fehlermeldung vorschlägt.
Michael Hampton
@MichaelHampton Aber wo / welche CA-Datei soll ich verwenden? Verwendet Ubuntu normalerweise keinen "CA-Pfad" mit einer Reihe verschiedener Root-Zertifikate in den eigenen Dateien? Ich habe versucht, das CURL CA-Bundle zu verwenden, aber das hat auch nicht funktioniert.
Petah

Antworten:

9

Sie kombinieren die falschen PEM-Dateien. Sie müssen sich kombinieren privkey.pemmit cert.pem.

cat /etc/letsencrypt/live/example.com/privkey.pem /etc/letsencrypt/live/example.com/cert.pem > /etc/ssl/mongo.pem

Für die CAFile müssen Sie IdenTrust DST Root CA X3 von https://www.identrust.com/certificates/trustid/root-download-x3.html herunterladen

sudo touch /etc/ssl/ca.crt
sudo chmod 777 /etc/ssl/ca.crt

Fügen Sie das Zertifikat der Website hinzu, fügen Sie ----- BEGIN CERTIFICATE ----- und ----- END CERTIFICATE ----- hinzu und stellen Sie sicher, dass Sie mit einer neuen Zeile enden, in der die Datei gespeichert wird:

sudo vi /etc/ssl/ca.crt

Konvertieren Sie dann die CRT-Datei in ein PEM mit:

sudo touch /etc/ssl/ca.pem
sudo chmod 777 /etc/ssl/ca.pem
sudo openssl x509 -in /etc/ssl/ca.crt -out /etc/ssl/ca.pem -outform PEM

Und kombinieren Sie mit chain.pemvon Let's Encrypt zu einer einzigen Dateica.pem

sudo cat /etc/letsencrypt/live/example.com/chain.pem >> /etc/ssl/ca.pem

Um die CAFile festzulegen, gehen Sie wie folgt vor:

net:  
  port: 27017
  bindIp: 0.0.0.0
  ssl:  
    mode: requireSSL  
    PEMKeyFile: /etc/ssl/mongo.pem
    CAFile: /etc/ssl/ca.pem

Starten Sie MongoDB neu:

sudo systemctl restart mongod
sudo systemctl status mongod

Vergessen Sie nicht den Moment, in dem Sie die Let's Encrypt-Zertifikate erneuern . Sie müssen auch mongo.pemund erneuern ca.pem.

Herman Fransen
quelle
1
Super Antwort! Ich kann dir nicht genug danken. Warum haben Sie eine CAFile von Identrust anstelle von Let's Encrypt ( letsencrypt.org/certificates ) verwendet?
Rodrigo Pinto
@ RodrigoPedroso - Gute Frage, weiß nicht.
Herman Fransen
Da die Verschlüsselung zu diesem Zeitpunkt noch recht neu ist, verwenden sie Identrust, um ihre Zertifikate zu signieren. Sie können es direkt von letsencrypt.org/certs/trustid-x3-root.pem.txt herunterladen . Jetzt ist Let's Encrypt weithin vertrauenswürdig
devansvd