无法在 Apache + mod_nss 中禁用 SSLv3

无法在 Apache + mod_nss 中禁用 SSLv3

我正在尝试通过 Apache (RHEL 7) 中的 mod_nss 实现 TLS。根据文档,我已经安装了mod_nss并删除mod_ssl

我已按照文档中概述的步骤进行操作(请参阅上面的链接),特别是确保NSS协议指令内容如下(根据文档,这将禁用除 TLS 版本 1 及更高版本之外的所有 SSL 和 TLS 协议版本):

NSSProtocol TLSv1.0,TLSv1.1

然后我重新启动Apache并测试是否启用了SSLv3:

openssl s_client -connect localhost:443 -ssl3

返回:

[root@box1 ~]# openssl s_client -connect localhost:443 -ssl3
CONNECTED(00000003)
139894684407712:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number:s3_pkt.c:339:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 7 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : SSLv3
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1442107224
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---
[root@box1 ~]# 

如您所见,握手完成(如SSL握手已读取5个字节并写入7个字节)所以这让我怀疑 SSLv3 是否真的被禁用了。

我花了无数个小时寻找解决方案,但我找到的所有内容都告诉我如何通过 mod_ssl 而不是 mod_nss 禁用 SSLv3。

任何想法或澄清都将受到欢迎。

答案1

没有发生任何不好的事情,因为您遇到了握手错误:

错误:1408F10B:SSL 例程:SSL3_GET_RECORD:版本号错误

客户端/服务器如何在不发送字节的情况下确定版本号错误?

从命令中删除-ssl3,您将看到差异:

SSL握手已读取4493字节并写入499字节

此外,如果连接已建立,则s_client等待您的输入将其传输到服务器。如果没有连接,它就会返回。

相关内容