【问题标题】:fiddler2 unable to generate certificatefiddler2 无法生成证书
【发布时间】:2011-04-01 22:13:31
【问题描述】:

我正在使用 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 
------------------------------------------- 

(我从 google group for fiddler 刷了错误,虽然我刚刚发布了自己的错误,应该很快就会看到)。

有其他人遇到过这个问题并解决了吗? Fiddler 刚刚坏了吗?

【问题讨论】:

  • MakeCert 显然不适合你,“Fiddler”本身工作正常。下一步是收集进程监控日志并检查在访问注册表或磁盘上的文件时发现错误的位置。

标签: https fiddler makecert


【解决方案1】:

在 Win7 中

  • 所以去这里:C:\Users\<username>\AppData\Roaming\Microsoft\Crypto\RSA\
  • 选择所有文件(以 UUIDS 命名)。
  • 将这些文件移动到您的桌面或AppData 目录之外的其他文件夹。
  • 启动Fiddler,转至Tools | Fiddler Options | Enable HTTPS decryption
  • 看看这次它可以正常工作(希望如此)。
  • 将文件从其临时位置(即Desktop)移回,
    到他们原来的:C:\Users\<username>\AppData\Roaming\Microsoft\Crypto\RSA\
  • 当其中一个文件询问您是否要替换现有文件时,skip 它。

【讨论】:

  • 这可能是最好、最简单的答案。
【解决方案2】:

我和其他人都遇到过这个问题。它是密钥存储中已经存在的密钥目录,与 Fiddler 尝试创建的密钥目录同名(可能来自以前版本的 Fiddler)。

我机器上的key目录位于:

C:\Users\\[username]\AppData\Roaming\Microsoft\Crypto\RSA\\[folder-with-big-name]\

请注意,冲突实际上是关键文件夹名称。我只是重命名了文件夹,然后密钥生成工作正常。

查看此链接了解更多信息:https://groups.google.com/d/msg/httpfiddler/B-Mu6AxgiIc/LY69rWUBshMJ

【讨论】:

  • +1 但是对我来说重命名没有用,而是我不得不移动它[然后我将文件夹合并回来],(但也许原因是我通过附加它来重命名它,如现在我无法测试它,因为它已经在工作了)
  • @yohal,我还尝试在文件夹名称中添加前缀,但不起作用。一旦我从目录中删除了文件夹。
  • 如下 dmytroUa 所述,我还必须卸载并重新安装 Fiddler,实际上是升级到 Fiddler4,并且在将密钥库移出、创建证书并将其余的密钥库复制回去之后它开始工作.
  • 不要删除文件夹!它包含提琴手不使用的私钥。
  • 不删除文件夹不是解决方案,但是假设删除实际上会产生更多问题,我们可以删除文件夹并再次将其放回与新文件夹合并。这就是我所做的,看起来很好。
【解决方案3】:

我在我的 Windows 8 机器上遇到了同样的问题。根据@Nicholas-Cloud 手动删除密钥文件对我没有帮助。所以我不断尝试不同的东西,终于能够解决这个问题。

为了解决证书问题,我做了以下操作:

  1. 在工具->选项->HTTPS 选项卡中取消选中“解密 HTTPS 流量”选项。这启用了对话框底部的“删除拦截证书”按钮
  2. 单击“删除拦截证书”按钮
  3. 对所有弹出消息说“是”
  4. 重新启用“解密...”选项。
  5. 一系列弹出消息将按照Fiddler Windows 8 Configuration Steps 中的描述进行

注意:如果上述步骤对您没有帮助,请尝试重新安装 Fiddler 并重复这些步骤。在进入 HTTP 选项之前,我确实先重新安装了它。

【讨论】:

  • 这对我有用并且非常有意义,因为我的 AppData 是从已经包含 Fiddler 证书的备份中恢复的 - 这应该是公认的答案。
  • 这适用于 Windows 7,而上述两种较高的投票方法则没有。
  • 谢谢!重新安装部分为我做了。你救了我的头发。
【解决方案4】:

fiddler 硬编码命令已过期。

大家停止删除文件夹。

只需安装声称会生成“适用于 android 的更好证书”的 fliddler 插件。它在官方提琴手插件列表中。

那个插件会帮你解决的。

【讨论】:

  • 这是最新和最快的解决方案,在我的情况下,也是唯一有效的解决方案。
  • 这也是在我的一台机器上对我有用的唯一方法
  • 有问题的扩展是“CertMaker for iOS and Android”。
  • 这是对我有用的解决方案。替换文件夹不起作用
【解决方案5】:

如果 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 删除该文件并再次尝试生成证书。它应该成功。请勿销毁您的整个私钥存储。

【讨论】:

  • 运行makecert.exe ... 成功。但是起初我重命名/移动了文件夹但没有成功。 (后来我恢复了)
【解决方案6】:

对我来说简单的解决方法是安装Fiddler CertMaker

【讨论】:

    【解决方案7】:

    尼古拉斯的回答是正确的。为了帮助其他人也找到这个页面:

    如果您在 Fiddler 中单击“将 Fiddler 根证书导出到桌面”按钮或从代码中调用 Fiddler.CertMaker.createRootCert() 时收到消息“无法导出 Fiddler 的根证书”,这可能会有所帮助。

    【讨论】:

      【解决方案8】:

      我有同样的错误。 这当然是由于早期版本的 Fiddler 的存在以及它们之间的一些不兼容。

      上面的文件夹仅供 Fiddler 使用,它存储它创建的证书(或至少用于您盒子上的个人证书,Fiddler 肯定是唯一使用它的人)。您可能需要检查您是否有除 Fiddler 之外的其他个人证书。在 IE 中,这是使用工具/互联网选项/内容/证书/个人。

      完全清空文件夹,不要害怕删除系统文件的消息。 然后在 Fiddler 中,再次选择捕获然后解密 HTTPS 流量的选项。 如果需要,在桌面上重新导出 Fiddler 根证书,然后在 IE 和 FF 中重新导入。 如果需要,请重新启动您的浏览器并开始使用。

      我认为,颁发给 DO_NOT_TRUST_FIddlerRoot 的私有证书不会删除所有仅在 IE 中删除的内容,但我没有对此进行测试。

      记得在不再需要解密选项时关闭它。

      【讨论】:

        【解决方案9】:

        作为对 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 的回复中添加评论确实让我可以格式化代码,所以我最终创建了一个单独的回复。

        【讨论】:

          【解决方案10】:

          您可以通过在 C:\Users\\AppData\Roaming\Microsoft\Crypto\RSA\ 路径的文件内容中查找“JoeSoft”来识别冲突文件。

          【讨论】:

            【解决方案11】:

            我遇到了这个确切的错误,只能通过以下方式解决它:

            1. 正在更新fiddlerCore
            2. 正如@DemytroUa 所说,“在工具->选项->HTTPS 选项卡中未选中“捕获 HTTPS 连接”选项。然后点击对话框底部的“删除拦截证书”按钮'
            3. 打开证书管理器(在运行对话框中输入 certmgr.msc - windows + r)
            4. 导航到个人 -> 证书
            5. 删除所有“DO_NOT_TRUST_FiddlerRoot”证书
            6. 在 Fiddler 上选中“工具中的解密 HTTPS 流量->Fiddler 选项->HTTPS 选项卡

            您可能只需要更新 fiddlerCore(有关更多详细信息,请参阅this SO 问题),但我列出了我所做的一切以确保完全安全。

            【讨论】:

              【解决方案12】:

              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
              

              将创建证书并解决问题

              【讨论】:

                猜你喜欢
                • 2017-01-28
                • 1970-01-01
                • 1970-01-01
                • 2022-08-10
                • 2020-05-20
                • 2014-10-31
                • 2020-07-02
                • 2014-07-14
                • 1970-01-01
                相关资源
                最近更新 更多