Umbenennen einer Checkmk-Site mit TLS-Absicherung

Das Umbenennen einer checkmk-Site erfordert neue TLS-Zertifikate, da sie an die Site-ID gebunden sind. Diese Anleitung zeigt, wie man die Zertifikate manuell erneuert, um nach der Umbenennung wieder eine sichere Kommunikation zwischen Agent und Receiver zu ermöglichen.

Vor Kurzem standen wir vor einer großen Herausforderung: Wir mussten eine checkmk-Site umbenennen. Dieser Prozess wirkt auf den ersten Blick simpel, war aber aufgrund des neuen TLS-verschlüsselten Anfrage-Systems, das checkmk zur sicheren Kommunikation zwischen Agent und Agent Receiver nutzt, recht komplex.

Die Herausforderung

In der neuesten Version hat checkmk einen Agent-Controller eingeführt, der über TLS-verschlüsselte Anfragen mit dem checkmk-Server kommuniziert. Diese Funktion erhöht die Sicherheit, da Überwachungsdaten nun verschlüsselt übertragen werden. Gleichzeitig bringt sie jedoch eine neue Komplexität mit sich, wenn eine Site umbenannt werden muss.

Beim Umbenennen einer checkmk-Site ändert sich zwangsläufig die Site-ID. Da die TLS-Zertifikate des Agent-Receivers an diese Site-ID gebunden sind, müssen die Zertifikate an den neuen Namen angepasst werden. Leider geschieht das nicht automatisch durch den Befehl omd cp. Ohne die Aktualisierung der Zertifikate kann sich der Agent-Controller nicht am checkmk Agent Receiver registrieren.

Unsere Lösung: Schritt-für-Schritt-Anleitung

Hier ist eine ausführliche Anleitung, wie wir dieses Problem gelöst und die TLS-Zertifikate erfolgreich an den neuen Site-Namen angepasst haben.

Schritt 1: CA-Zertifikatskonfiguration lokalisieren

Zunächst muss ermittelt werden, wo die CA-Zertifikatskonfigurationen gespeichert sind. Bei checkmk befinden sie sich im Verzeichnis SITE_ID/etc/ssl.

Schritt 2: Neues lokales CA-Zertifikat für die Site erstellen

Unter Verwendung des bestehenden privaten Schlüssels (ca.pem) wurde ein neues lokales CA-Zertifikat erstellt. Dieses Zertifikat dient als Vertrauensanker für alle weiteren Zertifikate. Die Ausgabe wird in die Datei ca.pem geschrieben und ersetzt das alte Zertifikat.

openssl req -new -key ca.pem -days 3650 -nodes -x509 -subj "/CN=Site '<<site ID>>' local CA" -extensions ca -config <(echo '[req]'; echo 'distinguished_name=req'; echo '[ca]'; echo 'subjectKeyIdentifier=hash'; echo 'basicConstraints=critical,CA:true,pathlen:0'; echo 'keyUsage=critical,keyCertSign,cRLSign')

Schritt 3: Neues Agent-Signing-CA-Zertifikat erstellen

Danach wurde ein neues CA-Zertifikat für die Signierung der Agenten erstellt, mit dem privaten Schlüssel unter agents/ca.pem. Dieses Zertifikat gewährleistet, dass die Kommunikation der Agenten sicher signiert und verifiziert wird. Die Ausgabe ersetzt das alte Zertifikat in agents/ca.pem.

openssl req -new -key agents/ca.pem -days 3650 -nodes -x509 -subj "/CN=Site '<<site ID>>' agent signing CA" -extensions ca -config <(echo '[req]'; echo 'distinguished_name=req'; echo '[ca]'; echo 'subjectKeyIdentifier=hash'; echo 'basicConstraints=critical,CA:true,pathlen:0'; echo 'keyUsage=critical,keyCertSign,cRLSign')

Schritt 5: Neues Zertifikat für die Site erstellen

Für den Agent Receiver Dienst wurde ein neues Zertifikat mit dem bestehenden Schlüssel (agent_receiver_cert.pem) erstellt. Dieses Zertifikat ist zentral, da der Dienst eingehende Überwachungsdaten sicher verarbeitet. Die Ausgabe wird in agent_receiver_cert.pem geschrieben und ersetzt das alte Zertifikat.

openssl req -new -key agent_receiver_cert.pem -nodes -subj "/CN=<<site ID>>" | openssl x509 -req -CA ca.pem -CAkey ca.pem -days 365 -CAcreateserial -sha256 -extfile <(echo 'subjectAltName=DNS:<<site ID>>'; echo 'basicConstraints=critical,CA:false')

Step 5: Create a New Certificate for the Site

Abschließend wurde ein neues Zertifikat für die Site selbst generiert, unter Verwendung des Schlüssels aus sites/<<site ID>>.pem. Dieses Zertifikat ist essenziell für die Identität der Site in der TLS-Kommunikation. Die Ausgabe wird in sites/<<site ID>>.pem gespeichert und ersetzt das alte Zertifikat.

openssl req -new -key sites/hauptsystem.pem -nodes -subj "/CN=<<site ID>>" | openssl x509 -req -CA ca.pem -CAkey ca.pem -days 365 -CAcreateserial -sha256 -extfile <(echo 'subjectAltName=DNS:<<site ID>>'; echo 'basicConstraints=critical,CA:false')

Schritt 6: Neustart von checkmk

Zum Schluss wurde checkmk neu gestartet, um die Änderungen zu übernehmen. Dadurch wurde sichergestellt, dass alle Dienste die neuen Zertifikate erkennen und die sichere Kommunikation wieder funktioniert.

Fazit

Das Umbenennen einer checkmk-Site und die damit verbundene Aktualisierung der TLS-Zertifikate ist aufgrund der vielen Schritte durchaus anspruchsvoll. Mit einem klaren Verständnis des Ablaufs und den richtigen Befehlen lässt sich diese Herausforderung jedoch meistern.

Wir hoffen, dass diese ausführliche Anleitung anderen IT-Profis hilft, ähnliche Probleme zu bewältigen. Bei Fragen oder weiterem Unterstützungsbedarf stehen wir gerne zur Verfügung!