TLS Verschlüsselung Datenbank
Damit die Kommunikation vom APP Server zur Datenbank verschlüsselt ist, müssen folgende Schritte getan werden:
Deaktivierung des App-Servers Fahren Sie den App-Server herunter, bevor Sie mit der TLS-Einrichtung fortfahren.
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>
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
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
Service neu starten Nutzen Sie den folgenden Befehl, um Ihre MongoDB neuzustarten.
sudo service mongod restart
Ü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
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.Docker-Compose.yml anpassen Stellen Sie sicher, dass bei jedem Container das folgende Volume eingetragen und aktiviert ist:
volumes:
- "./conf/ssl/:/etc/enginsight/ssl/"
Erneutes ausführen der
setup.sh
Führen Sie nach den Änderungen an derdocker-compose.yml
abschließend diesetup.sh
nocheinmal auf dem App-Server durch.
Zuletzt aktualisiert
War das hilfreich?