HTTPS no funciona en Docker-Nginx

Tengo un certificado SSL comodín para *.domain.no al generar un CSR y recibí un .archivo pem del proveedor de SSL. Ahora tengo los archivos clave que incluyen:

servidor.clave

certificado.pem (incluye certificado intermedio y certificado SSL)

Quiero usar este certificado en un docker-nginx que incluye algunos subdominios, mi archivo de configuración se ve a continuación:

/etc / nginx / conf.d / por defecto.conf

server {   listen      443 ssl;   server_name     test.domain.no;   access_log  /var/log/nginx/nginx.access.log;   error_log   /var/log/nginx/nginx.error.log;   ssl    on;   ssl_certificate    /etc/ssl/certificates.pem;   ssl_certificate_key    /etc/ssl/server.key;   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   location /   {      proxy_pass         {dockerEndpoint};      proxy_redirect     off;    ##proxy_set_header   Host             $host;      proxy_set_header   X-Real-IP        $remote_addr;      proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;      client_max_body_size       10m;      client_body_buffer_size    128k;      proxy_connect_timeout      90;      proxy_send_timeout         90;      proxy_read_timeout         90;      proxy_buffer_size          4k;      proxy_buffers              4 32k;      proxy_busy_buffers_size    64k;      proxy_temp_file_write_size 64k;     }}

Nginx-Dockerfile:

FROM nginxVOLUME /etc/nginx/conf.dCOPY default.conf /etc/nginx/conf.d/COPY certificates.pem /etc/sslCOPY server.csr /etc/sslCOPY server.key /etc/ssl

El https no funciona y da el siguiente error en el navegador:

This site can’t be reachedTry:Checking the connectionChecking the proxy and the firewall

Como tengo el siguiente error en docker-logs, he cambiado Dockerfile a:

Error:

BIO_new_file("/etc/ssl/certificates.pem") failed (SSL: error:02001014:system library:fopen:Not a   directory:fopen('/etc/ssl/certificates.pem','r') error:2006D002:BIO   routines:BIO_new_file:system lib)nginx: [emerg] BIO_new_file("/etc/ssl/certificates.pem") failed (SSL:  error:02001014:system library:fopen:Not a   directory:fopen('/etc/ssl/certificates.pem','r') error:2006D002:BIO   routines:BIO_new_file:system lib)

Dockerfile Modificado:

FROM nginxCOPY default.conf /etc/nginx/conf.d/#CMD ["nginx", "-g", "daemon off;"]RUN mkdir /etc/nginx/sslRUN chown -R root:root /etc/nginx/sslRUN chmod -R 600 /etc/nginx/sslCOPY certificates.pem /etc/nginx/sslCOPY server.key /etc/nginx/ssl

Ahora no da error en los docker-logs, sin embargo, todavía no funciona con HTTPS. :(

He intentado comprobar el error.inicie sesión en /var / log / nginx conectándose al contenedor nginx y abra el archivo, pero no hay nada en el archivo.

Cualquier ayuda sería apreciada.

Actualizar:

Modifiqué el puerto del contenedor acoplable Nginx a 443 (- p 443:443) y cambié el permiso de /etc / nginx / ssl a 644, ahora si abro la url usando https, aparece el siguiente error:

There are issues with the site's certificate chain (net::ERR CERT COMMON_NAME_INVALID)

Aunque dice que es emitido por mi proveedor de SSL.

Creo que probablemente estaba funcionando la primera vez, pero olvidaste -p 443: 443 de la línea de comandos de docker.

Después de realizar los cambios, copió los certificados en la ruta incorrecta.

Está esperando un archivo de certificado en: /etc/ssl/certificates.pemy los estás copiando a: /etc/nginx/ssl

Por lo tanto, intente cambiar el archivo de la ventana acoplable a lo que tenía inicialmente y ejecútelo con-p 443:443.

Otra forma de ejecutar esto es de forma interactiva con fines de prueba.

docker run --net=host -ti yourcontainername /bin/bash

Esto creará un shell en el contenedor. Puede verificar dos veces las configuraciones verificando las rutas y los archivos de configuración.

Luego ejecútelo de forma interactiva con nginx-g"daemon off", verifique que funcione, si todo está bien, realice los cambios necesarios y vuelva a ejecutar.

Faltaba otro certificado en el archivo. El archivo ssl_certificate (certificados.pem) se deben incluir tres certificados:

"Certificado intermedio", "Certificado primario" y "Certificado raíz".

Así que le he pedido al proveedor de SSL que me envíe el certificado raíz y que agregue ese certificado a .archivo pem, HTTPS funcionó bien.

Certificado.el archivo pem se parece a:

-----BEGIN CERTIFICATE----- (Your Primary SSL certificate: your_domain_name.crt) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Your Intermediate certificate: DigiCertCA.crt) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Your Root certificate: TrustedRoot.crt) -----END CERTIFICATE-----

@Sarah ¿cuál es el estado ahora y díganos en qué foro depuraremos más?

@Sarah por favor, ¿cuál es el estado de este tema?

@Aleks Todavía tiene problemas con el certificado.

“Todavía no funciona” en realidad no nos da mucho margen para ayudar. Haga algunos diagnósticos : puede hacer ping al contenedor, puede llegar a Nginx a través de http, etc.

SE desaconseja la publicación cruzada Pregunta duplicada: https://stackoverflow.com/q/44358819/596285

@Tim Funciona bien con http, pero cuando cambio la configuración a https, no funciona. Puedo llegar al contenedor y el archivo de configuración y el directorio de certificados se ven bien.

por favor, puede pastebin la salida de ’ curl-vk https://…` gracias