Let's Encrypt
ist eine freie, automatisierte und offene Zertifizierungsstelle, welche von der ISRG
(Internet Security Research Group) herausgebracht wurde. SSL Zertifikate sind heutzutage unablässig bei der Bereitstellung von Inhalten im Internet, wie zB Webseiten.
Diese Anleitung beschreibt die Installation und Konfiguration von Let's Encrypt
mit Certbot
auf Linux Debian 11
mit Apache
Webserver.
Installation
# apt update && apt upgrade
# apt install certbot python3-certbot-apache -y
Im Grunde war es das schon. Certbot speichert seine Konfiguration in /etc/letsencrypt
ab. Die Verzeichnisse und Dateien werden erst beim Ausführen des certbot
-Kommandos vervollständigt:
# ls -la /etc/letsencrypt/
insgesamt 48
drwxr-xr-x 9 root root 4096 10. Aug 18:56 .
drwxr-xr-x 72 root root 4096 10. Aug 15:54 ..
drwx------ 3 root root 4096 10. Aug 16:06 accounts
drwx------ 3 root root 4096 10. Aug 18:56 archive
-rw-r--r-- 1 root root 121 26. Mai 2018 cli.ini
drwxr-xr-x 2 root root 4096 10. Aug 18:56 csr
drwx------ 2 root root 4096 10. Aug 18:56 keys
drwx------ 3 root root 4096 10. Aug 18:56 live
-rw-r--r-- 1 root root 952 10. Aug 18:56 options-ssl-apache.conf
drwxr-xr-x 2 root root 4096 10. Aug 18:56 renewal
drwxr-xr-x 5 root root 4096 10. Aug 16:04 renewal-hooks
-rw-r--r-- 1 root root 64 10. Aug 18:56 .updated-options-ssl-apache-conf-digest.txt
Zertifikat ausstellen
Dazu muss das Routing ung ggf. NAT vom Internet auf Port 80 und Port 443 auf den Host korrekt sein, für den das Zertifikat ausgestellt werden soll:
# certbot --apache -d subdomain.domain.de
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Requesting a certificate for subdomain.domain.de
Performing the following challenges:
http-01 challenge for subdomain.domain.de
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/subdomain.domain.de-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/subdomain.domain.de-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/subdomain.domain.de-le-ssl.conf
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/subdomain.domain.de.conf to ssl vhost in /etc/apache2/sites-available/subdomain.domain.de-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://subdomain.domain.de
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Subscribe to the EFF mailing list (email: it@domain.de).
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/subdomain.domain.de/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/subdomain.domain.de/privkey.pem
Your certificate will expire on 2022-11-08. To obtain a new or
tweaked version of this certificate in the future, simply run
certbot again with the "certonly" option. To non-interactively
renew *all* of your certificates, run "certbot renew"
Wenn certbot
mit dem Apache Modul aufgerufen wurde (--apache
), erledigt das Programm den Rest für Sie. Das Zertifikat wird beantragt, ausgestellt und heruntergeladen. Es werden die notwendigen Apache Module aktiviert, ein VirtualHost für den SSL Port 443 angelegt, aktiviert und ein Redirect
von Port 80 auf Port 443 eingestellt.
Zertifikate erneuern
Die von Letsencrypt ausgestellten Zertifikate lassen sich selbstständig automatisiert erneuern. Zum Überprüfen ob der Erneuerungsvorgang im Prinzip funktioniert, kann eine Erneuerung von Hand mit der Option --dry-run
simuliert werden:
# certbot renew --dry-run
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/subdomain.domain.de
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert not due for renewal, but simulating renewal for dry run
Plugins selected: Authenticator apache, Installer apache
Account registered.
Simulating renewal of an existing certificate for subdomain.domain.de
Performing the following challenges:
http-01 challenge for subdomain.domain.de
Waiting for verification...
Cleaning up challenges
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of apache server; fullchain is
/etc/letsencrypt/live/subdomain.domain.de/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/subdomain.domain.de/fullchain.pem (success)
Für die automatische Erneuerung der Zertifikate legt certbot bei der Installation einen cron Job in /etc/cron.d/certbot
an, der alle 12 Stunden das renew-
Kommando ausführt:
# /etc/cron.d/certbot: crontab entries for the certbot package # # Upstream recommends attempting renewal twice a day # # Eventually, this will be an opportunity to validate certificates # haven't been revoked, etc. Renewal will only occur if expiration # is within 30 days. # # Important Note! This cronjob will NOT be executed if you are # running systemd as your init system. If you are running systemd, # the cronjob.timer function takes precedence over this cronjob. For # more details, see the systemd.timer manpage, or use systemctl show # certbot.timer. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew
Wie lange die installierten Zertifikate noch gültig sind, können Sie mit dem certbot certificates
Kommando abfragen:
# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
Certificate Name: subdomain.domain.de
Serial Number: fab001d2fedfedf4523e0aef3218fa11207
Key Type: RSA
Domains: kb.kastner.de
Expiry Date: 2022-11-08 15:56:09+00:00 (VALID: 89 days)
Certificate Path: /etc/letsencrypt/live/subdomain.domain.de/fullchain.pem
Private Key Path: /etc/letsencrypt/live/subdomain.domain.de/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -