HTTPS não funciona no Docker-Nginx

Eu tenho um certificado ssl curinga para *.domain.no ao gerar um CSR e recebi um .arquivo PEM do provedor ssl. Agora eu tenho os arquivos principais, incluindo:

servidor.chave

certificado.pem (inclui certificado intermediário e certificado SSL)

Eu quero usar este certificado em um docker-nginx que inclui alguns subdomínios, meu arquivo de configuração se parece abaixo:

/etc / nginx / conf.D / padrão.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

O https não funciona e dá o seguinte erro no navegador:

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

Como eu tenho o seguinte erro em Docker-logs, eu mudei Dockerfile para:

Erro:

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

Agora não dá erro nos logs do docker, mas ainda não funciona com HTTPS. :(

Tentei verificar o erro.faça login / var / log / nginx conectando-se ao nginx-container e cat O arquivo, mas não há nada no arquivo.

Qualquer ajuda seria apreciada.

Actualizacao:

Modifiquei a porta do contêiner do docker Nginx para 443 (- p 443: 443)e alterei a permissão de /etc / nginx / ssl para 644, agora se eu abrir o url usando https, ele fornecerá o seguinte erro:

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

Embora diga que é emitido pelo meu provedor ssl.

Acho que provavelmente estava funcionando pela primeira vez, mas você esqueceu-p 443:443 da linha de comando do docker.

Depois de fazer alterações, você copiou para certificados para o caminho errado.

Está esperando um arquivo cert em: /etc/ssl/certificates.peme você está copiando-os para: /etc/nginx/ssl

Portanto, tente alterar o arquivo docker de volta para o que você tinha inicialmente e execute-o com-p 443:443.

Outra maneira de executar isso é interativamente para fins de teste.

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

Isso criará um shell no contêiner. Você pode verificar novamente as configurações verificando os caminhos e cat'ing os arquivos de configuração.

Em seguida, execute-o interativamente com nginx - g"daemon off" verifique se funciona, se tudo bem, faça as alterações necessárias e execute novamente.

Faltava outro certificado no arquivo. O arquivo ssl_certificate (certificados.pem) devem ser incluídos três certificados:

"Certificado intermediário", "certificado primário"e" certificado raiz".

Então eu pedi ao provedor SSL para me enviar o certificado raiz e adicionando esse certificado para .arquivo pem, HTTPS funcionou bem.

Certificado.o arquivo pem parece:

-----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 Qual é o status agora e, por favor, diga-nos em qual fórum Vamos depurar ainda mais?

@ Sarah por favor, Qual é o status deste tópico?

@ Aleks ainda tem problema com o certificado .

“Ainda não funciona” realmente não nos dá muito espaço para ajudar. Faça alguns diagnósticos - você pode fazer ping no contêiner, pode chegar ao Nginx por http, etc.

Postagem cruzada é desencorajada por SE pergunta duplicada: https://stackoverflow.com/q/44358819/596285

@ Tim funciona bem com http, mas quando eu mudo a configuração para https, não funciona. Posso chegar ao contêiner e o arquivo de configuração e o diretório de certificados parecem bons.

por favor, você pode pastebin a saída de ’ curl-VK https://…` graca