¿Cómo debo verificar si la reanudación de la sesión SSL funciona o no?

11

Estoy usando nginx y quiero implementar la reanudación de la sesión SSL. ¿Cómo deberíamos probar si está funcionando?

He habilitado esta configuración:

ssl_session_cache    shared:SSL:10m;
ssl_session_timeout  10m;
Sabya
fuente

Respuestas:

21

Puede usar openssl para probar localmente:

openssl s_client -connect example.com:443 -reconnect -no_ticket

O:

openssl s_client -connect example.com:443 -no_ticket -sess_out /tmp/ssl_s
openssl s_client -connect example.com:443 -no_ticket -sess_in /tmp/ssl_s

(La -no_ticketopción es necesaria para desactivar los vales de sesión de cliente TLS que también permiten sesión de reanudación, pero es una configuración diferente en nginx, y limitan la prueba a la sesión SSL del lado del servidor de almacenamiento en caché los controles de configuración de la OP).

Para el primer comando obtendrá una salida como esta:

drop connection and then reconnect
CONNECTED(00000003)
---
Reused, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256

Para el último, obtendrá esto en caso de reanudación de la sesión:

SSL handshake has read 142 bytes and written 583 bytes
---
Reused, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256

o esto en caso de falla:

SSL handshake has read 5855 bytes and written 722 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-GCM-SHA384

Puedes ver que el apretón de manos es mucho más grande cuando es nuevo.

Bastien Durel
fuente
Sería útil si pudiera explicar qué significa el resultado y cómo usarlo para determinar si la reanudación de la sesión está funcionando.
Kevin Cox
1
verifique "Reutilizado, TLSv1 / SSLv3, Cipher is <cipher>"
Bastien Durel