Erneuern der SSL-Zertifikate

Dieser Artikel wir in der Univention Supportdatenbank weiter gepflegt: http://sdb.univention.de/

Die Kommunikation zwischen den verschiedenen Rechnern einer UCS-Domäne erfolgt großteils SSL-verschlüsselt. Bei der SSL-Verschlüsselung werden ein Root-Zertifikat und für jeden Rechner ein Rechnerzertifikat benötigt. Das Root-Zertifikat hat nur einen bestimmten Gültigkeitszeitraum, ebenso wie die mit dem Root-Zertifikat erstellten Rechnerzertifikate. Ist dieser Zeitraum abgelaufen, funktionieren Dienste, die ihre Kommunikation mit SSL verschlüsseln (z.B. LDAP) nicht mehr. Es ist deshalb notwendig, die Gültigkeit der Zertifikate zu überprüfen und ggf. neue Rechnerzertifikate zu erstellen.

Die folgende Befehle müssen auf einem UCS-Master durchgeführt werden.

Die Überprüfung, wie lange ein Rechnerzertifikat noch gültig ist, kann mit univention-certificate erfolgen:univention-certificate dump -name ucs-master.univention.de [...] Validity Not Before: Jun 19 10:40:13 2006 GMT Not After : Jun 18 10:40:14 2008 GMT [...]Hierbei ist immer der FQDN des Rechnernamens (Rechnername + Domain) anzugeben. Eine Liste aller verfügbaren Zertifikate erhält man mitunivention-certificate list.

Normalerweise haben die Zertifikate aller Rechner einer UCS-Domäne das gleiche Ablaufdatum. Um neue Zertifikate zu erstellen, ist folgendermaßen vorzugehen:

Sicherung der alten Zertifikate:cp -r /etc/univention/ssl /etc/univention/ssl_$(date +"%d%m%Y")

Erneuerung des root-Zertifikats, als Passwort ist der Inhalt der Datei /etc/univention/ssl/password anzugeben:cd /etc/univention/ssl/udsCA openssl x509 -in CAcert.pem -out NewCAcert.pem -days 1000 \ -signkey private/CAkey.pem mv NewCAcert.pem CAcert.pem

Erneuerung aller Rechnerzertifikate:eval $(univention-baseconfig shell) cd /etc/univention/ssl for i in *.$domainname; do univention-certificate renew -name $i -days 730; done

Kopieren der neuen Zertifikate auf die anderen Rechnersysteme (hier am Beispielrechner ucs-slave):eval $(univention-baseconfig shell) cd /etc/univention/ssl/ scp udsCA/CAcert.pem root@ucs-slave:/etc/univention/ssl/udsCA/ scp -r ucs-slave.$domainname root@ucs-slave:/etc/univention/ssl/ scp -r ucs-slave.$domainname/* root@ucs-slave:/etc/univention/ssl/ucs-slaveDer letzte Schritt ist auf UCS-Backup-Rechner nicht erforderlich, dies erfolgt automatisch per cron.

Auf Rechnern, auf denen der cyrus-Mailserver läuft, sind zusätzlich die Dateien cert.pem und private.key nach /var/lib/cyrus/ zu kopieren:

cp /etc/univention/ssl/$(hostname -f)/cert.pem /var/lib/cyrus
cp /etc/univention/ssl/$(hostname -f)/private.key /var/lib/cyrus/

Alle Dienste, die SSL-Verschlüsselung benutzen, müssen neu gestartet werden.
Alternativ kann ein Neustart des Systems durchgeführt werden, wenn nicht bekannt ist, welche Dienste mit SSL in Verbindung stehen.

Nach dem Erneuern des root-Zertifikats wird dieses für alle Benutzer über die Zentrale Verwaltungs-Webseite des UCS-Masters zugänglich gemacht. Dies kann direkt nach dem Erstellen des neuen Zertifikats mit dem Befehl aufgeführten Befehl erfolgen.

cp CAcert.pem /var/www/ucs-root-ca.crt

Nach dem Aktualisieren der Zertifikate werden die neuen Informationen noch nicht im Univention Directory Manager angezeigt.
Diese würden erst bei der nächsten regulären Prüfung aktualisiert, da der dafür angelegte Crojob nur einmal am Tag ausgeführt wird.

Um die Gültigkeit der Zertifikate sofort prüfen zu können müssen die entsprechenden Univention Configuration Registry Variablen ausgewertet werden. Dies kann durch den Aufruf des folgenden Skriptes erfolgen.

/usr/sbin/univention-certificate-check-validity

Anschließend werden im Univention Directory Manager die aktuellen Zustände der Zertifikate angezeigt.

Mastodon