ussrlongbow.certbot
Ansible-Rolle: Certbot (für Let's Encrypt)
Installiert und konfiguriert Certbot (für Let's Encrypt).
Anforderungen
Wenn Sie aus dem Quellcode installieren, wird Git benötigt. Sie können Git mit der Rolle geerlingguy.git
installieren.
In der Regel führt die Installation aus dem Quellcode (siehe Abschnitt „Installation aus Git-Quellcode“) zu einer besseren Erfahrung mit Certbot und Let's Encrypt, insbesondere wenn Sie eine ältere Betriebssystemversion verwenden.
Rollen-Variablen
Die Variable certbot_install_from_source
steuert, ob Certbot aus Git oder mit Paketverwaltung installiert wird. Letzteres ist der Standard, daher ist die Variable standardmäßig auf nein
eingestellt.
certbot_auto_renew: true
certbot_auto_renew_user: "{{ ansible_user | default(lookup('env', 'USER')) }}"
certbot_auto_renew_hour: 3
certbot_auto_renew_minute: 30
certbot_auto_renew_options: "--quiet --no-self-upgrade"
Standardmäßig konfiguriert diese Rolle einen Cron-Job, der unter dem angegebenen Benutzerkonto zur angegebenen Stunde und Minute täglich ausgeführt wird. Die Standardwerte führen certbot renew
(oder certbot-auto renew
) täglich um 03:30:00 durch, unter dem Benutzer, den Sie in Ihrem Ansible-Playbook verwenden. Es wird empfohlen, einen benutzerdefinierten Benutzer/Stunde/Minute festzulegen, damit die Erneuerung in einer verkehrsarmen Zeit erfolgt und von einem Benutzerkonto, das nicht root ist, durchgeführt wird.
Automatische Zertifikatgenerierung
Derzeit gibt es eine integrierte Methode zur Erstellung neuer Zertifikate mit dieser Rolle: standalone
. Weitere Methoden (z. B. mit nginx oder apache und einem Webroot) können in Zukunft hinzugefügt werden.
Für ein vollständiges Beispiel: siehe das voll funktionsfähige Test-Playbook in molecule/default/playbook-standalone-nginx-aws.yml.
certbot_create_if_missing: false
certbot_create_method: standalone
Setzen Sie certbot_create_if_missing
auf ja
oder True
, um dieser Rolle zu erlauben, Zertifikate zu erstellen. Legen Sie die Methode zur Generierung von Zertifikaten mit der Variable certbot_create_method
fest – derzeit erlaubte Werte sind: standalone
.
certbot_admin_email: email@example.com
Die E-Mail-Adresse, die verwendet wird, um den Geschäftsbedingungen von Let's Encrypt zuzustimmen und sich für cert-bezogene Benachrichtigungen anzumelden. Diese sollte angepasst und auf eine E-Mail-Adresse eingestellt werden, die Sie oder Ihre Organisation regelmäßig überwachen.
certbot_certs: []
# - email: [email protected]
# domains:
# - example1.com
# - example2.com
# - domains:
# - example3.com
Eine Liste von Domains (und anderen Daten), für die Zertifikate generiert werden sollen. Sie können einen email
-Schlüssel zu jedem Listenelement hinzufügen, um die certbot_admin_email
zu überschreiben.
certbot_create_command: "{{ certbot_script }} certonly --standalone --noninteractive --agree-tos --email {{ cert_item.email | default(certbot_admin_email) }} -d {{ cert_item.domains | join(',') }}"
Der certbot_create_command
definiert den Befehl, der verwendet wird, um das Zertifikat zu generieren.
Standalone-Zertifikatgenerierung
certbot_create_standalone_stop_services:
- nginx
Dienste, die gestoppt werden sollen, während certbot
seinen eigenen Standalone-Server auf den Ports 80 und 443 ausführt. Wenn Sie Apache verwenden, setzen Sie dies auf apache2
(Ubuntu) oder httpd
(RHEL), oder wenn Sie Nginx auf Port 443 und etwas anderes auf Port 80 (z. B. Varnish, eine Java-Anwendung oder etwas anderes) haben, fügen Sie es der Liste hinzu, damit es gestoppt wird, wenn das Zertifikat generiert wird.
Diese Dienste werden nur beim ersten Mal gestoppt, wenn ein neues Zertifikat generiert wird.
Installation aus Git-Quelle
Sie können Certbot aus seinem Git-Quell-Repository installieren, wenn gewünscht. Dies kann in mehreren Fällen nützlich sein, insbesondere wenn ältere Distributionen keine Certbot-Pakete zur Verfügung haben (z. B. CentOS < 7, Ubuntu < 16.10 und Debian < 8).
certbot_install_from_source: false
certbot_repo: https://github.com/certbot/certbot.git
certbot_version: master
certbot_keep_updated: true
Certbot Git-Repository-Optionen. Um aus dem Quellcode zu installieren, setzen Sie certbot_install_from_source
auf ja
. Dies klont das konfigurierte certbot_repo
und beachtet die Einstellung certbot_version
. Wenn certbot_keep_updated
auf ja
gesetzt ist, wird das Repository jedes Mal aktualisiert, wenn diese Rolle ausgeführt wird.
certbot_dir: /opt/certbot
Das Verzeichnis, in dem Certbot geklont wird.
Wildcard-Zertifikate
Let's Encrypt unterstützt die Erstellung von Wildcard-Zertifikaten, aber der Prozess zur Erstellung und Verwendung ist etwas komplizierter. Siehe Kommentare in diesem Pull-Request für ein Beispiel, wie Sie diese Rolle verwenden können, um Wildcard-Zertifikate zu verwalten.
Michael Porter hat auch eine Anleitung zur Erstellung eines Let's Encrypt-Wildcard-Zertifikats mit Ansible, speziell mit Cloudflare.
Abhängigkeiten
Keine.
Beispiel-Playbook
- hosts: servers
vars:
certbot_auto_renew_user: your_username_here
certbot_auto_renew_minute: 20
certbot_auto_renew_hour: 5
roles:
- geerlingguy.certbot
Siehe weitere Beispiele im Verzeichnis tests/
.
Manuelle Erstellung von Zertifikaten mit Certbot
Hinweis: Sie können diese Rolle auch automatisch Zertifikate erstellen lassen; siehe die Dokumentation zur „Automatischen Zertifikatgenerierung“ oben.
Sie können Zertifikate manuell mit dem certbot
(oder certbot-auto
) Skript erstellen (verwenden Sie letsencrypt
auf Ubuntu 16.04 oder verwenden Sie /opt/certbot/certbot-auto
, wenn Sie aus dem Quellcode/Git installiert haben). Hier sind einige Beispielbefehle zur Konfiguration von Zertifikaten mit Certbot:
# Zertifikate automatisch für alle Apache-Virtualhosts hinzufügen (mit Vorsicht verwenden!).
certbot --apache
# Zertifikate generieren, aber die Apache-Konfiguration nicht ändern (sicherer).
certbot --apache certonly
Wenn Sie den Prozess zur automatischen Hinzufügung eines neuen Zertifikats vollständig automatisieren möchten, aber die integrierte Funktionalität dieser Rolle nicht nutzen möchten, können Sie dies tun, indem Sie die Optionen der Befehlszeile verwenden, um sich zu registrieren, den Geschäftsbedingungen zuzustimmen und dann ein Zertifikat mit dem Standalone-Server zu generieren:
- Stellen Sie sicher, dass alle Dienste, die auf den Ports 80 und 443 lauschen (Apache, Nginx, Varnish usw.), gestoppt sind.
- Registrieren Sie sich mit etwas wie
certbot register --agree-tos --email [[email protected]]
- Hinweis: Sie müssen diesen Schritt in Zukunft nicht wiederholen, wenn Sie zusätzliche Zertifikate auf demselben Server generieren. - Generieren Sie ein Zertifikat für eine Domain, deren DNS auf diesen Server verweist:
certbot certonly --noninteractive --standalone -d example.com -d www.example.com
- Starten Sie alle Dienste, die zuvor auf den Ports 80 und 443 liefen, erneut.
- Aktualisieren Sie die TLS-Konfiguration Ihres Webservers für den VirtualHost, um auf das neue Zertifikat (
fullchain.pem
) und den privaten Schlüssel (privkey.pem
) zu verweisen, die Certbot gerade für die Domain generiert hat, die Sie imcertbot
-Befehl angegeben haben. - Laden Sie Ihren Webserver neu oder starten Sie ihn neu, damit er die neue HTTPS-VirtualHost-Konfiguration verwendet.
Automatische Zertifikatserneuerung mit Certbot
Standardmäßig fügt diese Rolle einen Cron-Job hinzu, der alle installierten Zertifikate einmal täglich zu der von Ihnen gewählten Stunde und Minute erneuert.
Sie können die automatische Erneuerung (ohne das Zertifikat tatsächlich zu erneuern) mit dem Befehl testen:
/opt/certbot/certbot-auto renew --dry-run
Siehe die vollständige Dokumentation und Optionen auf der Certbot-Website.
Lizenz
MIT / BSD
Autor-Informationen
Diese Rolle wurde 2016 von Jeff Geerling erstellt, Autor von Ansible for DevOps.
Installs and configures Certbot (for Let's Encrypt).
ansible-galaxy install ussrlongbow.certbot