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 <VirtualHost *:80> RewriteEngine On RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/ RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] </VirtualHost> <VirtualHost *:443> 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" </VirtualHost> # 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?