Logré crear mis certificados con LE sin errores, también logré redirigir mi tráfico desde el puerto 80 al puerto 443. Pero cuando vuelvo a cargar mi servidor nginx no puedo acceder a mi sitio web. Los registros de errores de Ngnix muestran esta línea:
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
Creo que esto significa que no puede encontrar los certificados que luego navegué a la ruta de los certificados y ambos están allí, ¿cuál podría ser el problema? Así es como se ve mi configuración de Ngnix:
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;
}
}
Todo parece bastante sencillo, no entiendo dónde podría estar el problema.
Después de ejecutar nginx -t todo parece estar bien:
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
fuente
fuente
server
bloques? ¿Qué hiciste exactamente cuando recibiste ese error?Respuestas:
Supongo que tiene otro servidor escuchando en el puerto 443. Este servidor no tiene definido ssl_certificate, y se selecciona automáticamente (SNI). Intente eliminar todos los enlaces simbólicos de / etc / nginx / sites habilitado, excepto este servidor que desea que funcione (si es posible, de lo contrario, verifique todos sus servidores para escuchar 443 sin estar configurado correctamente).
fuente
Solucioné este mismo problema más temprano esta mañana, así que estoy aquí para aclarar el punto de CA (que, ahora que entiendo el problema, estaba bien hecho), lo más probable es que tenga dos bloques de servidor:
SNI solo coincidirá con aquellos que están etiquetados con un
ssl
oyente. Sin embargo, el servidor predeterminado capturará todo el tráfico entrante en 443, independientemente de SSL o no. Por lo tanto, en realidad está evitando que SNI realmente funcione, desde el primer momento, al atesorar todo el tráfico por sí mismo.Síntomas
nginx -t
y una recarga de servicio)Soluciones:
Solucioné el problema esta mañana eliminando el bloqueo predeterminado del servidor, permitiendo así que SNI coincida con los oyentes SSL.
Una solución alternativa sería agregar el
ssl
oyente y lasssl_certificate
líneas al bloque del servidor para que SNI esté esencialmente habilitado en su host predeterminado. Aún obtendrá errores de SSL, por lo que no es la mejor solución, pero permitirá que su SNI funcione :)fuente
Solicite
default_server
ya sea example.com o www.example.com. No ambos.Por lo tanto, esto funcionará:
Nota sobre hosts virtuales: asegúrese de que el
default_server
parámetro no esté definido en ningún otro lugar, si tiene varios hosts en el servidor.fuente
Tarde al juego como de costumbre, pero como me ayudó ... Verifique si el certificado está mal formado. Al construir el CRT "unificado" (CRT + intermedio), haciendo
De alguna manera perdí un LF y obtuve una línea como esta:
en lugar de
y nginx no tomaría el certificado y fallaría con el error mencionado anteriormente.
Obra
me dio la pista para openssl sería un error.
fuente
Compruebe si sus permisos de archivo para los certificados son correctos. Por favor, publique el listado del directorio (
ls -la
)fuente