我应该如何检查 SSL 会话恢复是否有效?

我应该如何检查 SSL 会话恢复是否有效?

我正在使用 nginx,并且想要实现 SSL 会话恢复。我应该如何测试它是否正常工作?

我已启用以下设置:

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

答案1

我不确定是否有本地测试的方法,但如果您的网站是公开的,ssllabs 提供了一个很好的测试工具:

https://www.ssllabs.com/ssldb/index.html

答案2

您可以使用 openssl 在本地进行测试:

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

-servername对于 SNI 是必需的,否则可以忽略

或者 :

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

-no_ticket需要该选项来禁用客户端 TLS 会话票证这也允许会话恢复,但是不同的环境nginx,并将测试限制在服务器端 SSL 会话缓存OP 的配置控制。

对于第一个命令,您将获得如下输出:

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

对于最后一个,如果会话恢复,您将得到以下信息:

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

或者在失败的情况下:

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

您可以看到,当它是新的时,握手更大。

相关内容