SSL嗅探错误:"SSL Accept Failed"

SSLSniff error: "SSL Accept Failed"

本文关键字:SSL Failed Accept 嗅探 错误      更新时间:2023-10-16

我正在尝试使用SSLSniff的工具,但我遇到了一些技术问题。。。我一直在寻找类似的问题,但唯一的结果来自推特,没有公开有用的答案。所以,它是:

(我的SSLSniff版本是0.8)我正在启动带有args:的SSLSniff

sslsniff -a -c cert_and_key.pem -s 12345 -w out.log  

其中:cert_and_key.pem文件是我的权威机构的证书,与我的未加密私钥连接(当然是pem格式),12345是我使用iptables规则重定向流量的端口。

因此sslsniff正在正确运行:

INFO sslsniff : Certificate ready: [...]  

[无论何时我连接到客户端,都有以下两行:]

DEBUG sslsniff : SSL Accept Failed!  
DEBUG sslsniff : Got exception: Error with SSL connection.

在我的客户方面,我已经将我的AC注册为受信任的CA(与FF)。然后,当我通过SSL连接时,我出现了错误:

Secure Connection Failed.  
Error code: ssl_error_bad_cert_domain

超级奇怪的是(此外,证书不会自动被接受,因为它应该由我信任的CA签名),我无法通过点击"添加异常…"来接受伪造的证书:我总是返回错误页面,要求我添加(其他)异常。。。

此外,当我尝试连接到例如:https://www.google.com,SSLSniff的日志用一行新行完成:

DEBUG sslsniff : Encoded Length: 7064 too big for session cache, skipping...  

有人知道我做错了什么吗?

-编辑以汇总不同的答案

问题是SSLSniff在伪造证书时没有注意到alternive名称。显然,一旦通用名称与域名不完全匹配,Firefox就会拒绝任何证书。

例如,对于Google.com:CN=www.Google.com,没有其他名称。所以当你连接到https://www.google.com,运行良好
但对于Google.fr:CN=*.Google.fr,有这些替代名称:*.Google.fer和Google.fr。所以当你连接到https://www.google.fr,FF正在寻找替代名称,由于显然找不到,因此拒绝了格式错误的证书。

因此,解决方案是修补/提交。。。我不知道Moxie Marlinspike是否因为太复杂而故意忘记了这个功能,或者他只是没有意识到这个问题。不管怎样,我会试着看一下代码。

会话编码长度错误消息:当缓存SSL会话失败时,意味着后续连接上的SSL会话恢复将失败,导致性能下降,因为每个请求都需要进行完整的SSL握手。然而,尽管使用了更多的CPU,sslsniff仍然可以正常工作。缓存失败,因为OpenSSL会话对象(SSL_session)的序列化表示大于sslsniff的会话缓存支持的最大大小。

至于您真正的问题,请注意,sslsniff不支持X.509v3 subjectAltNames,因此,如果您连接到的站点的主机名与证书的使用者通用名不匹配,而是仅与subjectAltName匹配,则sslsniff将生成一个不带subjectAltName:的伪造证书,这将导致连接客户端的主机名验证不匹配。

如果您的问题仅发生在某些特定站点,请告知我们该站点,以便我们可以使用例如openssl s_client -connect host:port -showcertsopenssl x509 -in servercert.pem -text检查服务器证书。如果所有站点都发生这种情况,那么以上并不是解释。

使用您完全控制的证书尝试直接的MITM,并确保您没有OCSP/Perspectives/Convergance之类的东西干扰事情。除此之外,可以将证书添加到操作系统的受信任根目录中。我认为windows上的FF使用windows证书存储(start->run->certmgr.msc)。也可能值得尝试类似Burp的东西,看看错误是否本地化为SSLSniff或所有MITM尝试。