我正在尝试使用SSLSniff的工具,并且遇到了一些技术问题...我一直在寻找任何类似的问题,但是唯一的结果是来自Twitter提要,没有任何公开的有用答案。因此,这里是:

(我的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

super 奇怪的是(此外,证书不会自动接受,因为它应该由我的受信任的CA签署)是我无法通过单击“添加异常(exception)...”来接受伪造的证书:我总是返回到错误页面,要求我添加一个(其他)异常...

此外,当我尝试连接到例如https://www.google.com时,S​​SLSniff的日志以新行完成:
DEBUG sslsniff : Encoded Length: 7064 too big for session cache, skipping...

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

-编辑以总结各种答案-

问题在于,SSLSniff伪造证书时不会处理替代名称。显然,只要通用名称与域名不完全匹配,Firefox就会拒绝任何证书。

例如,对于Google.com:CN = www.google.com,没有替代名称。因此,当您连接到https://www.google.com时,它工作正常。
但是对于Google.fr:CN = * .google.fr,并使用以下备用名称:*。google.fr和google.fr。因此,当您连接到https://www.google.fr时,FF正在寻找替代名称,并且由于显然找不到任何替代名称,因此拒绝格式错误的证书。

...所以解决方案是修补/提交...我不知道Moxie Marlinspike是否因为过于复杂而故意忘记了此功能,或者他只是不知道这个问题。无论如何,我将尝试看一下代码。

最佳答案

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

至于您的实际问题,请注意sslsniff不支持X.509v3 subjectAltNames,因此,如果您连接到其主机名与证书的主题公用名不匹配,而仅与subjectAltName匹配的站点,则sslsniff将生成一个不包含subjectAltNames的伪造证书,这将导致连接客户端上的主机名验证不匹配。

如果您的问题仅在某些特定网站上发生,请告知我们该网站,以便我们可以使用例如openssl s_client -connect host:port -showcertsopenssl x509 -in servercert.pem -text。如果所有站点都发生这种情况,则上述内容并非解释。

关于c++ - SSLSniff错误: “SSL Accept Failed”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9395990/

10-11 01:10