[Tip] Zentraler Let's Encrypt-Server mit Reverse Proxy

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

[Tip] Zentraler Let's Encrypt-Server mit Reverse Proxy

Beitrag von heisenberg » 31.01.2018 08:08:19

Hi,

ich habe hier gerade eine Umgebung, wo recht veraltete Betriebssysteme(Natürlich ist das Mist!) im Einsatz sind. D. h. da geht let's Encrypt nur mit grossen Schwierigkeiten.

D. h. ich habe mir mal die Möglichkeit angeschaut, wie ich - auf allen Seiten mit Apache im Einsatz - per Reverse-Proxy alle Let's Encrypt - Request zu einer zentralen VM umleiten kann, die so dann für alle Server Zertifikate erzeugen kann. Das ging einfacher als gedacht.

Hier mal als vorläufige Kurzanleitung für Stretch als LE-Server und im Beispiel ein halbwegs aktuelles Debian als Webserver, auf dem die Domain liegt:

A. Den Let's Encrypt server vorbereiten
  1. Den Server mit aktuellem Debian/Ubuntu installieren und Debianapache2
  2. Das Paket Debianletsencrypt installieren.
  3. Ein Verzeichnis für lets Encrypt erstellen install -d -m 0755 -g www-data -o www-data /var/www/acme-challenge
  4. Eine Apache - Konfiguration(Vhost-übergreifend) erstellen in /etc/conf-available/certbot.conf

    Code: Alles auswählen

    <IfModule mod_headers.c>
                    Alias "/.well-known/acme-challenge/" "/var/www/acme-challenge/.well-known/acme-challenge/"
                    <Directory "/var/www/acme-challenge/">
                            Allow from all
                            AllowOverride None
                            Options FollowSymLinks
                    </Directory>
    </IfModule>
    
  5. Konfig aktivieren: a2enconf certbot
  6. Apache headers modul aktivieren a2enmod headers
  7. Apache neustarten systemctl restart apache2
B. Den Webserver vorbereiten
Jetzt wird der Webserver vorbereitet, auf dem die Domain derzeit eingerichtet ist.
  • Neue Vhost-übergreifende Konfiguration erstellen in /etc/apache2/conf-available/certbot_reverse_proxy.conf

    Code: Alles auswählen

    <Location "/.well-known/acme-challenge/">
          Allow From All
          ProxyPass         http://mein-letsencrypt-server.domain.tld/.well-known/acme-challenge/
          ProxyPassReverse http://mein-letsencrypt-server.domain.tld/.well-known/acme-challenge/
    </Location>
  • Konfig aktivieren: a2enconf certbot_reverse_proxy
  • Apache Module aktivieren(weiss nicht ob die wirklich alle nötig sind):
    a2enmod proxy proxy_http rewrite deflate headers proxy_connect proxy_html headers
  • Apache neu starten
Fertig. Damit dürfte man jetzt mit folgendem Kommando auf dem Let's Encrypt Server(Stretch) ein Zertifikat generieren können:

Code: Alles auswählen

letsencrypt certonly --webroot -d meinedomain.de -d www.meinedomain.de  -w /var/www/acme-challenge
Hinweise
  • Nachdem auf dem Webserver alle Requests auf den Let's Encrypt Server weitergeleitet werden, funktioniert auf dem Webserver keine sonstige Let's Encrypt Software mehr.
  • Die Direktive Allow From All ist in neuen Apache Versionen ohne das Apache-Modul access_compat zu ersetzen durch Require all Granted
  • Vor jeder Neustart des Apache-Webservers ist grundsätzlich ein apachectl configtest zu empfehlen. Damit vermeidet man sehr einfach, dass ein Webserver wegen Konfigurationsfehlern erst mal down ist.
  • Im Übrigen empfehle ich auch die Verwendung von etckeeper um schnell fehlerhafte Konfiguration rückgängig machen zu können.
Wer Lust hat kann da natürlich gerne auch einen etwas schönerern Wiki-Artikel draus machen.
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

Antworten