当我搜索相关问题时,我看到了这个: https ://superuser.com/questions/109213/how-do-i-list-the-ssl-tls-cipher-suites-a-particular-website-offers
我尝试研究提供的解决方案,但我还没有找到我的解决方案。
我有 2 台服务器,测试服务器和生产服务器。
它们都托管应用程序、测试和产品。此应用程序需要反向代理,因此我为此设置了 Apache。
我被要求改进用于 HTTPS 的密码套件。
PROD服务器在 apache中使用:
SSLProtocol All -SSLv2 -SSLv3
SSLCipherSuite DES-CBC-SHA:HIGH:!aNULL:!MD5:!EXP
SSLHonorCipherOrder on
我目前正在使用的TEST服务器已更新为使用此功能:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off
现在是测试新配置是否有效的时候了(好吧,它已经应该,但你知道......)。
从我运行的第三台测试机:
curl https://test.servertest.com/test1
against the TEST server
and
curl https://prodserver.com/accept
to the PROD one.
从TEST和PROD服务器读取 APACHE 错误日志,我看不到差异。
TEST:
[Tue Oct 23 13:57:10.846249 2018] [ssl:trace3] [pid 13130] ssl_engine_kernel.c(1795): [remote 1.1.1.1:5555] OpenSSL: Handshake: done
[Tue Oct 23 13:57:10.846257 2018] [ssl:debug] [pid 13130] ssl_engine_kernel.c(1844): [remote 1.1.1.1:5555] AH02041: Protocol: TLSv1, Cipher: ECDHE-RSA-AES256-SHA (256/256 bits)
PROD:
[Tue Oct 23 13:58:04.192403 2018] [ssl:trace3] [pid 6856] ssl_engine_kernel.c(1795): [remote 2.2.2.2:6666] OpenSSL: Handshake: done
[Tue Oct 23 13:58:04.192409 2018] [ssl:debug] [pid 6856] ssl_engine_kernel.c(1844): [remote 2.2.2.2:6666] AH02041: Protocol: TLSv1, Cipher: ECDHE-RSA-AES256-SHA (256/256 bits)
可能 CURL 可能不是测试密码套件的最佳方法(?),但我的问题是: 我如何确定我应用的更改是正确的(除了在 Apache 手册中找到密码套件本身)?
curl -vv -k https://test.example.com
将输出一些有用的 TLS 信息,但只会协商一个协议和密码,而不是测试所有可能和支持的 SSL/TLS 版本和密码。一个有用的在线测试工具是 Qualis SSL 实验室https://www.ssllabs.com/ssltest/或使用来自https://testssl.sh/的漂亮包装脚本 围绕命令行
openssl
工具/库运行您自己的测试。一些用于测试正确 SSLProtocol 级别的简单 openssl 命令是:
当 SSLv3 被禁用时,它应该返回失败
SSLProtocol -SSLv3
和类似的用于测试 TLS 协议 1.0
我们应该再次看到握手失败:
测试允许的 TLS 协议级别 1.2 时
应该会看到成功的连接和 TLS 证书的详细信息:
许多不同服务器的良好 TLS 设置的有用备忘单是:https ://cipherli.st/