thiagoalmeidasa.certbot_route53
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.
Im Allgemeinen führt die Installation aus dem Quellcode (siehe Abschnitt „Installation aus dem Quellcode von Git“) zu einer besseren Erfahrung bei der Verwendung von Certbot und Let's Encrypt, insbesondere wenn Sie eine ältere Betriebssystemversion verwenden.
Rollenvariablen
Die Variable certbot_install_from_source
steuert, ob Certbot aus Git oder über das Paketmanagement installiert werden soll. Letzteres ist die Voreinstellung, daher ist die Variable standardmäßig auf nein
gesetzt.
certbot_auto_renew: true
certbot_auto_renew_user: root
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 zu der angegebenen Stunde und Minute jeden Tag ausgeführt wird. Die Voreinstellungen führen certbot renew
(oder certbot-auto renew
) jeden Tag um 03:30:00 über Cron aus, mit 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 Nicht-Root-Benutzerkonto durchgeführt wird.
Automatische Zertifikatserstellung
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 komplettes Beispiel: siehe das voll funktionsfähige Test-Playbook in molecule/default/playbook-standalone-nginx-aws.yml.
certbot_create_if_missing: false
certbot_create_method: certonly
Setzen Sie certbot_create_if_missing
auf ja
oder True
, um dieser Rolle zu erlauben, Zertifikate zu erstellen. Legen Sie die verwendete Methode zur Erstellung von Zertifikaten mit der Variable certbot_create_method
fest – derzeit erlaubte Werte sind: certonly
.
certbot_admin_email: email@example.com
Die E-Mail-Adresse, die zur Zustimmung zu den Nutzungsbedingungen von Let's Encrypt und zum Abonnieren von zertifikatsbezogenen Benachrichtigungen verwendet wird. Diese sollte angepasst und auf eine E-Mail-Adresse gesetzt werden, die Sie oder Ihre Organisation regelmäßig überwacht.
certbot_certs: []
# - email: [email protected]
# domains:
# - example1.com
# - example2.com
# - domains:
# - example3.com
Eine Liste von Domains (und anderen Daten), für die Zertifikate erstellt 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 zur Erstellung des Zertifikats.
Installation aus dem Quellcode von Git
Sie können Certbot aus dem Git-Quellcode-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
Optionen für das Certbot Git-Repository. Um aus dem Quellcode zu installieren, setzen Sie certbot_install_from_source
auf ja
. Dies klont das konfigurierte certbot_repo
, wobei die Einstellung certbot_version
beachtet wird. Wenn certbot_keep_updated
auf ja
gesetzt ist, wird das Repository bei jedem Ausführen dieser Rolle aktualisiert.
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 aufwendiger. Siehe die 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 veröffentlicht, insbesondere 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:
- thiagoalmeidasa.certbot_route53
Siehe andere Beispiele im Verzeichnis tests/
.
Manuelle Zertifikatserstellung mit Certbot
Hinweis: Sie können diese Rolle automatisch Zertifikate generieren lassen; siehe die oben stehende Dokumentation zur "Automatischen Zertifikatserstellung".
Sie können Zertifikate manuell mit dem Skript certbot
(oder certbot-auto
) erstellen (verwenden Sie letsencrypt
auf Ubuntu 16.04 oder verwenden Sie /opt/certbot/certbot-auto
, falls Sie aus dem Quellcode/Git installieren). Hier sind einige Beispielbefehle zur Konfiguration von Zertifikaten mit Certbot:
# Automatisch Zertifikate für alle Apache-virtuellen Hosts hinzufügen (mit Vorsicht zu verwenden!).
certbot --apache
# Zertifikate generieren, aber keine Apache-Konfiguration ändern (sicherer).
certbot --apache certonly
Wenn Sie den Prozess zur vollständigen Automatisierung der Hinzufügung eines neuen Zertifikats vollumfänglich automatisieren möchten, aber nicht die integrierte Funktionalität dieser Rolle verwenden möchten, können Sie dies mit den Befehlszeilenoptionen zur Registrierung, zur Annahme der Nutzungsbedingungen und zur Erstellung eines Zertifikats mit dem Standalone-Server tun:
- Stellen Sie sicher, dass alle Dienste, die auf den Ports 80 und 443 (Apache, Nginx, Varnish usw.) lauschen, gestoppt sind.
- Registrieren Sie sich mit etwas wie
certbot register --agree-tos --email [[email protected]]
- Hinweis: Diesen Schritt benötigen Sie in Zukunft nicht mehr, wenn Sie weitere Zertifikate auf demselben Server erstellen. - Generieren Sie ein Zertifikat für eine Domain, deren DNS auf diesen Server zeigt:
certbot certonly --noninteractive --standalone -d example.com -d www.example.com
- Starten Sie die Dienste, die zuvor auf den Ports 80 und 443 liefen, neu.
- Aktualisieren Sie die TLS-Konfiguration des virtuellen Hosts Ihres Webservers, damit er auf das neue Zertifikat (
fullchain.pem
) und den privaten Schlüssel (privkey.pem
) zeigt, das Certbot gerade für die Domain erstellt hat, die Sie imcertbot
-Befehl angegeben haben. - Laden Sie Ihren Webserver neu oder starten Sie ihn neu, damit er die neue HTTPS-Konfiguration des virtuellen Hosts verwendet.
Automatische Erneuerung von Certbot-Zertifikaten
Standardmäßig fügt diese Rolle einen Cron-Job hinzu, der alle installierten Zertifikate einmal pro Tag zur von Ihnen gewählten Stunde und Minute erneuert.
Sie können die automatische Erneuerung testen (ohne das Zertifikat tatsächlich zu erneuern) mit dem Befehl:
/opt/certbot/certbot-auto renew --dry-run
Siehe vollständige Dokumentation und Optionen auf der Certbot-Website.
Lizenz
MIT / BSD
Installs and configures Certbot (for Let's Encrypt).
ansible-galaxy install thiagoalmeidasa.certbot_route53