Consegui criar meus certificados com LE sem erros, também consegui redirecionar meu tráfego da porta 80 para a porta 443. Mas quando recarrego meu servidor nginx, não consigo acessar meu site. Os logs de erro do Ngnix mostram esta linha:
4 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking, client: 192.168.0.104, server: 0.0.0.0:443
Eu acho que isso significa que ele não consegue encontrar os certificados que eu navegava até o caminho dos certificados e eles estão lá, qual poderia ser o problema? Aqui está como minha configuração do Ngnix se parece:
server {
listen 80;
server_name pumaportal.com www.pumaportal.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name pumaportal.com www.pumaportal.com;
add_header Strict-Transport-Security "max-age=31536000";
ssl_certificate /etc/letsencrypt/live/pumaportal.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pumaportal.com/privkey.pem;
ssl_stapling on;
ssl_stapling_verify on;
access_log /var/log/nginx/sub.log combined;
location /.well-known {
alias /[MY PATH]/.well-known;
}
location / {
proxy_pass http://localhost:2000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Tudo parece bastante direto. Não entendo onde poderia estar o problema.
Depois de executar o nginx -t tudo parece ok:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx
ssl
lets-encrypt
Rémi
fonte
fonte
server
blocos? O que exatamente você fez quando recebeu esse erro?Respostas:
Meu palpite é que você tem outro servidor escutando na porta 443. Este servidor não possui ssl_certificate definido e é selecionado automaticamente (SNI). Tente excluir todos os links simbólicos de / etc / nginx / sites-enabled, exceto este servidor que você deseja que funcione (se isso for possível, verifique se todos os seus servidores estão ouvindo 443 sem estarem configurados corretamente).
fonte
Corrigi o mesmo problema hoje cedo, então estou aqui para esclarecer o ponto de vista da CA (que, agora que entendi o problema, foi bem resolvido), é provável que você tenha dois blocos de servidor:
O SNI corresponderá apenas àqueles rotulados com um
ssl
ouvinte. No entanto, o servidor padrão capturará todo o tráfego recebido no 443, independentemente do SSL ou não. Portanto, é na verdade impedindo que o SNI realmente funcione, logo de cara, acumulando todo o tráfego para si.Sintomas:
nginx -t
e um serviço recarregado)Soluções:
Corrigi o problema esta manhã removendo o bloco do servidor padrão, permitindo que o SNI correspondesse nos ouvintes SSL.
A solução alternativa seria adicionar o
ssl
ouvinte e asssl_certificate
linhas ao bloco do servidor para que o SNI seja essencialmente ativado no host padrão. Você ainda receberá erros de SSL, por isso não é a melhor solução, mas permitirá que seu SNI funcione :)fonte
Inscreva-se
default_server
em example.com ou www.example.com. Não ambos.Portanto, isso funcionará:
Nota sobre hosts virtuais: verifique se o
default_server
parâmetro não está definido em nenhum outro lugar - se você tiver vários hosts no servidor.fonte
Tarde para o jogo, como de costume, mas como isso me ajudou ... Verifique se o certificado está malformado. Ao criar o crt "unificado" (crt + intermediário), fazer
De alguma forma, perdi um LF e consegui uma linha como esta:
ao invés de
e o nginx não aceitaria o certificado e falharia com o erro mencionado acima.
Fazendo
me deu a pista para openssl iria errar.
fonte
Verifique se suas permissões de arquivo para os certificados estão corretas. Poste a listagem do diretório (
ls -la
)fonte