我正在尝试使用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在伪造证书时没有处理交替的名称。显然,只要公共名称与完全域名不匹配,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是否故意忘记了这个功能,因为它太复杂了,或者他是不是意识到这个问题。无论如何,我会试着看一下代码。
答案 0 :(得分:3)
会话编码长度错误消息:当缓存SSL会话失败时,这意味着后续连接上的SSL会话恢复将失败,从而导致性能下降,因为需要对每个请求执行完整的SSL握手。然而,尽管使用CPU更重,sslsniff仍然可以正常工作。缓存失败,因为OpenSSL会话对象(SSL_SESSION)的序列化表示大于sslsniff会话缓存支持的最大大小。
至于你的真实问题,请注意sslsniff不支持X.509v3 subjectAltNames,所以如果你连接的主机名与证书的主题公用名不匹配,但只匹配subjectAltName,那么sslsniff将生成一个没有subjectAltNames的伪造证书,这将导致连接客户端上的主机名验证不匹配。
如果您的问题仅针对某些特定网站发生,请告知我们该网站,以便我们可以使用以下网站检查服务器证书: openssl s_client -connect host:port -showcerts
和openssl x509 -in servercert.pem -text
。如果它发生在所有网站上,那么以上就不是解释了。
答案 1 :(得分:1)
尝试使用您完全控制的证书的直接MITM,并确保您没有干涉某些OCSP / Perspectives / Convergance的东西。除此之外,可以将证书添加到OS受信任的根目录。我认为Windows上的FF使用Windows证书库(start-> run-> certmgr.msc)。使用像Burp这样的东西也可能值得尝试查看错误是否已本地化为SSLSniff或所有MITM尝试。