Kategorien
Nerdiges

CertBot handling

Wer einen Webserver betreibt wird es vielleicht kennen: Man erstellt eine „site“ mit dem Apache2, um seine Website verbinden zu können – per http. Allein der Aufruf dieser Seite ist mit modernen Webbrowsern schon kaum noch möglich, aus Sicherheitsgründen. Also direkt mal ein SSL Zertifikat nachschieben:

sudo certbot --apache

Und schwupps: hat man statt einer apache-config schon zwei: eine für HTTP und eine für HTTPS. Unschön und etwas umständlich.

Schlimmer kann man es aber ohne Weiteres auch noch machen: Pro Subdomain benötigt man auch noch eine weitere Site – mit eigenem Let’s-Encrypt Zertifikat ist man dann schon bei 2 Zertifikaten und 4 Configs.

Das geht einfacher: Ich mache es so, dass ich pro Website (oder Subdomain) nur noch eine Konfig habe, für HTTP sowie HTTPS gemeinsam. Dazu ein Multidomainzertifikat, das alle Subdomains abdeckt, die ich verwenden will. Da ich die Websites selbst verwalte ist die gemeinsame Verwendung kein Problem:

sudo certbot --apache -d bar.com -d www.bar.com -d foo.bar.com

Meine Site-Config deckt nicht nur HTTP und HTTPS ab, sondern für die Generation 40+ auch noch die www-Subdomains, die man früher nutzte, um eine Website als solche zu kennzeichnen..

Den HTTP Teil kann man recht einfach umleiten:

<VirtualHost *:80>
    ServerName foo.de
    ServerAlias www.foo.de
    Redirect permanent / https://foo.de/
</VirtualHost>

Im HTTPS-Teil muss ich noch eine Rewrite-Regel erstellen, damit www ebenfalls entfernt wird:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName foo.de
    ServerAlias www.foo.de
    ServerAdmin florian@foo.de

    # SSL Zertifikate
    SSLCertificateFile /etc/letsencrypt/live/foo.de/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/foo.de/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

    DocumentRoot /var/www/html

    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
</VirtualHost>
</IfModule>

Nun fehlt nur noch die Erneuerung der Zertifikate. Dazu machen wir einen Eintrag in die crontab:

crontab -e

In die Datei fügen wir ein:

0 */12 * * * certbot renew --quiet

Damit prüfen wir alle 12 Stunden, ob das Zertifikat erneuert werden muss und wenn ja, tun wir das.

Eine Übersiche der aktuellen Zertifikate, Ihrer Gültigkeitsdauer und dem Umfang (welche Domains abgedeckt sind, kann man sich mit folgendem Befehl anzeigen lassen:

certbot certificates

Damit haben wir die Config etwas vereinfacht, aber dennoch abgesichert. Sim sala bim, und dreimal schwarzer Kater.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.