2016-06-02 36 views
6

Sto utilizzando il seguente nginx.confDocker Nginx lamenta: SSL: errore: 02.001.002

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; 
    }  
} 
} 

Ma nginx contenitore si lamenta con:

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) 

ho tutti i certificati sul quel percorso per crittografare di let . Ho trovato questa discussione https://serverfault.com/questions/537343/nginx-startup-fails-ssl-no-such-file-or-directory

E fatto

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

stesso errore è stato gettato da nginx contenitore. Ho inserito i certificati su /docker-compose/etc/nginx/certs dando le stesse autorizzazioni e i collegamenti che cambiano su nging.conf ma non è cambiato nulla.

Cosa mi manca?

+0

Ho lo stesso problema. Stai utilizzando la versione beta di Docker per Windows? – styfle

+0

Sto usando Docker su Debian 8. Sto usando ora [https-portal] (https://github.com/SteveLTN/https-portal) e [letsencrypt-nginx-proxy-companion] (https: // github.com/JrCs/docker-letsencrypt-nginx-proxy-companion) funzionano entrambi senza problemi. – berzas

risposta

4

stavo sperimentando lo stesso problema distribuzione di porto (un Registro di sistema finestra mobile + il controllo di accesso utente) utilizzando mappatura del volume/etc/letsencrypt:/etc/letsencrypt

nginx ha riferito "No such file" durante il caricamento del file del certificato, anche se potrei entrare in quel container (docker exec bash ..) e cat i file usando lo stesso identico percorso.

sospettavo il problema è causato da un uso letsencrypt di link simbolici, così la mia soluzione era quella di copiare i CERT dal vivo in un'altra cartella usando cp -RL (di de-riferimento dei link simbolici)

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

poi ho cambiato il nginx.conf per fare riferimento a 'copia' invece di 'live'

Ora nginx inizia correttamente nella finestra mobile.

Questa non è una soluzione a lungo termine perché quando i certificati vengono rinnovati la copia non verrà aggiornata automaticamente. Ma dato che eseguirò la scrittura di enencriprypt da un cronjob, quell'attività può eseguire nuovamente il processo di copia.

Inoltre ho letto che nginx deve essere riavviato se i certificati cambiano, quindi questo è un altro problema che dovrò affrontare. Ma almeno nginx inizia correttamente ora.

+0

Grazie per questo. Ho ancora questo problema a marzo 2017. Strano che questo non sia stato risolto da Letsencrypt/Docker. – jonbaldie

-1

Ho sprecato un giorno oggi e ho trovato la soluzione.

Run nginx motore finestra mobile con

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

e nginx.conf

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

+0

Non sei sicuro del motivo per cui questo è stato downvoted?I link simbolici in diretta puntano all'archivio –

+0

@RonniSkansing Penso che il downvoted sia giusto! Perché nel prossimo rinnovo, i nuovi certs saranno fullchain2, prikey2, ... Quel nome fa sì che la configurazione sia sbagliata. La mia idea è cattiva! :( – Shinichi