utiliza recomienda propietario migrar instalar formato crear claves certificado autofirmado almacén ssl openssl

ssl - recomienda - instalar certificado java keytool



Comando OpenSSL para verificar si un servidor está presentando un certificado (3)

En mi caso, el certificado SSL no se configuró para todos los sitios (solo para la versión www a la que se redirigió la versión que no es www). Estoy usando la forja de Laravel y la configuración de Nginx Boilerplate

Tenía la siguiente configuración para mi sitio nginx:

/etc/nginx/sites-available/timtimer.at

server { listen [::]:80; listen 80; server_name timtimer.at www.timtimer.at; include h5bp/directive-only/ssl.conf; # and redirect to the https host (declared below) # avoiding http://www -> https://www -> https:// chain. return 301 https://www.timtimer.at$request_uri; } server { listen [::]:443 ssl spdy; listen 443 ssl spdy; # listen on the wrong host server_name timtimer.at; ### ERROR IS HERE ### # You eighter have to include the .crt and .key here also (like below) # or include it in the below included ssl.conf like suggested by H5BP include h5bp/directive-only/ssl.conf; # and redirect to the www host (declared below) return 301 https://www.timtimer.at$request_uri; } server { listen [::]:443 ssl spdy; listen 443 ssl spdy; server_name www.timtimer.at; include h5bp/directive-only/ssl.conf; # Path for static files root /home/forge/default/public; # FORGE SSL (DO NOT REMOVE!) ssl_certificate /etc/nginx/ssl/default/2658/server.crt; ssl_certificate_key /etc/nginx/ssl/default/2658/server.key; # ... # Include the basic h5bp config set include h5bp/basic.conf; }

Entonces, después de mover (cortar y pegar) la siguiente parte del archivo /etc/nginx/h5bp/directive-only/ssl.conf todo funcionó como se esperaba:

# FORGE SSL (DO NOT REMOVE!) ssl_certificate /etc/nginx/ssl/default/2658/server.crt; ssl_certificate_key /etc/nginx/ssl/default/2658/server.key;

Por lo tanto, no es suficiente tener las claves especificadas solo para la versión www, ¡si solo llama directamente a la versión de www!

Estoy tratando de ejecutar un comando openssl para restringir lo que podría ser el problema SSL al tratar de enviar un mensaje de salida de nuestro sistema.

Encontré este comando en otro tema: Usar openssl para obtener el certificado de un servidor

openssl s_client -connect ip:port -prexit

El resultado de esto resulta en

CONNECTED(00000003) 15841:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188: --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 0 bytes and written 121 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE ---

¿Esto significa que el servidor no presenta ningún certificado? Probé con otros sistemas en un puerto IP diferente y presentan un certificado con éxito.

¿La autenticación mutua afecta este comando con -prexit?

--Actualizar--

Ejecuté el comando otra vez

openssl s_client -connect ip:port -prexit

Y obtengo esta respuesta ahora

CONNECTED(00000003) write:errno=104 --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 0 bytes and written 121 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE ---

Agregué -ssl3 al comando

openssl s_client -connect ip:port -prexit -ssl3

Respuesta:

CONNECTED(00000003) write:errno=104 --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 0 bytes and written 0 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE SSL-Session: Protocol : SSLv3 Cipher : 0000 Session-ID: Session-ID-ctx: Master-Key: Key-Arg : None Krb5 Principal: None Start Time: 1403907236 Timeout : 7200 (sec) Verify return code: 0 (ok) ---

También probando -tls1

CONNECTED(00000003) write:errno=104 --- no peer certificate available --- No client certificate CA names sent --- SSL handshake has read 0 bytes and written 0 bytes --- New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : 0000 Session-ID: Session-ID-ctx: Master-Key: Key-Arg : None Krb5 Principal: None Start Time: 1403907267 Timeout : 7200 (sec) Verify return code: 0 (ok) ---


Estaba depurando un problema de SSL hoy que resultó en el mismo error de write:errno=104 . Eventualmente descubrí que el motivo de este comportamiento era que el servidor requería SNI (extensiones TLS de nombre de servername ) para funcionar correctamente. Al suministrar la opción -servername a openssl, se conectó correctamente:

openssl s_client -connect domain.tld:443 -servername domain.tld

Espero que esto ayude.


15841:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188: ... SSL handshake has read 0 bytes and written 121 bytes

Esta es una falla de apretón de manos. El otro lado cierra la conexión sin enviar ningún dato ("leer 0 bytes"). Puede ser que el otro lado no hable SSL en absoluto. Pero he visto errores similares en la implementación de SSL roto, que no entienden la versión más nueva de SSL. Pruebe si obtiene una conexión SSL agregando -ssl3 a la línea de comando de s_client.