Den Schutz vor Angreifern und Malware hat sich IT-Administrator im März auf die Fahnen geschrieben. So lesen Sie in der Ausgabe, mit welchen Handgriffen Sie ... (mehr)

Einfacher mit Certmonger

Der Einsatz von OpenSSL ist recht umständlich und der große Umfang verfügbarer Optionen macht den Umgang mit dem Tool gerade für Einsteiger nicht wirklich einfacher. Zum Glück existieren aber auch andere Tools, die die Komplexität einer Zertifikatsanfrage hinter einem einfachen Interface verstecken. Das hier vorgestellte Tool certmonger eignet sich primär für den Einsatz in einem Unternehmensnetzwerk. Wer ein Zertifikat von einer öffentlichen CA beziehen möchte, schaut sich am besten an, welche Optionen die jeweilige Zertifizierungsstelle hierfür anbietet.

Certmonger ist mittlerweile in vielen Linux-Distributionen enthalten und kann mit einer ganzen Reihe unterschiedlicher CAs im Backend zusammenarbeiten. Wird mit Hilfe von certmonger ein neues Zertifikat angefragt, erzeugt das Tool selbstständig einen privaten Schlüssel und die damit signierte Zertifizierungsanfrage. Sie wird dann über eine gesicherte Verbindung an die CA gesendet. Wie dieser Vorgang im Detail aussieht, hängt davon ab, an welche Zertifikatsstelle die Anfrage gesendet wird.

Certmonger ist die Standard-Client-Anwendung für das Management von Zertifikaten in einer FreeIPA-Umgebung. Über Remote Procedure Calls (RPC) werden hier die Nachrichten zwischen dem FreeIPA-Server und den Client-Systemen ausgetauscht. Das Tool unterstützt von Haus aus allerdings auch das Simple Certificate Enrollment Protocol (SCEP), sodass Zertifikate mit Hilfe von SCEP von jeder kompatiblen CA bezogen werden können. Da die Unterstützung unterschiedlicher CAs mit Hilfe sogenannter Helper-Skripte umgesetzt ist und die certmonger-API sehr gut dokumentiert ist [2], lässt sich das Tool ohne Probleme auch mit anderen CAs einsetzen. Unterstützung für den SCEP-Nachfolger Enrollment over Secure Transport (EST) [3] steht bereits auf der Roadmap und wird hoffentlich in einem der nächsten Releases umgesetzt werden.

Certmonger mit FreeIPA

Das folgende Beispiel zeigt, wie certmonger in einer FreeIPA-Umgebung ein Zertifikat für einen Webservice anfordern kann. Der FreeIPA-Server, der in der Datei "/etc/ipa/default.conf" konfiguriert ist, wird per Default für die Anfrage verwendet. Für andere CA-Systeme können Sie certmonger über die Option "-c" mitteilen, welche CA es für die Anfrage verwenden soll.

Es wird vorausgesetzt, dass der Webserver aus diesem Beispiel dem FreeIPA-System bereits bekannt ist und der certmonger-Dienst auf dem Client-System aktiv ist ( »systemctl start certmonger« ). Bei der Zertifikatsanfrage lässt sich auch festlegen, ob der private Schlüssel sowie das eigentliche Zertifikat im PEM-Format oder einer NSS-Datenbank gespeichert werden sollen. In unserem Beispiel wird das Zertifikat unter dem Namen "Server-Cert" in einer NSS-Datenbank im Verzeichnis "/etc/httpd/alias" gespeichert. Desweiteren wird certmonger angewiesen, für die Anfrage das Zertifikatsprofil mit dem Namen caIPAserviceCert zu verwenden ("-T"), den Webserver neu zu starten, sobald das Zertifikat gespeichert wurde ("-C"), das Zertifikat zu erneuern, sobald es abläuft ("-r") und für den Zugriff auf den privaten Schlüssel die PIN aus der Datei "pwdfile.txt" zu verwenden ("-p"):

$ ipa-getcert request -r -d /etc/httpd/alias -n server-cert -K HTTP/`hostname` -N CN=`hostname` -C /usr/libexec/ipa/certmonger/restart_httpd -T caIPAserviceCert -p /etc /httpd /alias /pwdfile.txt

In der Ausgabe von »getcert list -i« können Sie sehen, dass certmonger im Anschluss ein neues Zertifikat von der CA empfangen hat und es von nun an überwacht ("status: MONITORING") (Listing 1).

Listing 1: Zertifikat untersuchen



[$ getcert list -i '20161228134940'
Number of certificates and requests being tracked: 9.
Request ID '20161228134940':
    status: MONITORING
    stuck: no
    key pair storage: type=NSSDB,location='/etc/httpd/alias',nickname='server-cert',token='NSS Certificate DB',pinfile='/etc/httpd/alias/pwdfile.txt'
    certificate: type=NSSDB,location='/etc/httpd/alias', nickname='server-cert',token='NSS Certificate DB'
    CA: IPA
    issuer: CN=Certificate Authority,O=FAB.REDHAT.COM
    subject: CN=vm-123.fab.redhat.com,O=FAB.REDHAT.COM
    expires: 2018-12-29 13:49:50 UTC
    principal name: HTTP/vm-123.fab.redhat.com@FAB.REDHAT.COM
    key usage: digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    eku: id-kp-serverAuth,id-kp-clientAuth
    pre-save command:
    post-save command: /usr/libexec/ipa/certmonger/restart_httpd
    track: yes
    auto-renew: yes

Mit certutil und OpenSSL nehmen Sie das neu erzeugte Zertifikat näher unter die Lupe:

$ certutil -d /etc/httpd/alias/ -L -a -n server-cert | openssl x509 -noout -subject -issuer -dates
subject= /O=GSSLAB.REDHAT.COM/CN=vm-123.fab.redhat.com
issuer= /O=GSSLAB.REDHAT.COM/CN=Certificate Authority
notBefore=Dec 28 13:49:50 2016 GMT
notAfter=Dec 29 13:49:50 2018 GMT

Auch wenn certmonger sich selbstständig darum kümmert, dieses Zertifikat zu erneuern, bevor es abläuft ("-r"), lässt sich dieser Vorgang bei Bedarf mit »certmonger resubmit -i ID« manuell anstoßen.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023