TLS Verschlüsselung Datenbank

Damit die Kommunikation vom APP Server zur Datenbank verschlüsselt ist, müssen folgende Schritte getan werden:

  1. Deaktivierung des App-Servers Fahren Sie den App-Server herunter, bevor Sie mit der TLS-Einrichtung fortfahren.

  2. Erstellen Sie csr.cnf unter /etc/enginsight/ssl

[req]
default_bits = 4096
default_md = sha256
distinguished_name = req_dn
req_extensions = v3_req
 
[v3_req]
subjectKeyIdentifier = hash
basicConstraints = CA:FALSE
keyUsage = critical, digitalSignature, keyEncipherment
extendedKeyUsage = serverAuth, clientAuth
subjectAltName = @alt_names
 
[alt_names]
DNS.1 = <SERVER_NAME>
IP.1 = <SERVER-IP>
 
[req_dn]
countryName = DE
organizationName = Enginsight
commonName = <DOMAIN_NAME>
  1. Zertifikat generieren Führen Sie folgende Kommandos aus, um ein Zertifikat zu generieren.

if [ ! -f ./passwd ]
then
echo $(openssl rand -base64 16) > ./passwd
fi

passwd=$(cat ./passwd)

openssl genrsa -des3 -out mongodbCA.key -passout pass:$(echo ${passwd}) 4096

openssl req -x509 -new -nodes -key mongodbCA.key -sha256 -days 3650 -subj "/C=DE/ST=CA/O=Enginsight/CN=enginsight.com" -passin pass:$(echo ${passwd}) -out mongodbCA.crt

openssl genrsa -out mongodb.key -passout pass:$(echo ${passwd}) 2048

openssl req -new -sha256 -key mongodb.key -out mongodb.csr -config csr.cnf -subj "/C=DE/O=Enginsight/CN=enginsight.com"

openssl x509 -sha256 -req -days 3650 -passin pass:$(echo ${passwd}) -in mongodb.csr -CA mongodbCA.crt -CAkey mongodbCA.key -CAcreateserial -out mongodb.crt -extfile csr.cnf -extensions v3_req

cat mongodb.key mongodb.crt > mongodb.pem
  1. Anpassen der MongoDB Passen Sie Ihre Mongo Konfiguration wie im Folgenden dargestellt an.

sudo nano etc/mongod.conf

net:
  port: 27017
  bindIp: 0.0.0.0
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/enginsight/ssl/mongodb.pem
    CAFile: /etc/enginsight/ssl/mongodbCA.crt
  1. Service neu starten Nutzen Sie den folgenden Befehl, um Ihre MongoDB neuzustarten.

sudo service mongod restart
  1. Überprüfung der Verfügbarkeit Überprüfen Sie die Verfügbarkeit der Datenbank sowie das Vorhandensein der TLS-Verschlüsselung. Öffnen Sie hierfür die Mongo Shell mit dem folgenden Befehl und ersetzen Sie <DB-HOST:PORT> mit der IP-Adresse und den Port der Datenbank, von welcher aus der App Server auf diese zugreifen kann.

mongosh --tls --host <DB-HOST:PORT>  --tlsCAFile /etc/enginsight/ssl/mongodbCA.crt --tlsCertificateKeyFile /etc/enginsight/ssl/mongodb.pem
  1. Zertifikate übertragen Kopieren Sie die Zertifikate, welche unter /etc/enginsight/ssl angelegt wurden auf den App Server unter /etc/enginsight/ssl , damit diese von Docker genutzt werden können. Sollte der Ordner noch nicht auf dem App Server vorhanden sein, so legen Sie diesen bitte an und fügen Sie das Zertifikat anschließend dort ein.

  2. Docker-Compose.yml anpassen Stellen Sie sicher, dass bei jedem Container das folgende Volume eingetragen und aktiviert ist:

volumes:
    - "./conf/ssl/:/etc/enginsight/ssl/"
  1. Erneutes ausführen der setup.sh Führen Sie nach den Änderungen an der docker-compose.yml abschließend die setup.sh nocheinmal auf dem App-Server durch.

Zuletzt aktualisiert

War das hilfreich?