我正在使用Fiddler2(或尝试)来获取点击https网络服务的Windows桌面小工具的SSL流量。它曾经工作过,然后它在几天前停止了,总是出现这个错误:
---------------------------
Unable to Generate Certificate
---------------------------
Creation of the interception certificate failed.
makecert.exe returned -1.
Results from C:\Program Files\Fiddler2\MakeCert.exe -ss my -n
"CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by
http://www.fiddler2.com" -eku 1.3.6.1.5.5.7.3.1 -r -cy authority -a
sha1
Error: Can't create the key of the subject ('JoeSoft')
Failed
-------------------------------------------
(我从谷歌小组那里刷了一下小提琴手的错误,虽然我刚发布了自己的错误但很快就会看到它。)
还有其他人有这个问题并解决了吗? Fiddler刚破了吗?
答案 0 :(得分:36)
C:\Users\<username>\AppData\Roaming\Microsoft\Crypto\RSA\
AppData
目录之外的其他文件夹。 Tools
| Fiddler Options
| Enable HTTPS decryption
Desktop
),C:\Users\<username>\AppData\Roaming\Microsoft\Crypto\RSA\
skip
。答案 1 :(得分:31)
我和其他人都遇到过这个问题。它是密钥库中已存在的密钥目录,其名称与Fiddler尝试创建的密钥目录相同(可能来自以前版本的Fiddler)。
我的机器上的密钥目录位于:
C:\Users\\[username]\AppData\Roaming\Microsoft\Crypto\RSA\\[folder-with-big-name]\
请注意,冲突实际上是关键文件夹名称。我刚刚重命名了该文件夹,然后密钥生成工作正常。
有关详细信息,请参阅此链接:https://groups.google.com/d/msg/httpfiddler/B-Mu6AxgiIc/LY69rWUBshMJ
答案 2 :(得分:14)
我在Windows 8机器上遇到了同样的问题。每个@Nicholas-Cloud手动删除密钥文件对我没有帮助。所以我一直在尝试不同的事情,最后能够解决这个问题。
要解决证书问题,我执行了以下操作:
注意:如果上述步骤对您没有帮助,请尝试重新安装Fiddler并重复这些步骤。在获得HTTP选项之前,我首先重新安装了它。
答案 3 :(得分:12)
fiddler hardcoded命令已过期。
每个人都停止删除文件夹。
只需安装fliddler插件,该插件声称会生成“与android兼容的更好的证书”。它在官方提琴手插件列表中。
该插件会为您修复它。
答案 4 :(得分:8)
如果Fiddler证书生成失败,正确的解决方法是手工挑选现有的Fiddler2私钥并删除它。上面的PowerShell代码完全破坏用户的私钥存储是非常糟糕的主意。这将使每个个人证书无用。
通过运行Fiddler2运行的相同命令确认问题:
cd "C:\Program Files (x86)\Fiddler2"
makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com" -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/05/2012
如果证书生成失败,则需要删除现有私钥。有关工具的信息,请参阅http://poshcode.org/3637。
运行它:
Get-PrivateKeyPath CN=DO_NOT_TRUST_FiddlerRoot
它将返回c:\Users\JoeUser\AppData\Roaming\Microsoft\Crypto\RSA\7b90a71bfc56f2582e916a51aed6df9a_f6d54f4e-ff40-450e-9d77-7cfc383b357
之类的内容
删除该文件并再次尝试生成证书。它应该成功。 不会破坏整个私钥存储。
答案 5 :(得分:7)
对我来说,简单的解决方法是安装Fiddler CertMaker
答案 6 :(得分:2)
尼古拉斯的回答是正确的。为了帮助其他人找到这个页面:
如果您在Fiddler中单击“将Fiddler根证书导出到桌面”按钮,或者从代码中调用Fiddler.CertMaker.createRootCert()时收到消息“无法导出Fiddler的根证书”,这可能会有所帮助。
答案 7 :(得分:2)
我有同样的错误。 这当然是由于早期版本的Fiddler的存在以及它们之间的一些不兼容性。
以上文件夹仅由Fiddler使用,它存储它创建的证书(或至少用于您的盒子上的个人证书,Fiddler肯定是唯一使用它的人)。您可能想要检查您是否拥有其他个人证书而不是Fiddler证书。在IE中,这是使用工具/互联网选项/内容/证书/个人。
完全清空文件夹,不要害怕删除系统文件的消息。 然后在Fiddler中,再次选择要捕获的选项,然后解密HTTPS流量。 如果需要,重新导出桌面上的Fiddler根证书,然后在IE和FF中重新导入它。 如果需要,请重新启动浏览器并享受。
我认为不是只删除IE中发送给DO_NOT_TRUST_FIddlerRoot的私有证书,而是我没有测试过。
请记得在您不再需要它时立即关闭解密选项。
答案 8 :(得分:1)
作为Nicholas Cloud回复的补充,这里有一个小脚本可帮助您重命名该文件夹:
# Find my SID
$user = New-Object System.Security.Principal.NTAccount([Environment]::UserName) $mySID = ($user.Translate([System.Security.Principal.SecurityIdentifier])).Value
# Rename keys folder with a timestamp
$timeStamp = Get-Date -format "ddMMyyhhmmss"
$folder = Join-Path -Path $env:USERPROFILE -ChildPath "appData\Roaming\Microsoft\Crypto\RSA\$mySID"
Rename-Item -Force $folder "$folder.$timeStamp"
在Nicholas的回复中添加评论确实允许我格式化代码,所以我最终创建了一个单独的回复。
答案 9 :(得分:1)
您可以通过在C:\ Users \\ AppData \ Roaming \ Microsoft \ Crypto \ RSA \ path中查找文件内容中的“JoeSoft”来识别冲突文件。
答案 10 :(得分:0)
我有这个确切的错误,只能通过以下方式解决:
您可能只需更新fiddlerCore(有关详细信息,请参阅this SO问题),但我列出了我所做的一切,以确保完全安全。
答案 11 :(得分:0)
cd到安装文件夹“ d:\ Program Files \ Fiddler” 运行以下命令
makecert.exe -r -ss my -n "CN=DO_NOT_TRUST_FiddlerRoot, O=DO_NOT_TRUST, OU=Created by http://www.fiddler2.com" -sky signature -eku 1.3.6.1.5.5.7.3.1 -h 1 -cy authority -a sha1 -m 120 -b 09/05/2012
将创建证书并解决问题