Jump to content
Froxlor Forum
  • 0

Henne-Ei Problem bei DocumentRoot = URI und LE


rseffner

Question

Guten Morgen,

wenn ich eine Domain nur für http angelegt habe und im DocumentRoot statt einem absoluten/relativen Pfad eine URI (https://domain.tld/" steht und ich dann SSL mit LetsEncrypt machen lassen möchte, wird durch den cron-Job zuerst LE gefragt - was scheitert, weil domain.tld das verify nicht bedient - und dann erst im VHost die rewrite-Ausnahme für die challenge bei Redirect eingetragen. Ein erneuter cron-Lauf oder der acme.sh-Job allein lösen das Problem nicht auf. Erst die Funktion "config neuschreiben" löst den Knoten.

Vielleicht könnte man hier die Reihenfolge der Arbeitsschritte überdenken. Erst VHost, dann zu LE anfragen.

 

btw.

Trage ich hingegen das Weiterleitungsziel selber in die VHost-Einstellungen ein (z.B. "Redirect 301 / https://domain.tld/"), dann legt Froxlor NICHT automagisch eine Ausnahme an, wenn man LE aktiviert. Das muss wohl so sein, weil es ja nicht weiß, was der admin da im VHost verzapft hat und ob das vielleicht Sinn macht und auch die challange mit abdecken kann.

Was passiert eigentlich, wenn man sich für AliasDomain entscheidet und dann für Quelle und Ziel LE aktiviert? Wird da ein entsprechendes SAN-Zertifikat generiert?

 

Ich danke für Aufklärung.

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

es greift doch erstmal der globale alias auf /.well-known/acme-challenge/ - hast du den nicht eingerichtet (/etc/apache2/conf-enabled/acme.conf)

5 minutes ago, rseffner said:

Vielleicht könnte man hier die Reihenfolge der Arbeitsschritte überdenken. Erst VHost, dann zu LE anfragen.

Hast du "SSL Redirect" nicht aktiviert? Normal legt er natürlich erst den vhost an und versucht dann ein Certificate zu bekommen - macht ja sonst keinen Sinn.

 

5 minutes ago, rseffner said:

Ein erneuter cron-Lauf oder der acme.sh-Job allein lösen das Problem nicht auf. Erst die Funktion "config neuschreiben" löst den Knoten.

"config neuschreiben" ist nichts anderes als ein cronlauf...außer das er natürlich forciert das die vhosts neu erstellt werden durch das einfügen einen entsprechenden Tasks

 

5 minutes ago, rseffner said:

Was passiert eigentlich, wenn man sich für AliasDomain entscheidet und dann für Quelle und Ziel LE aktiviert? Wird da ein entsprechendes SAN-Zertifikat generiert?

ja, da die AliasDomain bestandteil des vhosts der "haupt"domain ist, die wird mit in die SAN Liste eingetragen

Link to comment
Share on other sites

  • 0
7 minutes ago, rseffner said:

Trage ich hingegen das Weiterleitungsziel selber in die VHost-Einstellungen ein (z.B. "Redirect 301 / https://domain.tld/"), dann legt Froxlor NICHT automagisch eine Ausnahme an, wenn man LE aktiviert. Das muss wohl so sein, weil es ja nicht weiß, was der admin da im VHost verzapft hat und ob das vielleicht Sinn macht und auch die challange mit abdecken kann.

Eh nein, das ist nicht so. Das hängt allein von der Option "SSL Redirect" ab

Ein "einfacherer" Weg ist in so einem Fall einfach: Leg die Domain an, warte bis der Vhost erstellt ist, aktiviere dann Let's Encrypt. 

Link to comment
Share on other sites

  • 0
Quote

es greift doch erstmal der globale alias auf /.well-known/acme-challenge/ - hast du den nicht eingerichtet (/etc/apache2/conf-enabled/acme.conf)

Doch, der globale Alias IST eingerichtet als acme.conf in /etc/apache2/conf-available und verlinkt nach conf-enabled. apache2ctl --configtest hat auch nichts zu meckern. ohne diese acme.conf hat die Validierung ja nicht geklappt, weil man per http-Requst nicht ans secret kam.

Quote

Hast du "SSL Redirect" nicht aktiviert? Normal legt er natürlich erst den vhost an und versucht dann ein Certificate zu bekommen - macht ja sonst keinen Sinn.

Nein ich habe SSL-Redirect nicht aktiviert in dem Zustand in dem ich das Verhalten hatte und beschrieb.

Quote

"config neuschreiben" ist nichts anderes als ein cronlauf...außer das er natürlich forciert das die vhosts neu erstellt werden durch das einfügen einen entsprechenden Tasks

Das ist der entscheidende Unterschied dann, dass das Flag gesetzt ist "mach wirklich was". Denn nur den Job zu triggern führt beim n-ten Durchluaf ja nur zu Erkenntnis es wäre nichts zu tun.

Quote

ja, da die AliasDomain bestandteil des vhosts der "haupt"domain ist, die wird mit in die SAN Liste eingetragen

Dann kann ich mir die ganze Zertifikate sparen und einfach 20 mal die selbe AliasDomain setzen und die bekommt dann ein Zertifikat für 21 Namen?

 

Dennoch habe ich reproduzierbar beobachtet, dass:

- wenn eine http-only domain bereits angelegt ist
- man SSL und LE aktiviert
- dabei als DocumentRoot eine URI einstellt
- der cron-job läuft
- ZUERST LE gefragt wird und nicht verifizieren kann weil am Ziel (DocumentRoot) keiner das secret hat
- DANN erst die VHosts neu gebaut werden und die RedirectAusnahme enthalten
- der globale well-known Alias offenbar einem Redirect nachgeordnet behandelt wird

Ohne weitere Abhängigkeiten zu kennen, sollte die LE-Routine im cron-job meiner Meinung nach erst laufen, wenn die VHosts erstellt sind und apache2 reloaded wurde.

Quote

Eh nein, das ist nicht so. Das hängt allein von der Option "SSL Redirect" ab

Ein "einfacherer" Weg ist in so einem Fall einfach: Leg die Domain an, warte bis der Vhost erstellt ist, aktiviere dann Let's Encrypt. 

Hier reden wir wohl aneinander vorbei. Der http-only-VHost WAR bereits erstellt.

Link to comment
Share on other sites

  • 0
16 minutes ago, rseffner said:

Dann kann ich mir die ganze Zertifikate sparen und einfach 20 mal die selbe AliasDomain setzen und die bekommt dann ein Zertifikat für 21 Namen?

wenn du alle 20 domains auf den gleichen docroot zeigen lassen willst - ja, wobei ich mir sicher bin das es auch grenzen gibt von Let's Encrypt, näheres dazu ist dort in den ratelimits sicher zu finden

19 minutes ago, rseffner said:

Hier reden wir wohl aneinander vorbei. Der http-only-VHost WAR bereits erstellt.

aber ohne redirect :P im redirect mit mod_rewrite steht sowas wie:

  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R=301;L,NE]
  </IfModule>

 

Ich werde mir den workflow da auf jeden Fall mal ansehen. Das ist halt je nach Ablauf notwendig erst den vHost zu erstellen oder eben erst das Zertifikat (um es nämlich dann in den neuzuerstellenden vhost zu schreiben). ich bin sicher ich kann das mit Hilfe deiner Beschreibung so auch nachstellen und das Problem ggfls beheben.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×
×
  • Create New...