Let’s encrypt: Plugin ‘webroot’

The big Picture
The big Picture

Der Aufbau

Let’s Encrypt Client

Der Let’s Encrypt Client läuft auf dem gleichen Server wie ein vom SSL-Terminator erreichbarer Webserver.

SSL-Terminator / HTTP(S)-Proxy

Der SSL-Terminator ist ein Webserver, der

Puppet

Ist das Werkzeug der Wahl, um den SSL-Terminator zu konfigurieren.

Der Ablauf

  1. Der Let’s Encrypt Client schickt einen CSR zum Let’s Encrypt Server
  2. Der Let’s Encrypt Server schickt alle Daten für die Challenge zurück
    1. Das Let’s Encrypt Client Plugin webroot speichert diese Daten lokal im Web-Root Verzeichnis
    2. Der Let’s Encrypt Client schickt dem Let’s Encrypt Server die Nachricht, dass er jetzt bereit sei für die Überprüfung.
    3. Der Let’s Encrypt Server schickt einen HTTP GET an den SSL-Terminator.
    4. Der SSL-Terminator leitet die Anfrage an den Webserver weiter, auf dem der Let’s Encrypt Client die Daten für die Challenge abgelegt hat.
  3. Der Let’s Encrypt Server schickt das signierte Zertifikat.
    1. Der Let’s Encrypt Client speichert das Zertifikat samt Private Key in einem Repository, das vom Puppet erreicht werden kann.
  4. Puppet rollt das Zertifikat auf dem SSL-Terminator aus.
export http_proxy="http://myproxy:3128/"
export https_proxy="http://myproxy:3128/"
mkdir -p ./sshfs_mount
sshfs -o allow_root mywebserver:/var/www/www.failover.de/ ./sshfs_mount/
cd examples && ./my_generate-csr.sh www.failover.de failover.de ; cd -
sudo ./letsencrypt-auto certonly --renew-by-default --agree-tos -a webroot --webroot-path ./sshfs_mount/ --csr ./examples/CSR/www.failover.de.csr.der -d failover.de -d www.failover.de --cert-path ./examples/CRT/
fusermount -u ./sshfs_mount
rm -r ./sshfs_mount

Howto Let’s Encrypt