Nginx SSL no host local

1

Estou tentando configurar o SSL no meu host local usando o Nginx. Eu criei um certificado auto-assinado e minha configuração Nginx é como abaixo:

server {
  listen 443 ssl;
  server_name localhost;

  root /usr/share/nginx/html;
  index index.html index.htm;

  ssl on;
  ssl_certificate /etc/nginx/ssl/nginx.crt;
  ssl_certificate_key /etc/nginx/ssl/nginx.key;

  ssl_session_timeout 5m;

  ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
  ssl_prefer_server_ciphers on;

  location / {
        try_files $uri $uri/ =404;
  }
}

Mas quando eu tento acessar ele me dá o seguinte erro

$ curl -i https://localhost            
  curl: (7) Failed to connect to localhost port 443: Connection refused

Qual poderia ser a possível causa desse erro?

Esta é a saída do comando 'netstat -tuplen'

tcp    0     0 0.0.0.0:443     0.0.0.0:*      LISTEN     0    71662       - 
    
por Sunil Antony 14.12.2016 / 08:05

1 resposta

1

Você está com uma diretiva listen ausente:

listen [::]:443 ssl;

Isto diz ao nginx para escutar conexões IPv6. Sua diretiva listen existente ouve somente conexões IPv4, e isso é confirmado na saída netstat .

O motivo pelo qual isso é necessário (além da diretiva listen existente) é que localhost resolve um endereço IPv6 ::1 além do endereço IPv4 histórico 127.0.0.1 . Mas o IPv6 é o protocolo preferido para fazer conexões. Assim, curl está tentando se conectar ao nginx via IPv6 e falhando.

É claro que, na Internet global na qual você (provavelmente) eventualmente colocará seu site, você também terá que usar o IPv6, agora ou em um futuro próximo. Então você deve se preparar para isso hoje.

    
por 15.12.2016 / 08:51