linux - 无法在 Amazon Linux 实例上禁用 SSLv3

标签 linux apache ssl openssl ssl-certificate

我使用的是 Go Daddy 颁发的 SSL 证书。 在我的 Linux 实例上,以下是软件详细信息:-

  • Apache 版本 - Apache/2.4.16 (Amazon)
  • Openssl 版本 - OpenSSL 1.0.1k-fips 2015 年 1 月 8 日
  • mod_ssl 版本 - mod_ssl-2.4.2

注意:- 我从 RPM 包安装 Apache,后来我从 rpm 包安装 mod_ssl 和 openssl。

1) 问题是当我禁用 SSLv3 并从 https://www.ssllabs.com/ssltest/ 测试 SSL 服务器时它警告我“此服务器不支持当前最好的 TLSv1.2”,当我启用 TLSv1.2 协议(protocol)时,相同的测试警告我“此服务器支持 SSLv3 协议(protocol)并且易受 Poodle 攻击” 如何在服务器上同时禁用 SSLv3 和启用 TLSv1.2? 我关于 SSL 的 Vhost 文件的当前配置是:

SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
SSLHonorCipherOrder     on

2) 我无法创建强 Diffie-Hellman 组。当前是 1024 位 Diffie-Hellman 组,想为站点创建 2048 位组。 我发出此命令以生成 2048 位 key :-

openssl dhparam -out dhparams.pem 2048

我在 VHost 中的配置是:

SSLOpenSSLConfCmd DHParameters /etc/httpd/dhparams.pem

当我重新启动服务器时弹出错误消息:

Invalid command 'SSLOpenSSLConfCmd', perhaps misspelled or defined by a module not included in the server configuration

如何解决这个问题?

启用 SSLv3 时命令 openssl s_client -connect 127.0.0.1:443 -tls1_2 -msg 的输出:-

CONNECTED(00000003)
>>> ??? [length 0005]

>>> TLS 1.2 Handshake [length 0138], ClientHello

<<< ??? [length 0005]

<<< TLS 1.2 Handshake [length 003a], ServerHello

<<< ??? [length 0005]

<<< TLS 1.2 Handshake [length 12a7], Certificate

depth=3 C = US, O = "The Go Daddy Group, Inc.", OU = Go Daddy Class 2     
Certification Authority
verify error:num=19:self signed certificate in certificate chain
<<< ??? [length 0005]

<<< TLS 1.2 Handshake [length 020f], ServerKeyExchange

<<< ??? [length 0005]

<<< TLS 1.2 Handshake [length 0004], ServerHelloDone

>>> ??? [length 0005]

>>> TLS 1.2 Handshake [length 0086], ClientKeyExchange

>>> ??? [length 0005]

>>> TLS 1.2 ChangeCipherSpec [length 0001]

>>> ??? [length 0005]

>>> TLS 1.2 Handshake [length 0010], Finished

<<< ??? [length 0005]

<<< TLS 1.2 Handshake [length 00ca]???

<<< ??? [length 0005]

<<< TLS 1.2 ChangeCipherSpec [length 0001]

<<< ??? [length 0005]

<<< TLS 1.2 Handshake [length 0010], Finished

禁用 SSLv3 的命令 openssl s_client -connect 127.0.0.1:443 -ssl3 -msg 的输出:-

>>> ??? [length 0005]

>>> SSL 3.0 Handshake [length 0099], ClientHello

<<< ??? [length 0005]

<<< SSL 3.0 Alert [length 0002], fatal handshake_failure

禁用 SSLv3 时命令 openssl s_client -connect 127.0.0.1:443 -tls1_2 -msg 的输出:-

CONNECTED(00000003)
>>> ??? [length 0005]

>>> TLS 1.2 Handshake [length 0138], ClientHello

<<< ??? [length 0005]

>>> ??? [length 0005]

>>> TLS 1.0 Alert [length 0002], fatal protocol_version

当禁用 SSLv3 时,Apache 中针对命令 openssl s_client -connect 127.0.0.1:443 -tls1_2 -msg 的 SSL 调试错误日志:-

[Tue Nov 24 07:50:13.019993 2015] [ssl:info] [pid 6419] [client 127.0.0.1:32836] AH01964: Connection to child 2 established (server site1.example.com:443)
[Tue Nov 24 07:50:13.023693 2015] [ssl:info] [pid 6419] [client 127.0.0.1:32836] AH02008: SSL library error 1 in handshake (server site1.example.com:443)
[Tue Nov 24 07:50:13.023752 2015] [ssl:info] [pid 6419] SSL Library Error: error:1409442E:SSL routines:SSL3_READ_BYTES:tlsv1 alert protocol version (SSL alert number 70)
[Tue Nov 24 07:50:13.023789 2015] [ssl:info] [pid 6419] [client 127.0.0.1:32836] AH01998: Connection closed to child 2 with abortive shutdown (server site1.example.com:443)

Openssl Version info On system

sslscan --no-failed "site1.domain.com"SSLProtocol all -SSLv2 -SSLv3 在配置中使用时的命令结果:-

SSLScan Result

sslscan --no-failed "site1.domain.com"SSLProtocol all -SSLv2 -SSLv3 未在配置中使用时的命令结果:-

SSLScan Result

两个结果都没有显示 TLSv1.2 协议(protocol)的迹象。 我认为 sslscan 只扫描 SSLv3 和 TLSv1.1 协议(protocol)。不是 TLSv1.2 现在,当我在 SSLLab 上测试这个结果时如果 SSLProtocol all -SSLv2 -SSLv3 未在配置中使用,则:-

SSLLab

它说 TLSv1.2 已启用。

最佳答案

在下面添加这行并检查
SSLProtocol all -SSLv2 -SSLv3 +TLSv1.2

关于linux - 无法在 Amazon Linux 实例上禁用 SSLv3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33867730/

相关文章:

linux - Bash 脚本退出且没有错误

PHP/MySql/Jquery 脚本与 RAM

java - 从java发送数据到php时设置变量名称

apache - 如何创建tomcat访问日志设置?

mysql - 为azure mysql提供sequelize安全连接

Python 请求库 SSL 错误 : [Errno 2] No such file or directory

ssl - 尝试使用 docker、restcomm 和 letsencrypt 设置 ssl

linux - bash:家园:找不到命令

linux - npm 在所有安装过程中为下载的包运行 GET

linux - 访问另一台远程服务器Linux、Ubuntu的权限