我还没有找到解决这个问题的方法,如果有的话请参考。
跑步:
- Windows7 x64
- Apache 2.4.4
- OpenSSL 1.0.1j
并在我的httpd_ssl
SSLStrictSNIVHostCheck off
SSLProtocol All -SSLv2 -SSLV3
SSLCompression off
SSLInsecureRenegotiation off
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL
!LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
SSLUseStapling on
SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
问题:
无论我做什么,似乎都无法启用 TLSv1.1 和 TLSv1.2。
运行 ServerSSLTest 脚本,我得到的只是支持的版本:TLSv1.0
我错过了什么?
答案1
首先,您需要在 OpenSSL 中拥有 TLSv1.1 和 V1.2 支持 - 使用 v1.0.1j,您就可以拥有。
接下来,Apache V2.2.24(或更高版本)支持与 SSL 相关的配置项。具体来说,要指定 TLS1 之后的任何内容(即 TLSv1.1 TLSv1.2),您需要更高版本。您有 2.4.4,所以应该没问题。
接下来是Apache 配置参数之间的“交互”:SSLProtocol
和SSLCipherSuite
。
因此,对于您所需的配置 TLSv1.1 和 TLSv1.2,您需要类似以下内容:
SSLProtocol=All -SSLv2 -SSLV3 -TLSv1
SSLCipherSuite HIGH:!aNULL:!MD5:!RC4
我很感激您有更具体的密码套件列表:
EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4
但是,当我使用 openssl (v1.0.1 流) 检查时,我发现支持以下 pre-TLSv1.2 套件:
openssl ciphers -s -v 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4'
ECDHE-RSA-AES256-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
ECDHE-ECDSA-AES256-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
ECDHE-RSA-AES128-SHA SSLv3 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
ECDHE-ECDSA-AES128-SHA SSLv3 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
DHE-RSA-AES256-SHA SSLv3 Kx=DH Au=RSA Enc=AES(256) Mac=SHA1
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(256) Mac=SHA1
DHE-RSA-AES128-SHA SSLv3 Kx=DH Au=RSA Enc=AES(128) Mac=SHA1
DHE-RSA-SEED-SHA SSLv3 Kx=DH Au=RSA Enc=SEED(128) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH Au=RSA Enc=Camellia(128) Mac=SHA1
然后检查这里(第 A.5 节),https://www.rfc-editor.org/rfc/rfc4346我认为我的 openssl 列出的任何受支持的套件实际上都不是有效的 TLSv1.1,因此在测试时(例如在 Qualys 上),您最终只能使用 TLSv1.2https://www.ssllabs.com/ssltest/)。
最后,还有客户端支持的问题 - 上面的 Qualys 链接很方便,因为它列出了哪种类型的客户端(例如,具体到特定的 Android 版本)能够连接到提交的测试服务器。由于您对密码非常敏感,我认为允许使用 TLSv1(读作 v1.0)以及 V1.1 和 V1.2 不会冒太大风险,除非您知道您的访问者群不会包括仅支持 TLSv1 的客户端。
答案2
为了自动生成自动 ssl-config 文件,Mozilla 有一个 ssl-config 生成器:
这将为具有 openssl 1.0.1e 版本的 Apache 2.4 服务器提供模板。
希望这对刚接触 SSL 设置的人有所帮助。
答案3
尝试删除该行SSLCipherSuite
并将其更改SSLProtocol
为:
SSLProtocol -All +TLSv1.1 +TLSv1.2
我相信,如果在配置文件中遵循 SSLCipherSuite,它将会覆盖 SSLProtocol。