Nachdem wir in Teil 2 bzw. Teil 3 unser Root-Zertifikat auf den Clients installiert haben, kommen wir nun zum eigentlichen Zweck des Ganzen. Wir erzeugen für unseren Webserver ein Zertifikat und binden es ein, so dass die aufrufenden Clients eine verschlüsselte und sichere Verbindung bekommen.
Leider gibt es kein einheitliches Vorgehen zum Installieren der Server, da dies je nach verwendeter Software (Apache, Nginx, Drucker, etc.) immer etwas unterschiedlich ist. Ich werde diesen Beitrag daher nach und nach ergänzen, ganz so wie mir die unterschiedlichen Anwendungen unterkommen.
Der grundlegende Ablauf ist jedoch immer identisch (Key erzeugen -> CSR generieren -> Extension-Datei anpassen -> Zertifikat erzeugen -> Zertifikat installieren), so dass ihr das sicher auch hinbekommt, wenn die von Euch verwendete Software hier nicht auftaucht.
VCSA (VMware vCenter Server Appliance) 6.7
Zunächst einmal in der VCSA einloggen und zu Startseite – Verwaltung – Zertifikatsverwaltung navigieren. Klickt man dann beim __MACHINE_CERT auf Details sollte das dann ungefähr so aussehen:
Das Maschinen-SSL-Zertifikat ist also nicht von unserer eigenen CA ausgestellt und die Verbindung zur VCSA wird daher im Browser als „nicht sicher“ angezeigt.
Das möchte ich natürlich ändern und logge mich daher auf dem Rechner ein, den ich schon zur Erstellung der Root-CA genutzt habe.
Zunächst generiere ich den privaten Schlüssel für die VCSA.
sudo openssl genrsa -out vcsa-server.key 4096 Generating RSA private key, 4096 bit long modulus .....++ ...++ e is 65537 (0x10001)
Mit diesem Key erzeuge ich nun den dazu gehörenden CSR. Wichtig hierbei ist, dass das geforderte challenge password
leer bleibt, also bei dieser Abfrage einfach Enter drücken. Die anderen Fragen natürlich mit den bei Euch passenden Werten füllen, logisch.
sudo openssl req -new -key vcsa-server.key -out vcsa-server.csr -sha512 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:NRW Locality Name (eg, city) []:Titz Organization Name (eg, company) [Internet Widgits Pty Ltd]:Fafa4 - Beoweos und Elwes Organizational Unit Name (eg, section) []:IT Common Name (e.g. server FQDN or YOUR name) []:vcsa-server.fafa4.local Email Address []:edv@fafa4.local Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Diesen CSR könnte ich jetzt bereits nutzen, um daraus ein Zertifikat für unsere VCSA zu erstellen, allerdings möchte ich auch, dass dieses Zertifikat nicht nur für den FQDN des Rechners gilt, sondern auch für die IP-Adresse. Ansonsten würde eine Verbindung zu https://vcsa-server.fafa4.local im Browser als sicher angezeigt, eine Verbindung zu https://10.6.82.32 jedoch als unsicher, was natürlich blöd ist.
Wie ihr beim Erzeugen des CSR sicher bemerkt habt, habe ich dort nirgendwo die Möglichkeit eine IP anzugeben, sondern es wird lediglich der FQDN abgefragt. Geht natürlich trotzdem über die OpenSSL SAN Extension, hierzu lege ich eine Datei namens vcsa-server.conf
mit diesem Inhalt an.
[SAN] subjectAltName = @alt_names [alt_names] DNS.2 = vcsa-server DNS.1 = vcsa-server.fafa4.local IP = 10.6.82.32
Nun kann ich wirklich das Zertifikat erzeugen, welches 3 Jahre gültig sein soll. Hierbei werdet ihr nach dem Passwort des CA-Keys gefragt, ansonsten sind alle benötigen Angaben im CSR enthalten.
sudo openssl x509 -req -days 1095 -in vcsa-server.csr -CA /root/CA/Fafa4-CA.pem -CAkey /root/CA/Fafa4-CA.key -CAcreateserial -out vcsa-server.pem -extfile vcsa-server.conf -extensions SAN Signature ok subject=/C=DE/ST=NRW/L=Titz/O=Fafa4 - Beoweos und Elwes/OU=IT/CN=vcsa-server.fafa4.local/emailAddress=edv@fafa4.local Getting CA Private Key Enter pass phrase for /root/CA/Fafa4-CA.key:
Nun habe ich das von unserer CA ausgestellte Zertifikat unter dem Namen vcsa-server.pem vorliegen, dieses kopiere ich temporär auf meine lokale Festplatte und wechsle wieder zurück zur VCSA-Oberfläche.
Beim __MACHINE_CERT wähle ich unter „Aktionen“ den Punkt „Ersetzen“, worauf sich folgendes Fenster öffnet.

Hier wähle ich unsere eben erzeugten vcsa-server.pem
und vcsa-server.key
aus und klicke auf „Ersetzen“.
Das war dann auch schon alles, nach einem Reboot der VCSA über die Managementoberfläche wird das neue Zertifikat verwendet.
Ciphermail
Wir verwenden Ciphermail um ein- und ausgehende Mails automatisch zu signieren, ggf. zu ver- bzw. entschlüsseln und einiges mehr. Gerade in diesem Bereich ist es natürlich angebracht ein vertrauenswürdiges Zertifikat für die Weboberfläche zu präsentieren.
In Ciphermail navigiere ich zu Admin – SSL/TLS – Web, was dann ungefähr so aussehen sollte.

Ciphermail hätte gerne eine PKCS#12-Datei, die den private Key des Ciphermail-Servers, das Zertifikat unserer internen CA und natürlich das von der CA ausgestellte Zertifkat für Ciphermail enthält.
Los geht es wie üblich indem ich den private-Key des Ciphermail-Servers erstellen.
sudo openssl genrsa -out ciphermail.key 4096 Generating RSA private key, 4096 bit long modulus ..................................++ ......................................................................................................................................................................................++ e is 65537 (0x10001)
Nun erzeuge ich den entsprechenden CSR, das challenge Password bleibt leer, der Rest der Felder wird mit sinnvollen Werten gefüllt.
sudo openssl req -new -key ciphermail.key -out ciphermail.csr -sha512 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:NRW Locality Name (eg, city) []:Titz Organization Name (eg, company) [Internet Widgits Pty Ltd]:Fafa4 - Beoweos und Elwes Organizational Unit Name (eg, section) []:IT Common Name (e.g. server FQDN or YOUR name) []:ciphermail.fafa4.local Email Address []:edv@fafa4.local Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Für die obligatorische SAN Extension lege ich eine Datei namens ciphermail.conf
mit diesem Inhalt an.
[SAN] subjectAltName = @alt_names [alt_names] DNS.2 = ciphermail DNS.1 = ciphermail.fafa4.local IP = 10.217.82.99
Nun habe ich alles um das Zertifikat für Ciphermail zu erzeugen, als Gültigkeit wähle ich 3 Jahre, aber das ist natürlich Geschmackssache.
sudo openssl x509 -req -days 1095 -in ciphermail.csr -CA /root/CA/Fafa4-CA.pem -CAkey /root/CA/Fafa4-CA.key -CAcreateserial -out ciphermail.pem -extfile ciphermail.conf -extensions SAN Signature ok subject=/C=DE/ST=NRW/L=Titz/O=Fafa4 - Beoweos und Elwes/OU=IT/CN=ciphermail.fafa4.local/emailAddress=edv@fafa4.local Getting CA Private Key Enter pass phrase for /root/CA/Fafa4-CA.key:
Da Ciphermail eine PKCS#12-Datei erwartet, wandel ich das per OpenSSL entsprechend um. Das Export-Passwort spielt keine größere Rolle, es wird nur einmalig von Ciphermail bei der Installation des Zertifikats abgefragt.
sudo openssl pkcs12 -export -out ciphermail.p12 -inkey ciphermail.key -in ciphermail.pem -certfile Fafa4-CA.pem Enter Export Password: Verifying - Enter Export Password:
Die so erzeuge ciphermail.p12 lade ich in der Ciphermail Weboberfläche hoch, gebe das Export-Kennwort ein und nach einem Neustart des Webservers von Ciphermail wird das neue Zertifikat verwendet.

Unifi Network Controller Software
Wie üblich erstelle ich zunächst den private Key des Servers.
sudo openssl genrsa -out unifi.key 4096 Generating RSA private key, 4096 bit long modulus .++ ......................................................++ e is 65537 (0x10001)
Den CSR erstellen und mit sinnvollen Werten füllen.
sudo openssl req -new -key unifi.key -out unifi.csr -sha512 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:NRW Locality Name (eg, city) []:Titz Organization Name (eg, company) [Internet Widgits Pty Ltd]:Fafa4 - Beoweos und Elwes Organizational Unit Name (eg, section) []:IT Common Name (e.g. server FQDN or YOUR name) []:ubiquiti.fafa4.local Email Address []:edv@fafa4.local Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Für die SAN Extension lege ich eine Datei namens unifi.conf mit folgendem Inhalt an.
[SAN] subjectAltName = @alt_names [alt_names] DNS.2 = ubiquiti DNS.1 = ubiquiti.fafa4.local IP = 10.6.82.136
Nun kann ich das eigentliche Zertifikat erstellen.
sudo openssl x509 -req -days 1095 -in unifi.csr -CA /root/CA/Fafa4-CA.pem -CAkey /root/CA/Fafa4-CA.key -CAcreateserial -out unifi.pem -extfile unifi.conf -extensions SAN Signature ok subject=/C=DE/ST=NRW/L=Titz/O=Fafa4 - Beoweos und Elwes/OU=IT/CN=ubiquiti.fafa4.local/emailAddress=edv@fafa4.local Getting CA Private Key Enter pass phrase for /root/CA/Fafa4-CA.key:
Die Unifi Software nutzt den Java Keystore, so dass wir alles in ein PKCS#12 packen müssen. Das angeforderte Export-Passwort ist nicht weiter kritisch, es wird lediglich beim Import abgefragt. Ich nehme hier mal „banane“ als Kennwort.
sudo openssl pkcs12 -export -nodes -out unifi.p12 -inkey unifi.key -in unifi.pem -certfile /root/CA/Fafa4-CA.pem -name unifi Enter Export Password: Verifying - Enter Export Password:
Die so erzeugte unifi.p12
kopiere ich per WinSCP in mein Home-Verzeichnis auf den Rechner, auf dem der Unifi Network Controller läuft.
Zunächst schaue ich mir an welche Zertifikate sich in dem vom der Unifi Network Controller verwendeten Keystore befinden. Das hierbei benötigte Kennwort lautet als Default aircontrolenterprise.
sudo keytool -list -keystore /var/lib/unifi/keystore Keystore-Kennwort eingeben: Keystore-Typ: jks Keystore-Provider: SUN Keystore enthält 1 Eintrag unifi, 27.11.2019, PrivateKeyEntry, Zertifikat-Fingerprint (SHA1): 29:BD:36:01:93:99:FE:5D:93:D8:F2:5B:CA:32:D8:1E:9F:64:EF:26
Dort befindet sich wie erwartet nur der unifi-Alias, dieses Zertifikat lösche ich nun.
sudo keytool -delete -alias unifi -keystore /var/lib/unifi/keystore
Nun kann ich unser Zertifikat importieren.
sudo keytool -importkeystore -srckeystore /home/edv/unifi.p12 -srcstorepass banane -destkeystore /var/lib/unifi/keystore -deststorepass aircontrolenterprise -alias unifi -trustcacerts Keystore /home/edv/unifi.p12 wird in /var/lib/unifi/keystore importiert...
Jetzt noch den Dienst neu starten und das war’s dann auch schon.
sudo systemctl restart unifi