Da es nun endlich eine Zertifizierungsstelle gibt, die sowohl kostenlos als auch einfach SSL-Zertifikate ausstellt, habe ich mich mal daran versucht. Insbesondere wollte ich natürlich wissen, wie einfach es wirklich ist – und wurde positiv überrascht. Wer schon mal auf seinem Server die Kommandozeile benutzt hat, kann den ganzen Prozess in 10 Minuten abschließen.
Was ihr benötigt für Letsencrypt
- Apache (nur hierfür gibt es derzeit die volle Unterstützung)
- Letsencrypt Programm
- Git
- Root-Zugang zum Server
Den Letsencrypt Client installieren
Wer noch kein Git installiert hat, beginnt damit.
1 |
apt-get install git |
Der Letsencrypt Client ist ein Git-Archiv und wird mit
1 |
git clone https://github.com/letsencrypt/letsencrypt |
heruntergeladen und in ein beliebiges Verzeichnis „installiert“.
Zertifikat beantragen
Wechselt in das von Git soeben erstellte Verzeichnis und startet die Anwendung. Als Parameter übergebt ihr den Webserver und die Domains, die ihr registrieren wollt. Wichtig zu wissen ist, dass Letsencrypt keine Wildcard-Zertifikate erstellt und ihr alle Subdomains explizit nennen müsst. Dies können allerdings bis zu 100 Stück sein. Benutzt für jede Subdomain den Schalter -d
und schreibt den Namen inklusive Domain dahinter.
1 2 3 |
cd letsencrypt ./letsencrypt-auto --apache -d meinedomain.de -d www.meinedomain.de |
Da ihr ein Benutzerkonto für die Verwaltung eurer Zertifikate anlegen müsst, wird euch die Software nach einer E-Mailadresse fragen und verlangen, dass ihr die AGB akzeptiert.
Danach kommuniziert die Software mit der Zertifizierungsstelle und verifiziert, dass ihr tatsächlich Kontrolle über die Domain habt. Dafür benötigt ihr ein wenig Geduld – holt euch also derweil einen Kaffee. Ist das Zertifikat erstellt werden alle benötigten Informationen unter /etc/letsencrypt/live/meinedomain.de/
abgelegt.
Apache einrichten
Für die HTTPS-Variante eurer Seite benötigt ihr einen eigenen vhost. Den richtet ihr unter /etc/apache/sites-enabled
ein. Die Datei könnt ihr nennen wie ihr wollt, wir nehmen hier mal default-ssl.conf
.
1 2 3 |
cd /etc/apache/sites-enabled vi default-ssl.conf |
In diese schreibt ihr dann folgendes.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<IfModule mod_ssl.c> <VirtualHost *:443> DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/letsencrypt/live/meinedomain.de/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/meinedomain.de/privkey.pem </VirtualHost> </IfModule> |
Als DocumentRoot nehmt ihr natürlich das selbe wie schon für eure normale Seite.
Als nächstes müssen wir noch das SSL-Modul aktivieren und den Server einmal neu starten.
1 2 3 |
a2enmod ssl service apache2 restart |
Und das war’s auch schon.
Da das ganze noch in der Beta-Phase ist, habe ich den Blog noch nicht umgestellt. Hier: https://poe-php.de könnt ihr euch aber davon überzeugen, dass es funktioniert.
Gültigkeit des Zertifikats
Von Letsencrypt erstellte Zertifikate sind nur 90 Tage lang gültig. Alles was man für eine Verlängerung tun muss ist aber lediglich den Client alle 89 Tage auszuführen und die Verlängerung wird automatisch erledigt. Das lässt sich auch als Cronjob einrichten. Vor Ablauf wird dir natürlich eine Erinnerung per E-Mail geschickt.
Hierfür könnt ihr euch ein kleines Shell-Skript anlegen:
1 2 3 4 5 |
#!/bin/sh service apache2 stop /path/to/letsencrypt/letsencrypt-auto renew -nvv --standalone service apache2 start |
Literatur zum nachlesen
Die Seite der Letsencrypt Software: https://github.com/letsencrypt/letsencrypt
Apache-SSL-Modul: https://wiki.ubuntuusers.de/Apache/SSL/