Kostenlose SSL Zertifikate von Let’s Encrypt für jedermann. Seit Anfang Dezember 2016 stellt dies kein Problem mehr dar.

Das offene Beta-Programm ist durch keinerlei Beta-Status eingeschränkt, sondern bezieht sich lediglich auf den Betrieb.

Einzige Einschränkungen sind die Limitierung von derzeit 5 Zertifikaten pro Domain in sieben Tagen und die 90 tätige Gültigkeit. Es wird daher empfohlen diese nach bereits 45 Tage zu erneuern. Nicht zuletzt dient es auch der Sicherheit.

Nachdem neuinstallieren meines Server, folgte auch gleich die Einrichtung von SSL Zertifikaten für all meine Domain. Die Anleitung möchte ich nun gerne mit euch teilen.

Fall noch nicht geschehen, installiere „git“

aptitude install git

jetzt laden den den Quellcode von Let’s Encrypt herunterladen

git clone https://github.com/letsencrypt/letsencrypt

Wechsel jetzt in das Verzeichnis „letsencrypt“ und starte den Client

cd letsencrypt
./letsencrypt-auto certonly --apache -d example.org

certonly, damit laden wir nur das Zertifikat runter und konfigurieren die vHost später selber.
Mit –apache starten wir den Webserver zur Legitimation. In unserem Fall Aapache.
-d example.de gibt die Domain an für die das Zertifikat erstellt werden soll

Du kannst aber auch mehrere Domains angeben

./letsencrypt-auto certonly --apache -d example.org -d www.example.de

Wichtig ist, das du genau die Domain angibst die du auch aufrufen willst. Es wird ganz klar unter „www.example.de“ und „example.de“ unterschieden da „www.“ ebenfalls eine Subdomain ist.

Nachdem ausführen wird man aufgefordert eine E-Mail Adresse anzugeben. Dies ist zur Kontaktaufnahme wichtig zwecks bei Sicherheitsproblemen und Verlängerung des Zertifikates.

Enter email address (used for urgent renewal and security notices) (Enter ‚c‘ to
cancel): info@example.com

Nach Eingabe der E-Mail Adresse müssen noch die Nutzungsbedingungen akzeptiert werden. Dies wird mit „A“ bestätigt.

——————————————————————————-
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
——————————————————————————-
(A)gree/(C)ancel: A

Wer Informationen rund um das Projekt erhalten will, bestätigt folgendes ebenfalls mit „Y“

——————————————————————————-
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let’s Encrypt project and the non-profit
organization that develops Certbot? We’d like to send you email about EFF and
our work to encrypt the web, protect its users and defend digital rights.
——————————————————————————-
(Y)es/(N)o: Y

Nachdem nun alles erstellt wurden findet sich folgende Meldung vor, die auch gleichzeitig das Ablaufdatum enthält (Fett markiert), in diesem Fall der 12.06.2017.

IMPORTANT NOTES:
– Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/dasblutderhorde.de/fullchain.pem. Your cert
will expire on 2017-06-12. To obtain a new or tweaked version of
this certificate in the future, simply run letsencrypt-auto again.
To non-interactively renew *all* of your certificates, run
„letsencrypt-auto renew“
– Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
– If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Und somit wurde das Zertifikat erfolgreich erstellt. Alle erforderlichen Zertifikate finden sich nun in „/etc/letsencrypt/live/example.de“ und wir können diese in die vHost integrieren.

Zuerst wird, falls noch nicht geschehen, SSL aktiviert.

a2enmod ssl

Öffne deine vHost Datei, zu finden unter /etc/apache2/site-enable und passe die Werte innerhalb von <VirtualHost> entsprechend an. In diesem Beispiel benutze ich die Standard vHost File „000-default.conf“

Vergesse nicht, <VirtualHost *:80> wird durch <VirtualHost _default_:443> ersetzt und example.de/com durch eure Domain

<VirtualHost _default_:443>
    SSLEngine on
    SSLProtocol all
    SSLCertificateFile /etc/letsencrypt/live/www.example.de/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.example.de/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www.example.de/chain.pem
</VirtualHost>

Das war es auch schon. Eine vollständige vHost Datei wie ich diese im Einsatz habe findet sich unter diesem Beitrag.

Der Webserver muss noch neu gestartet werden „service apache2 restart“ und wenn alles richtig umgesetzt wurde, können wir uns entspannt zurück lehnen und uns über Kostenlose SSL Zertifikate erfreuen.

SSL-Zertifikat von Let’s Encrypt verlängern

Was geschieht nach Ablauf der 90 Tage? Wir erinnern uns, das Zertifikat ist nur 90 Tage gültig und läuft am 12.06.2017 aus. Hier stehen 2 Möglichkeiten zur Verfügung. Entweder manuell oder via Cronjob.

Für die manuell Erneuerung führen wir auf der Console im Verzeichnis /etc/letsencrypt folgenden Befehl aus.

./letsencrypt-auto certonly --apache --renew-by-default -d example.de

Wer die automatische Erneuerung via Cronjob bevorzugt, legt diesen an. Die Console ist nicht jedermanns Sache, daher werde ich die File „/var/spool/cron/crontabs/root“ via WinSCP Öffnen und bearbeiten.

Dort schreiben wir folgenden Befehl rein

0 4 * * * root/letsencrypt/letsencrypt-auto --renew-by-default --apache -d example.de >> /var/log/le-renew.log

So wird immer am 20 eines Monats um 6 Uhr das Zertifikat erneuert.

Das war es auch schon. Wie erwähnt, zur Vollständigkeit noch die komplette vHost Datei.

<VirtualHost _default_:443>
    SSLEngine on
    SSLProtocol all

    SSLCertificateFile /etc/letsencrypt/live/www.example.de/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.example.de/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www.example.de/chain.pem

    ServerName www.example.de
    ServerAlias example.de

    ServerAdmin webmaster@example.de
    DocumentRoot /var/www/example

    ErrorLog ${APACHE_LOG_DIR}/example_error.log
    CustomLog ${APACHE_LOG_DIR}/example_access.log combined

    <Directory /var/www/example>
        AllowOverride All
        Order deny,allow
        Allow from all
    </Directory>

</VirtualHost>