This project will shut down in ist current form.
Learn more here: Our future within the WoltLab ecosystem
  • Hallo,


    Ich habe auf meinem Debian 8 System, nginx in der mainline v. 1.9.10 installiert.
    Dazu verwende ich letsencrypt und erstelle meine "test" Zertifikate.


    Dabei ist mir folgendes aufgefallen:


    Szenario 1


    Nginx läuft und ist für http anfragen konfiguriert.


    Code
    server {
    listen 80;
    server_name example.com;


    root /var/www/htdocs/example;
    }


    Während des erstell Prozesses soll man ein dokument erstellen das erreichbar sein soll.
    printf "%s" 3zDyfnJ9_-O0W5Z27HnjHVJ45rDFYKQk9fD8WiZmMLg.uc40gpsoIIKilDkPs9SX6r2bqH2yH_MjbvpHwn2AFFo > /var/www/htdocs/example/.well-known/acme-challenge/3zDyfnJ9_-O0W5Z27HnjHVJ45rDFYKQk9fD8WiZmMLg


    bekomme ich folgende ausgabe mit
    curl -i [url]http://example.com/.well-known/acme-challenge/3zDyfnJ9_-O0W5Z27HnjHVJ45rDFYKQk9fD8WiZmMLg[/url]
    Ausgabe:



    Das Zertifikat ist aufrufbar und die Erstellung kann erfolgreich beendet werden.


    Szenario 2 mit anderer Server config.


    Weiterleitung auf https:// mit return 301 […]



    Als ausgabe von curl -i [url]http://example.com/.well-known/acme-challenge/3zDyfnJ9_-O0W5Z27HnjHVJ45rDFYKQk9fD8WiZmMLg[/url] kommt nun:



    Letsencrypt spuckt folgendes aus:

    Code
    Unable to reach
    http://christoph-neumann.org/.well-known/acme-challenge/8Cq8y_oiKfnn9kCtTqSZFDkq7DuF_MI9e9MvBwIRMO8: ("bad handshake: Error([('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')],)",)
    Self-verify of challenge failed.


    Code
    IMPORTANT NOTES:
     - Congratulations! Your certificate and chain have been saved at
       /etc/letsencrypt/live/example.com/fullchain.pem. Your
       cert will expire on 2016-05-08. To obtain a new version of the
       certificate in the future, simply run Let's Encrypt again.
     - If you like Let's Encrypt, please consider supporting our work by:
    
    
       Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
       Donating to EFF:                    https://eff.org/donate-le


    Also wird es ja erstellt.


    Wenn ich jetzt aber return 301 [url]https://example.com[/url]$request_uri; auskommentiere, kann das Zertifikat ohne Probleme erstellt werden.


    Was mich noch mehr verwundert ist das verhalten von nginx im Browser. Sobald man http://example.com eingibt, wird automatisch auf https://example.com weitergeleitet. Obwohl die Weiterleitung ja auskommentiert ist?


    Meine Frage ist also wie konfiguriere ich ngnix so, dass es keine Probleme mehr gibt?
    Und muss man überhaupt Port 80 anfragen weiterleiten wenn nginx insofern Port 443 konfiguriert wurde den Anschein macht es selber weiter zuleiten?


    Grüße
    Chris

    • Official Post

    Beim ersten Ausstellen eines korrekten und vertrauenswürdigen Zertifikats ist zwingend die Verbindung per HTTP notwendig. Der Fehler, der bei dir kommt, gibt lediglich an, dass das SSL-Zertifikat fehlerhaft ist, was klar ist, da es kein vertrauenswürdiges ist.
    Ich habe eine ähnliche Einstellung, also eine automatische Weiterleitung auf HTTPS, kann aber ein Zertifikat auch so problemlos erneuern.


    Zum Problem bezüglich der Weiterleitung, auch wenn sie im Webserver nicht mehr hinterlegt ist:
    Der Browser cacht das. Insbesondere Firefox. Cache löschen oder einen anderen Browser testweise nutzen sollte das verifizieren können.