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

Sab*_*bya 15 ssl nginx https

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

我已启用这些设置:

ssl_session_cache    shared:SSL:10m;
ssl_session_timeout  10m;
Run Code Online (Sandbox Code Playgroud)

Bas*_*rel 26

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

openssl s_client -connect example.com:443 -reconnect -no_ticket -servername example.com
Run Code Online (Sandbox Code Playgroud)

-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
Run Code Online (Sandbox Code Playgroud)

(该-no_ticket选择需要被禁用客户端TLS会话票据这也允许会话恢复但是不同的设置nginx,并限制测试到服务器端SSL会话高速缓存的OP的配置控制。)

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

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

对于最后一个,您将在会话恢复的情况下获得此信息:

SSL handshake has read 142 bytes and written 583 bytes
---
Reused, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Run Code Online (Sandbox Code Playgroud)

或者在失败的情况下:

SSL handshake has read 5855 bytes and written 722 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-GCM-SHA384
Run Code Online (Sandbox Code Playgroud)

你可以看到握手是新的。

  • 检查“重用、TLSv1/SSLv3、密码为 <密码>” (2认同)

Shi*_*ish 10

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

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