【发布时间】:2012-02-22 13:43:08
【问题描述】:
我正在尝试使用 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
非常奇怪的是(此外,证书不会自动接受,因为它应该由我信任的 CA 签名)是我无法通过单击“添加例外...”来接受伪造的证书:我总是返回错误页面,要求我添加(其他)异常...
此外,当我尝试连接到例如:https://www.google.com 时,SSLSniff 的日志以新行完成:
DEBUG sslsniff : Encoded Length: 7064 too big for session cache, skipping...
有谁知道我做错了什么?
-- 编辑以总结不同的答案--
问题在于 SSLSniff 在伪造证书时没有处理替代名称。显然,只要 Common Name 与域名不匹配完全,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 是否故意忘记了这个功能,因为它太复杂了,或者他只是没有意识到这个问题。无论如何,我会尝试看一下代码。
【问题讨论】:
标签: c++ security ssl cryptography openssl