====== Let's Encrypt mit dehydrated ======
Pakete:
* ''dehydrated'' ''dehydrated-apache2'' ''apache2'' ''ssl-cert'' (Debian ab 11)
useradd -r -s /bin/false -d /var/lib/dehydrated/ dehydrated
gpasswd -a www-data ssl-cert
systemctl restart apache2.service
# CA="https://acme-staging-v02.api.letsencrypt.org/directory"
DEHYDRATED_USER=dehydrated
DEHYDRATED_GROUP=ssl-cert
CONTACT_EMAIL=admin@example.com
dpkg-statoverride --update --add dehydrated ssl-cert 2750 /var/lib/dehydrated
dpkg-statoverride --update --add dehydrated ssl-cert 2750 /var/lib/dehydrated/acme-challenges
Letsencrypt Account anlegen:
sudo -u dehydrated dehydrated --register --accept-terms
ls -l /var/lib/dehydrated/accounts/*
server.lxht.de cname.lxht.de
dehydrated service anlegen:
systemctl edit --full --force dehydrated.service
[Unit]
Description=get let's encrypt certificate via dehydrated
[Service]
Type=oneshot
User=dehydrated
Group=ssl-cert
WorkingDirectory=/var/lib/dehydrated
ExecStart=/usr/bin/dehydrated -c
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/dehydrated
PrivateTmp=yes
Dafür sorgen, dass beim Aktualisieren der Zertifikate die Dienste neu gestartet werden:
systemctl edit dehydrated.service
[Service]
ExecStartPost=+-/usr/sbin/service apache2 reload
ExecStartPost=+-/usr/sbin/service dovecot reload
ExecStartPost=+-/usr/sbin/service postfix reload
systemctl start dehydrated.service
journalctl -eu dehydrated.service
systemctl edit --full --force dehydrated.timer
[Unit]
Description=get certificates with dehydrated
[Timer]
OnCalendar=*-*-3/3 17:45
Persistent=true
[Install]
WantedBy=timers.target
systemctl enable --now dehydrated.timer
Apache- und OpenSSL-Version nachsehen ...
dpkg -l apache2
dpkg -l openssl
... und Konfiguration gemäß Vorlage von https://ssl-config.mozilla.org/ erstellen.
Je nach gewählter Konfiguration (modern, intermediate, old) wird eine Datei mit Diffie-Hellman Parametern benötigt.
In den Kommentarzeilen steht falls nötig wie man die erstellen kann. Da wird je nach Auswahl vorgeschlagen, sie herunter zu laden. Alternativ kann man sie mit etwas Geduld auch selbst erstellen (hier für intermediate):
openssl dhparam -out /etc/ssl/dhparam.pem 2048
# generated 2022-05-22, Mozilla Guideline v5.6, Apache 2.4.53, OpenSSL 1.1.1k, intermediate configuration
# https://ssl-config.mozilla.org/#server=apache&version=2.4.53&config=intermediate&openssl=1.1.1k&guideline=5.6
# this configuration requires mod_ssl, mod_socache_shmcb, mod_rewrite, and mod_headers
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
SSLEngine on
# curl https://ssl-config.mozilla.org/ffdhe2048.txt >> /path/to/signed_cert_and_intermediate_certs_and_dhparams
SSLCertificateFile /var/lib/dehydrated/certs/server.lxht.de/fullchain.pem
SSLCertificateKeyFile /var/lib/dehydrated/certs/server.lxht.de/privkey.pem
# enable HTTP/2, if available
Protocols h2 http/1.1
# HTTP Strict Transport Security (mod_headers is required) (63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"
# intermediate configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
a2enmod ssl
a2enmod socache_shmcb
a2enmod rewrite
a2enmod headers
a2dissite 000-default
a2enconf tls
TODO: muss dhparam.pem bei jedem neuen Zertifikat erneut an fullchain.pem angehangen werden?