minad.de hat - wie jeder ordentliche Server SSL-Zertifikate um SSL-Gesicherten Datenaustausch zu ermöglichen. Zur Zeit verwenden wir selbstsignierte Zertifikate, d.h wir haben eine eigene CA, die die minad.de Zertifikate bestätigt. Wie jeder vernünftige Mensch verwendet minad jetzt Let's Encrypt.
Neue Zertifikate müssen nur einmal beantragt werden. Dafür hat sich folgender command etabliert:
certbot certonly --agree-tos --renew-by-default --email root@minad.de --webroot -w /var/www/letsencrypt -d brot.minad.de
Hinweis: Nachdem es ein Limit von 20 renews pro Domain pro Woche gibt (domain in dem fall minad.de oder grilldienstag.de ohne jeweilige sub), bietet es sich an Domains logisch zusammenzufassen.
Deswegen hier eine Liste unserer Zertifikate inkl. der Domains für die sie gelten.
Ein Zertifikat mit alternativen Namen wird ähnlich ausgestellt wie ein Zertifikat für eine Domain. Weitere Domains werden einfach Komma-getrennt an die Option -d angehängt. Maximal 100 Domains können in einem Zertifikat gespeichert werden. Mit den 20 Domains pro Woche ergeben sich so 2000 geschützte Seiten.
certbot certonly --agree-tos --renew-by-default --email root@minad.de --webroot -w /var/www/letsencrypt -d rellig.minad.de,wasser.minad.de,paste.minad.de
Die erste Domain bestimmt den Pfad unter dem das Zertifikat gespeichert wird und ist gleichzeitig im Feld “Ausgestellt für” gespeichert.
Sollen nachträglich weitere alternative Namen eingefügt werden, so nimmt man die exakt gleiche Liste wie beim ausstellen und fügt den neuen Namen ein. Der certbot sollte nun fragen, ob das bestehende Zertifikat erweitert werden soll. Am Besten mit –dry-run testen.
Zum Überblick hier eine Liste unserer Zertifikate inkl. der Domains für die sie gelten.
Das automatische renewal funktioniert über zwei Systemd-Units inkl. Timer, und ein Skript dass die Zertifikate für lighty zusammenbaut.
[Unit] Description=Call certbot to renew all certificates After=network.target [Service] User=root Type=oneshot ExecStart=/usr/bin/certbot renew
[Unit] Description=Timer for the sslscript - currently daily [Timer] OnCalendar=Wed *-*-* 10:07:00 [Install] WantedBy=timer.target
Das Skript dass das für den lighty zusammenpastet und kopiert siehe das sslscript Gitlab repo.
[Unit] Description=Check if there are renewed SSL-Certs and convert them for lighty After=network.target [Service] User=root Type=oneshot ExecStart=/root/sslscript/sslscript.sh
[Unit] Description=Timer for the sslscript - currently daily [Timer] OnCalendar=Tue *-*-* 10:07:00 [Install] WantedBy=timer.target