ussrlongbow.certbot

Ansible-Rolle: Certbot (für Let's Encrypt)

Build-Status

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:

  1. Stellen Sie sicher, dass alle Dienste, die auf den Ports 80 und 443 lauschen (Apache, Nginx, Varnish usw.), gestoppt sind.
  2. 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.
  3. 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
  4. Starten Sie alle Dienste, die zuvor auf den Ports 80 und 443 liefen, erneut.
  5. 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 im certbot-Befehl angegeben haben.
  6. 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.

Über das Projekt

Installs and configures Certbot (for Let's Encrypt).

Installieren
ansible-galaxy install ussrlongbow.certbot
GitHub Repository
Lizenz
mit
Downloads
6.9k
Besitzer