LetsEncrypt ist ein Dienst, der Benutzern kostenlose SSL / TLS-Zertifikate zur Verfügung stellt. Certbot ist ein Client, der dies einfach zu realisieren und zu automatisieren macht. Außerdem enthält es Plugins für Apache und Nginx, die die Automatisierung der Zertifikatgenerierung noch einfacher machen.
Installationsanweisungen für die meisten Linux-Distributionen finden Sie auf der Certbot-Website.

Sobald die Pakete installiert sind, können Sie ein neues Zertifikat erstellen.
Apache
Nach der Installation von Certbot und dem Apache-Plugin erfolgt die Generierung des Zertifikats mit dem folgenden Befehl.
certbot certonly --apache --noninteractive --agree-tos --email YOUR_EMAIL -d DOMAIN_NAME
Aktualisieren Sie die Abschnitte "SSLCertificateFile" und "SSLCertificateKeyFile" und starten Sie den Dienst neu.
Fügen Sie cron einen Job hinzu, damit das Zertifikat automatisch erneuert wird.
echo "0 0 * * * root certbot erneuern --quiet --no-self-upgrade --post-hook $0027systemctl apache2$0027 neu laden" | sudo tee -a /etc/cron.d/renew_certbot
HAProxy
HAProxy verfügt derzeit nicht über ein Certbot-Plugin. Um dies zu vermeiden, führen Sie Certbot im Standalone-Modus und Proxy-Verkehr über Ihr Netzwerk aus.
Aktivieren Sie das Frontend und das Backend in der obigen Konfiguration und führen Sie dann Certbot aus.
certbot certonly --standalone - Preferred-Challenges http-01 --http-01-port 8888 --noninteractive --agree-tos --email YOUR_EMAIL -d DOMAIN_NAME
Der Port kann beliebig geändert werden. Stellen Sie jedoch sicher, dass die HAProxy-Einstellungen und Ihr Certbot-Befehl übereinstimmen.
HAProxy muss das Zertifikat und die verketteten Schlüsseldateien in derselben Datei haben, damit sie korrekt gelesen werden können. Dies kann mit dem folgenden Befehl erreicht werden.
cat /etc/letsencrypt/live/domain_name/fullchain.pem /etc/letsencrypt/live/domain_name/privkey.pemBrechen Sie die Bindung *: 443 und den Umleitungsabschnitt in den Einstellungen auf und laden Sie den Dienst neu.
Automatische Erneuerung von Zertifikaten
Fügen Sie das folgende Skript in / usr / local / bin / ein, um Ihr SSL-Zertifikat automatisch zu aktualisieren.
SITE = DOMAIN_NAME# wird an das richtige übergeben. Wir verschlüsseln die Verzeichnis-cd / etc / letsencrypt / live / $SITIO#-Katzendateien, um die kombinierte .pem-Datei für haproxycat fullchain.pem privkey.pem> /etc/ssl/$SITIO.pem1TPxer neu zu ladenStellen Sie sicher, dass das Skript ausführbar ist.
chmod u + x /usr/local/bin/letsencrypt-renew.shFügen Sie cron einen Job hinzu, damit das Zertifikat automatisch erneuert wird.
@mensual / usr / bin / certbot erneuern --renew-hook "/usr/local/bin/letsencrypt-renew.sh"; /var/log/letsencrypt-renewal.logNginx
Generieren Sie nach der Installation von Certbot und des Nginx-Plugins mit sudo apt install certbot python3-certbot-nginx das Zertifikat.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email YOUR_EMAIL -d YOUR_DOMAINFügen Sie den Parameter --rsa-key-size 4096 hinzu, wenn Sie stattdessen einen 4096-Bit-Schlüssel möchten.
Kopieren Sie die gesamte Nginx-Beispielkonfigurationsdatei von oben und fügen Sie sie ein. Ändern Sie dabei die Parameter entsprechend Ihrer Konfiguration und kommentieren Sie die Zeilen aus.
Fügen Sie cron einen Job hinzu, damit das Zertifikat automatisch erneuert wird.
echo "0 0 * * * root certbot erneuern --quiet --no-self-upgrade --post-hook $0027systemctl nginx$0027 neu laden" | sudo tee -a /etc/cron.d/renew_certbot