Re: Apache: Zugriffe auf /.well-known/acme-challenge/ für alle VirtualHosts abfangen und umleiten

Autor: Thomas Stiefel <Tom_at_vTux.de>
Datum: Sun, 10 Apr 2016 19:37:53 +0200
Hallo Raphael,

ich kann dir zwar nicht sagen wo der Denkfehler liegt, aber ich habe 
evtl. eine andere Lösung für das Problem. Ich stand vor einer ähnlichen 
Herausforderung und hatte auch keine Lust hier redundant irgendwelche 
Configs und Challange Files zu pflegen.

Ich dachte mir da muss es doch einen anderen Weg geben und am 
sinnvollsten über DNS. Nach etwas Recherche bin ich dann auch auf eine 
passende Lösung gefunden, die noch mehr an Comfort bietet:
https://github.com/lukas2511/letsencrypt.sh
https://github.com/lukas2511/letsencrypt.sh/blob/master/docs/dns-verification.md

Das Script unterstützt nicht nur eine Challange über DNS, sondern 
automatisiert das ganze auch noch. Man muss nur in einer Text-Datei 
(domains.txt) alle (Sub-)Domains inkl. "Alternative Names" eintragen, 
für die man ein Zertifikat benötigt, und das Script führt dann folgende 
Steps durch:
1)
Prüfung, ob ein Zertifikat für die Domain mit allen Alt. Names vorhanden 
ist (kam ein Alt. Name dazu oder ist weggefallen wird ein neues 
Zertifikat erstellt) und ob ob noch ein vorgegebene Zeit (Default: 30 
Tage) gültig ist.
=> Ist das Zertifikat nicht vorhanden oder nicht lange genug gültig wird 
ein neues Zertifikat erstellt bzw. das vorhandene erneuert.
2)
Es wird ein Challenge Token für alle Domains und Alt. Names erstellt und 
als TXT-Eintrag im Nameserver eingetragen.
3)
Es wird ein Zertifikat bei Let's Encrypt beantragt und dann von dort der 
TXT-Eintrag zur Verifikation abgefragt.
4)
Das Zertifikat wird erstellt und signiert.

Ich habe so am Wochenende meine Zertifikate von StartSSL auf Let's 
Encrypt umgestellt. Du muss nur beachten, dass es Limits gibt 
(https://community.letsencrypt.org/t/rate-limits-for-lets-encrypt/6769).

Beispiele für DNS Hook Scripts: 
https://github.com/lukas2511/letsencrypt.sh/wiki/Examples-for-DNS-01-hooks


Viele Grüße
Tom


Am 01.04.2016 um 15:54 schrieb Raphael Eiselstein:
> Hallo zusammen,
>
> ich versuche sinngemäß folgendes zu lösen:
>
> Alle Zugriffe für alle VhirtualHosts eines Apache-Servers sollen
> grundsätzlich nicht im jeweiligen VirtualHost Context verarbeitet werden
> sondern global abgefangen und umgeleitet werden.
>
> Hintergrund ist, dass ich auf einem Webserver etwa 27 VirtualHosts habe,
> die allesamt nur Reverse Proxies sind, d.h. es gibt für diese VirtualHosts
> kein DocumentRoot. Für "Let's encrypt" brauche ich aber die Möglichkeit,
> Dateien über http://www.example.com/.well-known/acme-challenge/xyz.txt
> auszuliefern. Ergo will ich alle Zugriffe, die auf diesem Reverse-Proxy
> Server ankommen und mit /.well-known/acme-challenge/ anfangen vorher
> wegfischen und umleiten an einem internen VHost
> http://acme.sigsys.lan/www.example.com/xyz.txt
>
>
> Im gobalen server context habe ich dazu folgenden Versuch gestartet:
>
> --------------------------
>          RewriteEngine on
>
>          RewriteCond "%{HTTP_HOST}" "^(.*)$"
>          RewriteCond "%{REQUEST_URI}" "^/.well-known/acme-challenge/(.*)"
>          RewriteRule "^/.well-known/acme-challenge/(.*)" "http://acme.sigsys.lan/%1/%2" [P]
>
>          RewriteOptions InheritDown
> --------------------------
>
> * Das erste RewriteCond verwende ich nur, um für das RewriteRule ein "%1"
> zu erhalten, also www.example.com oder www.anotherhost.example.com
>
> * Das zweite RewriteCond soll alles fangen, was hinter
>    /.well-known/acme-challenge/ kommt und in %2 speichern, also das
>    "xyz.txt" im obigen  Beispiel.
>
> Das gleiche habe ich auch nochmal in RewriteRule stehen, das wäre dann
> als "$1" statt "%2" verfügbar, entsprechend ebenfalls "xyz.txt".
>
> "RewriteOptions InheritDown" soll angeblich bewirken, dass die
> rewrite-Rules in die Vhosts "vererbt" werden, ähnlich als würde ich in
> allen VirtualHosts jeweils "RewriteOptions Inherit" verwenden, was die
> Reqrite-Regeln aus dem Server-Context "erben" soll.
>
> Mein Problem ist, dass obiges nicht funktioniert, es ergibt nicht einmal
> Fehlermeldungen. Die VirtualHosts reichen die Zugriffe auf
> /.well-known/acme-challenge/xyz.txt per ProxyPass an die Backend-Server
> durch was in diesem Fall Blödsinn ist.
>
> Wo liegt mein Denkfehler?
>
>
> Gruß
> Raphael
>
>
>

-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/
Empfangen am 10.04.2016

Dieses Archiv wurde generiert von hypermail 2.2.0 : 10.04.2016 CEST