{"copy":"Kopieren","expand":"Einblenden","collapse":"Ausblenden","copy_success":"Kopiert!","copy_error":"Kopieren fehlgeschlagen!"}

TLS-Zertifikate über das ACME Protokoll auf Linux erwerben

Möchten Sie, dass Ihre Zertifikate automatisch ausgestellt und nachfolgend auf Ihren Linux-Server auch automatisch installiert werden? Dies ermöglicht Ihnen das automatisierte Tool für die Anschaffung und Verwaltung der Zertifikate Certbot. Unsere Anleitung zeigt Ihnen den ganzen Vorgang. Sie ist zwar für den Webserver Apache bestimmt, aber Certbot kann auch für Nginx, Haproxy oder Plesk angewendet werden. Es handelt sich um eine offene und somit frei zugängliche Software.

Vorbereitung zum Zertifikatserwerb

Die Arbeit mit ACME ist sehr einfach, erfordert jedoch eine kleine Vorbereitung. Bevor Sie ACME verwenden, lesen Sie bitte die folgenden Absätze.

Erhalt von Zugängen zur Authentifizierung

Die ACME-Implementierung von DigiCert verwendet die Authentifizierung mittels External Account Binding (EAB), was bedeutet, dass Sie Ihre eigenen Zugänge von DigiCert erhalten. Diese Zugänge (ACME credentials) erhalten Sie einfach in Ihrem Kundenkonto bei SSLmarket.

Die ACME-Anmeldedaten bestehen aus Key Identifier (Schlüssel-ID) und HMAC key, welche Ihr Geheimnis zur Authentifizierung gegenüber dem bestehenden Konto sind. Diese Daten und die URL des ACME-Endpunkts benötigen Sie für den ACME-Client (Certbot).

Achtung: Für jede Kombination des Zertifikats, seiner Gültigkeit und Organisation entsteht ein einzigartiges Set aus KID und HMAC-Schlüssel. Es liegt an Ihnen, diese sicher aufzubewahren.

Zusammenfassung der Zertifikatsverifizierung

Alle Zertifikate, die von DigiCert ausgestellt werden, sind verifiziert. Einige erfordern eine minimale (DV-Zertifikate) und andere eine Organisationsverifizierung (OV und EV). ACME ist keine Ausnahme; auch hier wird die Verifizierung erfordert.

  • Domainvalidierte DV-Zertifikate erhalten Sie sofort; es reicht, ACME-Anmeldedaten für das DV-Produkt zu erstellen und diese zu verwenden. Die DCV-Verifizierung erfolgt über die Methode HTTP-01 und das Zertifikat wird sofort ausgestellt.
  • OV- und EV-Zertifikate erfordern eine verifizierte Organisation und die Verifizierung der verwendeten Domain, die mit der Organisation verbunden ist. Falls die Verifizierung nicht abgeschlossen ist, kann auch die ACME-Anfrage nicht abgeschlossen werden.
    • Domains können automatisch über HTTP-01 verifiziert werden, oder sie können im Voraus mittels DNS oder E-Mail verifiziert werden (in diesem Fall kontaktieren Sie uns bitte). Die DCV verläuft ganz wie gewohnt.
    • Die Organisation muss vor dem Zertifikatsantrag verifiziert sein, sonst wartet diese auf den Abschluss der Verifizierung (was zu einem Timeout führt). Wir empfehlen, nach Aktivierung des ACME-Kontos auf die Verifizierung Ihrer Organisation durch DigiCert zu warten und den Status mit dem SSLmarket-Support zu konsultieren.

Für OV und EV können Sie ACME nutzen, sobald die Organisation verifiziert ist (die Verifizierung der Domains und Firmen ist 13 Monate gültig).

Certbot

Certbot ist der beliebteste ACME-Client, der die wichtigsten Linux-Webserver unterstützt.

Vorbereitung von Certbot auf dem Server

Das Certbot-Paket ist normalerweise in Linux-Distributionen installiert, aber dieses Defaultpaket sollte entfernt werden. Um das EAB ACME von DigiCert nutzen zu können, benötigen Sie das Paket von Snap; andere Versionen funktionieren möglicherweise nicht. Sie installieren es folgendermaßen:

snap install certbot --classic

Certbot unterstützt eine Vielzahl von Webservern. Der von Ihnen verwendete Typ wird mit einem Parameter angegeben, zum Beispiel --apache oder --nginx. Wenn Sie etwas anderes benötigen, empfehle ich seine übersichtliche Dokumentation, die Ihnen den konkreten Ablauf für den jeweiligen Webserver verrät.

Zertifikat erwerben und installieren

Im Internet oder in der Certbot-Dokumentation finden Sie viele Beispiele, wie Sie Certbot nutzen und das Zertifikat erhalten können. Da jedoch das ACME von DigiCert im bereits erwähnten EAB-Modus funktioniert, müssen Sie den Befehl auch um die ACME-URL und Ihre zwei ACME-Anmeldedaten ergänzen, die Sie in Ihrer Verwaltung erhalten haben. Andernfalls wird es nicht funktionieren.

Im Terminal beantragen Sie ein Zertifikat mit dem folgenden Befehl an:
sudo certbot --apache --register-unsafely-without-email --server URL --eab-kid xxxxxx --eab-hmac-key yyyyyy -d www.ihredomainname.de

Legende zur Commandozeile:

  • Certbot – startet das Programm Certbot.
  • --apache – wählt das Apache-Plugin von Certbot aus, das das Zertifikat installiert. Wenn Sie einen anderen Webserver verwenden, nutzen Sie einen anderen Parameter (z.B. --nginx).
  • --register-unsafely-without-email – überspringt eine unnötige Registrierung der E-Mail-Adresse für Benachrichtigungen.
  • --server – gibt an, welcher ACME-Server Ihre Anfrage ausführen soll; in diesem Fall https://acme.digicert.com/v2/acme/directory.
  • -d – Der vollständige Domainname, für den Sie das Zertifikat ausstellen möchten. Im Parameter -d können Sie mehrere Domainnamen (SAN) verwenden, wenn das Zertifikat dies unterstützt. Diese werden selbstverständlich kostenpflichtig sein, wenn es sich nicht um einen kostenlosen Alias handelt (www). Wenn Sie diese Option nicht ausfüllen, wird Sie Certbot basierend auf den konfigurierten vHosts auf dem Server bitten, zu bestätigen, welche Domains Sie in die Anfrage aufnehmen möchten.

Nach Eingabe des Befehls werden Sie gefragt, ob Sie auf der angegebenen Domain direkt eine erzwungene Umleitung auf HTTPS aktivieren möchten: Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Wählen Sie Ihre Option und drücken Sie die Enter-Taste. Ihre gewählte Konfiguration wird eingestellt und nach einem Neustart des Webservers geladen. Anschließend erhalten Sie eine Abschlussmeldung, die Sie darüber informiert, dass der Prozess erfolgreich war und wo Ihre Zertifikate gespeichert sind.

Certbot installiert gleichzeitig auch das notwendige Intermediate-Zertifikat. Zur Überprüfung der korrekten Installation verwenden Sie anschließend unser Online-Tool zur Zertifikatsinstallationsprüfung.

ACME.sh

Das ACME von DigiCert können Sie auch einfach mit dem Tool ACME.sh nutzen. Im Gegensatz zu Certbot ist es "schlanker" und erfordert nicht so viele Abhängigkeiten auf dem Server.

Erstellen Sie einen separaten Systembenutzer, unter dem es läuft: useradd -r -s /bin/bash -m -d /home/acmeuser acmeuser
mkdir -p /home/acmeuser/.acme.sh
chown -R acmeuser:acmeuser /home/acmeuser/.acme.sh
echo 'acmeuser ALL=(ALL) NOPASSWD: /usr/sbin/service nginx reload' | sudo tee /etc/sudoers.d/acmeuser

Anschließend melde ich mich beim Benutzer an: sudo su - acmeuser

Installation von acme.sh

Installieren Sie nun den ACME-Client mit dem heruntergeladenen Paket von der Website. wget https://get.acme.sh -O acme.sh
sh acme.sh

Die Installation führt folgendes aus:

  • die Installation des eigentlichen Skripts
  • die Einrichtung eines Cron-Jobs (kann unter dem Benutzer acmeuser mit dem Befehl crontab -e überprüft werden)

Registrieren Sie nun die Zertifizierungsstelle: acme.sh --register-account --server https://one.digicert.com/mpki/api/v1/acme/v2/directory --eab-kid xxxxxx --eab-hmac-key yyyyyy

Bevor Sie das Zertifikat anfordern, stellen Sie sicher (und stellen Sie gegebenenfalls ein), dass der Benutzer acmeuser Zugriff auf das Zielverzeichnis hat, in dem die Zertifikate für Nginx, Apache und weitere Dienste platziert sind. Auf meinem Server war das Verzeichnis nur für den Benutzer root zugänglich: Ich habe es so gelöst, dass ich eine neue Gruppe ssladmins erstellt und die Benutzer root und acmeuser darin aufgenommen habe.

sudo groupadd ssladmins
sudo usermod -aG ssladmins root
sudo usermod -aG ssladmins acmeuser
sudo chown root:ssladmins /etc/nginx/ssl/
sudo chmod 770 /etc/nginx/ssl/

Es gäbe auch eine andere Lösung: dem Benutzer acmeuser mittels visudo die Berechtigung zu geben, Dateien für bestimmte Verzeichnisse ohne Passwort zu kopieren.

Zertifikatsantrag

acme.sh --issue --server https://one.digicert.com/mpki/api/v1/acme/v2/directory -d dev.inmail.cz --days 365 -w /www/sites/inmail/dev/current/web/ --key-file /etc/nginx/ssl/dev.inmail.cz.key --fullchain-file /etc/nginx/ssl/dev.inmail.cz.cer --force --log --reloadcmd "sudo systemctl reload nginx" Liste der ausgestellten und installierten Zertifikate: acme.sh --list

War für Sie dieser Artikel nützlich?