2016-06-02 6 views
6

Ich verwende die folgenden nginx.confDocker Nginx klagt: SSL: Fehler: 02001002

worker_processes 1; 


events { 
worker_connections 1024; 
} 

http { 
include  mime.types; 

default_type application/octet-stream; 

sendfile  on; 

keepalive_timeout 65; 

gzip on; 
gzip_disable "msie6"; 
gzip_vary on; 
gzip_proxied any; 
gzip_comp_level 6; 
gzip_buffers 16 8k; 
gzip_http_version 1.1; 
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; 

server { 
    listen   80; 
    server_name mydomain.org; 
    return   301 https://$server_name$request_uri; 
} 


server { 

    listen 443 ssl http2; 
    ssl_certificate /etc/letsencrypt/live/mydomain.org/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/mydomain.org/privkey.pem; 
    ssl_session_timeout 1d; 
    ssl_session_cache shared:SSL:50m; 
    ssl_session_tickets off; 

    ssl_protocols TLSv1.1 TLSv1.2; 
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK'; 
    ssl_prefer_server_ciphers on; 
    ssl_dhparam /etc/nginx/certs/dhparam.pem; 

    add_header Strict-Transport-Security max-age=15768000; 

    ssl_stapling on; 
    ssl_stapling_verify on; 


    ssl_trusted_certificate /etc/letsencrypt/live/mydomain.org/chain.pem; 

    resolver 8.8.8.8 8.8.4.4 valid=86400; 

    root /var/www/html; 
    index index.php; 
    location/{ 
    try_files $uri $uri/ /index.php?$args; 
    } 

    rewrite /wp-admin$ $scheme://$host$uri/ permanent; 

    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { 
    access_log off; log_not_found off; expires max; 
    } 

    location ~ [^/]\.php(/|$) { 
    fastcgi_split_path_info ^(.+?\.php)(/.*)$; 
    if (!-f $document_root$fastcgi_script_name) { 
     return 404; 
    } 
     root   /var/www/html; 
     fastcgi_pass wp_db:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; 
     include  fastcgi_params; 
    }  
} 
} 

Aber nginx Behälter klagt mit:

nginx: [emerg] BIO_new_file("/etc/letsencrypt/live/mydomain.org/fullchain.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/mydomain.org/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file) 

Ich habe alle Zertifikate auf diesem Weg für Lassen Sie uns encrypt . Ich fand diesen Thread https://serverfault.com/questions/537343/nginx-startup-fails-ssl-no-such-file-or-directory

Und hat

chown -R root:root /etc/letsencrypt/live/mydomain.org/fullchain.pem 
chmod -R 600 /etc/letsencrypt/live/mydomain.org/fullchain.pem 

gleichen Fehler aus nginx Container geworfen wurde. Ich habe die Zertifikate auf /docker-compose/etc/nginx/certs platziert, die die gleichen Berechtigungen geben und Links auf nging.conf ändern, aber nichts hat sich geändert.

Was ich vermisse?

+0

Ich habe das gleiche Problem. Verwenden Sie die Betaversion von Docker für Windows? – styfle

+0

Ich verwende Docker unter Debian 8. Ich benutze jetzt [https-portal] (https://github.com/SteveLTN/https-portal) und [letsencrypt-nginx-proxy-companion] (https: // github.com/JrCs/docker-letsencrypt-nginx-proxy-companion) beide ohne Probleme arbeiten. – berzas

Antwort

4

ich erleben das gleiche Problem der Bereitstellung von Hafen (a Docker Registry + Zugriffskontrolle UI) mit Volumen-Mapping/etc/letsencrypt:/etc/letsencrypt

nginx "keine solche Datei" gemeldet, wenn die Zertifikatsdatei laden, obwohl ich diesen Container (docker exec bash ..) eingeben und die Dateien mit dem gleichen Pfad catchen konnte.

Ich vermuten, das Problem durch letsencrypt Verwendung von Symlinks verursacht wird, so war meine Lösung, um den Live-Zert in einer anderen Ordner mit cp -rl (de-Referenz Symlinks)

[email protected]:/etc/letsencrypt# mkdir copy 
[email protected]:/etc/letsencrypt# cp -rL live/* copy/ 

dann änderte ich das kopieren nginx.conf bezieht sich auf 'Kopieren' anstelle von 'Live'

Jetzt startet nginx korrekt im Docker.

Dies ist keine langfristige Lösung, denn wenn die Zertifikate erneuert werden, wird die Kopie nicht automatisch aktualisiert. Aber da ich Letsencrypt von einem Cronjob erneuern lassen, kann diese Aufgabe den Kopiervorgang erneut ausführen.

Auch ich habe gelesen, dass nginx muss neu gestartet werden, wenn die certs ändern, so dass ein anderes Problem ist, muss ich konfrontiert werden. Aber zumindest Nginx startet jetzt korrekt.

+0

Danke dafür. Ich habe dieses Problem immer noch im März 2017. Seltsam, dass dies nicht von Letsencrypt/Docker angesprochen wurde. – jonbaldie

-1

Ich verschwendete heute einen Tag und fand die Lösung.

Run nginx Docker Motor mit

-v /etc/letsencrypt/archive/your_domain.com:/nginx/letsencrypt/your_domain.com

und nginx.conf

ssl_certificate /nginx/letsencrypt/your_domain.com/fullchain1.pem; ssl_certificate_key /nginx/letsencrypt/your_domain.com/privkey1.pem;

+0

Nicht sicher, warum dies abgelehnt wurde?Die Symlinks im Live-Punkt zum Archiv –

+0

@RonniSkansing Ich denke downvoted ist richtig! Weil in der nächsten Erneuerung, die neuen Zertifikate werden fullchain2, prikey2, ... Dieser Name machen die Config falsch. Meine Idee ist schlecht! :( – Shinichi