Lets Encrypt - mehrere Domains, verschiedene DocumentRoot mit Port 443

  • Hallo zusammen,


    ich habe mir per Let's Encrypt ein kostenloses SSL Zertifikat erstellt.

    Hat mit mehreren Domains auch super funktioniert bisher.


    Jetzt möchte ich zusätzliche Subdomains einrichten, die allerdings auf einen anderen DocumentRoot verweisen.

    Sobald ich aber bei den config-Dateien den Port auf 443 einstelle, wird immer das zuletzt aktivierte aktiv geschaltet und das vorherige ist "nicht sicher".


    Code
    <VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/NAME/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/NAME/privkey.pem
    
        ServerAdmin email@NAME.com
        ServerName NAME
        DocumentRoot /var/customers/webs/PFAD
    </VirtualHost>

    So sind alle meine Config-Dateien aufgebaut, lediglich NAME und PFAD unterscheiden sich.

    (Die Zertifikate sind alle vorhanden.)


    Hat jemand eine Idee, wo mein Problem liegt und was ich machen muss, damit es läuft?

    Die Configs liegen unter /etc/apache2/sites-available.


    Liebe Grüße,

    Shirisu

  • Ich habe schon ewig keine Apache Konfiguration mehr angerührt, aber hast Du einen NameVirtualHost für Port 443? Ansonsten wird SNI nicht funktionieren.

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Hallo,


    ich habe bei mir Apache mit SNI im Einsatz;

    damit SNI funktioniert muss folgendes in der SSL-config aktiviert sein


    Code
    SSLStrictSNIVHostCheck on

    so sieht bei mir die gesamte globale SSL-config aus

    florian2833z : bei ServerAlias gibt man nur die Hosts an, welche als Alias dienen, und im selben Zertifikat in der x509v3 SAN-Erweiterung gelistet sind; mit Ausnahme des Hosts, welcher im CN des Zertifika- Subject angebenen ist, dieser ist im ServerName angegeben;


    Hinweis: beim ServerAlias darf kein Port angegeben werden, beim ServerName aber schon;

    ist der ServerName vom CN im Zertifkat-Subject verschieden, ergibt dies bei jedem Start des Servers einen Fehler im Log;

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • Hallo mainziman,


    danke für die Hilfe - leider finde ich bei mir keine globale SSL-Config.

    Wo genau sollte die denn sein?
    Ggf. fehlt mir diese ja noch komplett.. ?


    Müssen die Conf-Dateien eigentlich .conf heißen?

    Aktuell haben die keine Dateiendung bei mir, so wie default und default-ssl.

    Aber das funktioniert mit den Hauptdomains soweit ja auch ohne Probleme, nur eben die Subdomains, die auf andere Unterordner linken, gehen nicht mit dem Port :/


    NameVirtualHost habe ich auch schon probiert, das hat aber auch nicht funktioniert.

    Da habe ich einfach folgendes gemacht:

    Code
    NameVirtualHost *:443
    <VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/NAME/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/NAME/privkey.pem
        ServerAdmin email@NAME.com
        ServerName NAME
        DocumentRoot /var/customers/webs/PFAD
    </VirtualHost>

    Das hat aber wie gesagt leider auch nicht funktioniert :(


    Dennoch euch allen schon einmal vielen Dank für die Antworten und Ideen!

  • @03simon10

    Danke für die Info :)


    Ich hab nun in der default-ssl folgendes gemacht:

    Code
    <VirtualHost _default_:443>

    geändert in

    Code
    <VirtualHost *:443>

    und dann in meinen beiden Config-Dateien den Port auf 443.


    Dann wollte ich den apache neustarten und es kam folgende Meldung:

    Zitat

    [warn] _default_ VirtualHost overlap on port 443, the first has precedence

    Und es funktionierte wieder nur eine von beiden Config-Dateien.

  • @03simon10 im Prinzip ja, Du musst sie nur in die Haupt-Config integrieren ...


    Shirisu das hängt leider von der Linux Distri ab, keine Gewähr, daß folgendes bei Dir so gilt:


    bei mir befindet sich unter /etc/httpd die Apache Configuration

    und hier 2 Ordner ein conf und ein conf.d

    unter conf.d befinden sich Files wie

    - geoip.conf (Config. des GeoIP Moduls)

    - perl.conf (Config des PERL Moduls)

    - php.conf

    - phpMyAdmin.conf

    - ssl.conf (die globale SSL-Config. wie oben bereits beschrieben)


    unter conf

    befindet sich die eigentliche Konfiguration

    der File httpd.conf (/etc/httpd/conf/httpd.conf) sieht schematisch so aus:

    vhost-host.conf sieht z.B. so aus ...

    das deshalb weiter verschachtelt, weil wegen DualStack man die Config des vHost jeweils f. IP und IPv6 braucht

    vhost-host.incl sieht so aus

    wie der File vhost-hostssl.conf aussieht sollte klar sein, der .incl sieht so aus


    Code
    ... analog darüber plus
    Header always set Strict-Transport-Security 'max-age=31536000; preload'
    Header always set Public-Key-Pins: 'max-age=31536000; pin-sha256="..."; pin-sha256="..."; report-uri="https://.../"'
    
    SSLEngine on
    SSLCertificateFile /etc/httpd/conf/ssl.crt/DOMAIN-host.crt
    SSLCertificateKeyFile /etc/httpd/conf/ssl.key/DOMAIN-host.key
    SSLCertificateChainFile /etc/httpd/conf/ssl.crt/server-chain-letsencrypt.crt

    wie gesagt das Zertifikat hat im CN den selben DNSnamen wie im ServerName unter <VirtualHost>


    testen kannst Du Deine Config evtl. mit http://www.ssllabs.com vlt. kommt hier etwas heraus,

    was Dir weiterhilft ...

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • Hmmm, scheinbar habe ich keinen httpd-Ordner - lediglich von /opt/eff.org/ bzw /opt/letsencrypt/ und dort in "tests" - das kann ja eigentlich nicht das richtige sein.


    Das ist alles sehr seltsam ?(

    Leider hilft mir die Seite auch nicht weiter - bei dem es nicht funktioniert kommt

    Zitat

    Certificate name mismatch

    raus.

    Bzw er greift halt auf das "Hauptssl" zu und da passen natürlich die Namen nicht zusammen dann (klar, ich hab den Port auch aktuell bei dem einen nicht auf 443, weil sonst die Seite an sich nicht mehr funktioniert).

  • Hi,


    also bei mir unter Ubuntu hat der certbot folgendes hinzugefügt in der Virtualhost Datei:


    Code
    SSLCertificateFile /etc/letsencrypt/live/crazyants.de/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/crazyants.de/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf


    Evtl. hilft es.


    wie öffnest Du die Seiten? Gibst Du explizit https:// an, oder gibst nur die domain ein? Wenn Du nur die Domain eingibst, musst Du schauen, dass die Weiterleitung von Port 80 auf 443 auch ordentlich konfiguriert ist.


    mfg


    Andy

  • Shirisu das deutet darauf hin, daß Du zwar einen 2ten vHost mit SSL hast,

    nirgends aber eingestellt ist, daß SNI verwendet wird,

    und somit das Zertifikat vom 1ten vHost mit SSL genommen wird, und genau das passt nicht;

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • Was steht denn bei dir in der options-ssl-apache.conf?

    Die existiert bei mir leider nicht :/


    mainziman

    Leider gibt es auch unter /etc/apache2 keinen httpd Ordner, also ich hab den ganzen Server danach durchsucht und habe die wie gesagt nur in den 2 Test-Ordnern gefunden.


    Hmmm.

    Code
    SSLStrictSNIVHostCheck on

    Den Wert habe ich allerdings auf on gestellt, da wo ich ihn finden konnte - hat leider auch nichts geändert.


    Ich habe in der .htaccess eine Weiterleitung eingebaut von http auf https - oder ist das eher eine schlechte Variante dafür?

  • Das steht in de roptions-ssl-apache.com:


    Ne eine Weiterleitung ist schon sinnvoll, weil ja die Leute oft nur die domain ohne https eingeben, dann wird standardmäßig versucht zuerst auf port 80 zu gehen.

  • Ja das ist sowas wie die globalen SSL-Settings, die losgelöst von virtuellen Hosts sind;

    wobei ein "SSLStrictSNIVHostCheck on" sollte hier zu finden sein, wenn SNI eine Rolle spielt;

    Cictani was soll "SSLOptions +StrictRequire" bewirken?

    Grüße / Greetings

    Walter H.


    RS, VPS, Webhosting - was man halt so braucht;)

  • Ich habe den CertBot machen lassen, aber hier aus der Apache Docu:


    • StrictRequire

      This forces forbidden access when SSLRequireSSL or SSLRequire successfully decided that access should be forbidden. Usually the default is that in the case where a ``Satisfy any'' directive is used, and other access restrictions are passed, denial of access due to SSLRequireSSL or SSLRequire is overridden (because that's how the Apache Satisfy mechanism should work.) But for strict access restriction you can use SSLRequireSSL and/or SSLRequire in combination with an ``SSLOptions +StrictRequire''. Then an additional ``Satisfy Any'' has no chance once mod_ssl has decided to deny access.

    Danke für den Hinweis mit SSLStrictSNIVHostCheck jetzt funktioniert auch die Weiterleitung von http://www.domain.de auf https://comain.de korrekt. Die Option war bei mir global auch auskommentiert und habe sie jetzt drin.

  • Hey, danke euch allen für die Tipps!


    Leider bin ich bisher nicht weiter voran gekommen - "SSLStrictSNIVHostCheck" ist auf on in der /etc/apache2/mods-available/ssl.conf:


    /etc/apache2/ports.conf:

    Sobald ich hier zusätzlich Listen 443 hinzufüge, ist keine der Domains erreichbar.