1 votos

NGINX no establecerá la conexión ssl (error de protocolo desconocido)

¡Holaaa a todos!

Tengo un proxy inverso de nginx con certificados SSL válidos (hechos por Let's Encrypt), pero no puedo hacer que el SSL funcione.

upstream backend_haakselsenkwaaksels_nl {
    server amaya.leonweemen.nl:9050;
}

server {
    listen      80;
    server_name haakselsenkwaaksels.nl;
    return 301 https://$server_name$request_uri;
}

server {
    listen       80;
    server_name  www.haakselsenkwaaksels.nl;
    return 301 https://haakselsenkwaaksels.nl$request_uri;
}

server {
    listen 443 ssl;
    server_name haakselsenkwaaksels.nl;

    ssl_certificate           /domain-certificates/haakselsenkwaaksels.nl/fullchain.pem;
    ssl_certificate_key       /domain-certificates/haakselsenkwaaksels.nl/privkey.pem;

#    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/haakselsenkwaaksels.nl.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      # Arreglar el error “Parece que tu configuración de proxy inverso está rota".
      proxy_pass          https://backend_haakselsenkwaaksels_nl;
      proxy_read_timeout  90;

      proxy_redirect      https://127.0.0.1:9050 https://haakselsenkwaaksels.nl;
    }
}

Nginx dice que mi configuración está bien:

weemen@amaya:/domain-certificates# nginx -t
nginx: el archivo de configuración /etc/nginx/nginx.conf tiene una sintaxis correcta
nginx: la prueba del archivo de configuración /etc/nginx/nginx.conf fue exitosa

Solo recibo datos en mi registro de acceso general (/var/log/nginx/access.log)

XXX.XXX.XXX.XXX - - [30/Dec/2016:10:20:26 +0000] "\x16\x03\x01\x00\xD3\x01\x00\x00\xCF\x03\x03\xBD\x07\xDA" 400 182 "-" "-"
XXX.XXX.XXX.XXX - - [30/Dec/2016:10:20:26 +0000] "\x16\x03\x01\x00\xD3\x01\x00\x00\xCF\x03\x03\xABFB\xC158\x8AE\xF7V\xEE\xE2}%i\xF4\x86!\xFA\xCE\xF7\xF4l\xF55\xD0%Ev\xEE\xFFb\x00\x00$\xAA\xAA\xC0+\xC0/\xC0,\xC00\xCC\xA9\xCC\xA8\xCC\x14\xCC\x13\xC0\x09\xC0\x13\xC0" 400 182 "-" "-"

Si me conecto con el cliente de openssl veo esto:

 ~  openssl s_client -connect haakselsenkwaaksels.nl:443                                                                                                                                                                                                     
CONNECTED(00000003)
write:errno=54
---
no hay certificado de par disponible
---
No se enviaron nombres de CA de certificado de cliente
---
El handshake de SSL ha leído 0 bytes y escrito 308 bytes
---
Nuevo, (NINGUNO), Cifrado es (NINGUNO)
La Renegociación Segura NO es compatible
Compresión: NINGUNA
Expansión: NINGUNA
No se negoció ALPN
SSL-Session:
   Protocolo  : TLSv1.2
   Cifrado    : 0000
   ID de sesión: 
   ID de contexto de sesión: 
   Llave maestra: 
   Arg de llave   : Ninguno
   Identidad PSK: Ninguno
   Pista de identidad PSK: Ninguna
   Nombre de usuario SRP: Ninguno
   Tiempo de inicio: 1483094367
   Tiempo de espera   : 300 (seg)
   Código de verificación de retorno: 0 (ok)

He intentado varias cosas pero realmente me estoy quedando sin opciones, ¿alguien ve algo extraño en esta configuración?

Si necesitas más información, avísame.

Ya desde ahora muchas muchas gracias por adelantado.

2voto

Leon Weemen Puntos 131

El problema estaba en mi contenedor de docker. El certificado allí no era legible porque era un enlace simbólico.

weemen@amaya:/# ls -la
total 404
drwxr-xr-x  27 root   root     4096 Dec 29 15:12 .
drwxr-xr-x  27 root   root     4096 Dec 29 15:12 ..
lrwxrwxrwx   1 root   root       21 Dec 15 12:08 domain-certificates -> /etc/letsencrypt/live

weemen@amaya:/domain-certificates/haakselsenkwaaksels.nl# ls -la
total 8
drwxr-xr-x 2 root root 4096 Dec 30 17:46 .
drwx------ 7 root root 4096 Dec 30 17:46 ..
lrwxrwxrwx 1 root root   46 Dec 30 17:46 cert.pem -> ../../archive/haakselsenkwaaksels.nl/cert3.pem
lrwxrwxrwx 1 root root   47 Dec 30 17:46 chain.pem -> ../../archive/haakselsenkwaaksels.nl/chain3.pem
lrwxrwxrwx 1 root root   51 Dec 30 17:46 fullchain.pem -> ../../archive/haakselsenkwaaksels.nl/fullchain3.pem
lrwxrwxrwx 1 root root   49 Dec 30 17:46 privkey.pem -> ../../archive/haakselsenkwaaksels.nl/privkey3.pem

Monto esta carpeta en mi contenedor de docker con:

--mount type=bind,source=/domain-certificates,destination=/domain-certificates

Solo ../../archive no está disponible allí

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X