TLS Verschlüsselung Datenbank

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

  1. 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 = 
IP.1 = 
 
[req_dn]
countryName = DE
organizationName = Enginsight
commonName =
  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.

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 mongodb restart
  1. Mongo Shell öffnen Öffnen SIe anschließend die Mongo Shell.

mongosh --tls --host  --tlsCAFile /etc/enginsight/ssl/mongodbCA.crt --tlsCertificateKeyFile /etc/enginsight/ssl/mongodb.pem
  1. Zertifikate übertragen Kopieren Sie die Zertifikate, welche unter /ect/enginsight/ssl angelegt wurden, auf den App Server unter /ect/enginsight/ssl , damit diese von Docker genutzt werden können.

  2. Docker-Compose.yml anpassen Mounten Sie bei jedem Container zudem ein neues Volume.

volumes:
    - "./conf/ssl/:/etc/enginsight/ssl/"

Last updated

Was this helpful?