我正在使用 nginx,并且想要实现 SSL 会话恢复。我应该如何测试它是否正常工作?
我已启用以下设置:
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
答案1
我不确定是否有本地测试的方法,但如果您的网站是公开的,ssllabs 提供了一个很好的测试工具:
答案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
您可以看到,当它是新的时,握手更大。