Let’s Encrypt Zertifikate und Apache Reverse Proxy
Solltet ihr auf eurem Server Web-Services betreiben, die über einen Reverse Proxy von Apache angebunden sind und ihr wollt eure HTTPS-Only-Domains trotzdem automatisiert via Let’s Encrypt schützen lassen, dann könnte euch die folgende kleine mod_proxy Direktive vielleicht helfen.
Vorab kurz ein paar Worte zu meinem Setup. Ich habe einige Subdomains für selbst geschriebene Web-Services, die ich nur via HTTPS ansprechen möchte (automatische 3xx Weiterleitung für alle HTTP Requests). Für HTTPS Requests habe ich daher via mod_proxy die entsprechenden Weiterleitungen festgelegt, um die jeweiligen Web-Services via Apache Reverse Proxy verfügbar zu machen. Die SSL Zertifikate gibt es via Let’s Encrypt.
Nun kollidiert dieses Setup aber mit der automatischen Erneuerung von Let’s Encrypt Zertifikaten. Grund dafür ist der notwendige Zugriff des Let’s Encrypt Toolings auf den .well-known
Ordner.
Die Lösung des Problems ist folgende Konfiguration:
<Location "/">
ProxyPass "http://localhost:1337/"
ProxyPassReverse "http://localhost:1337/"
</Location>
<Location "/.well-known">
ProxyPass "!"
</Location>
Im ersten Location Bereich (<Location "/">
) wird festgelegt wie der eigentliche Web-Service angebunden werden soll. Hier müsst ihr entsprechend eure spezifische Konfiguration eintragen.
Der zweite Location Bereich (<Location "/.well-known">
) ist der relevante Part für Let’s Encrypt. Hier wird mittels ProxyPass "!"
eine Ausnahme vom Reverse Proxy für Requests gegen den .well-known
Ordner definiert. Auf diese Weise kommen alle relevanten Requests bei eurem Web-Service an und das Let’s Encrypt Tooling sollte ebenfalls in der Lage sein ordnungsgemäß zu funktionieren.
Bei mir ist das genannte Setup aktuell erfolgreich in Nutzung. Falls ihr weitergehende Informationen zur mod_proxy Konfiguration braucht, verlinke ich euch die dazugehörige Dokumentation in den Related Links.