Fiddler之makecert.exe提示Failed to acquire a security provider from issuer's centificate问题解决

当使用Fiddler时遇到makecert.exe提示'Failed to acquire a security provider from issuer's certificate'错误,可能由于Fiddler根证书损坏。解决方案包括检查%appdata%MicrosoftCryptoRSA的权限,删除已存在的RSA文件,以及重新创建根证书。通过这些步骤,可以成功解决Fiddler解密HTTPS流量时遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Fiddler抓包https时会发生这个问题,最初碰到这个问题的时候始终弄不清楚什么原因,有的机器可以,有的机器就不行。
经过一番google之后,才终于解决这个问题,下面说一下解决的思路。最初的错误提示如下图:

![错误提示](https://img-blog.youkuaiyun.com/20150618195707682)
首先删除当前的根证书,删除的步骤如下(这个步骤从网上拷贝了,见后文参考链接):
1. Go to Start/Run and run "MMC"
2. Go to File..Add/Remove Snap-in
3. Click Add
4. Select Certificates and click Add
5. Selet My User Account and click finish
6. Close the dialogs and you will be in the certificates snap-in
7. Go to Certificates-Current User/Personal/Certificates
8. Right click on DO_NOT_TRUST_FiddlerRoot and delete it.

When you restart Fiddler and hit your first HTTPS site it will re-create the certificate and fiddler should work.    

接下来重新启动Fiddler,再打开一个https的网站试试,这时候有可能makecert会提示另一个错误:
Can’t create the key of the subject (‘JoeSoft’)

在网上搜索这个错误的参考文章,发现说是权限的问题,我检查了%appdata%\Microsoft\Crypto\RSA\S-1-5-21-452922241-2776708937-1870220006-1000路径的权限,发现没有问题,在使用ProcessExplorer监控makecert.exe后发现,makecert会尝试写入一个文件:

C:\Users\user\AppData\Roaming\Microsoft\Crypto\RSA\S-1-5-21-3753638101-336018595-2945602125-1000\7b90a71bfc56f2582e916a51aed6df9a_8d239c71-c713-4d56-8ddb-15fe7cecf805

而这个文件已经存在了,于是我将这个文件改为其他名字,再次运行Fiddler,进入:
Tools->Fiddler Options->HTTPS->勾选Decrypt HTTPS traffic。
没有再提示那个can’t create的错误,说明已经成功了。然后打开一个https站点试试,成功解析https请求,大功告成!

总结一下,出现那个错误,有可能是Fiddler根证书损坏引起的,删除根证书后,Fiddler会尝试创建新的根证书,但是因为RSA目录下文件已存在,导致无法创建。因此其实要删除根证书和对应的文件才行了。

参考网址(需要跳墙):
1. http://houseofderek.blogspot.com/2009/07/problem-using-fiddler-to-monitor-ssl.html
2. http://nerdwords.blogspot.com/2008/01/makecertexe-error-can-create-key-of.html

<think>嗯,用户的问题是关于如何解决makecert.exe缺失的问题,或者如何下载安装这个工具。首先,我需要回忆一下makecert.exe是什么。记得它是微软的一个工具,用来生成证书,常用于开发和测试SSL/TLS证书。不过好像现在微软已经不再推荐使用它了,可能被其他工具替代了,比如PowerShell的Cmdlet或者OpenSSL。 用户可能是在尝试生成证书时遇到了问题,系统提示找不到makecert.exe。这时候需要给出替代方案。首先,用户可能需要安装Windows SDK,因为makecert.exe通常是包含在里面的。但根据引用中的信息,用户可能需要下载特定的文件,或者使用其他方法。 根据提供的引用内容,引用[1]和[3]提到了使用makecert.exe生成根证书的具体命令,引用[2]提到下载makecab.exe并放入指定目录,这可能是一个替代方法?不过makecab和makecert功能不同,可能需要澄清。引用[4]和[5]涉及证书安装和权限问题,可能与用户的场景相关,但用户的主要问题是工具缺失。 正确的解决步骤应该是先建议用户检查是否安装了Windows SDK,或者是否路径中有该工具。如果没有,可能需要下载SDK或者单独获取makecert.exe。另外,替代方案如PowerShell的New-SelfSignedCertificate命令可能更现代,推荐使用。还可以建议使用OpenSSL来生成证书,这也是常见的做法。 需要注意的是,用户可能是在开发或测试环境中需要生成证书,比如配置本地HTTPS或调试工具如Fiddler。所以需要提供不同情况下的解决方法,比如使用PowerShell、OpenSSL或者手动安装SDK中的工具。此外,引用中的信息提到通过代码安装证书,可能需要结合这些步骤。 需要确保回答结构清晰,分步骤说明,并且引用相关的引用内容。例如,引用[2]提到下载makecab.exe,但可能用户误以为是makecert,需要指出两者的区别。引用[3]中的命令示例可以用于说明如何正确使用makecert的参数。 总结步骤应该是:1. 安装Windows SDK获取makecert.exe;2. 使用PowerShell替代;3. 使用OpenSSL替代;4. 手动下载并配置makecert.exe(注意安全风险)。同时提醒用户微软已弃用该工具,推荐使用更现代的方法。</think>### 解决 `makecert.exe` 缺失问题的分步指南 `makecert.exe` 是微软用于生成测试证书的工具,但自 Windows 10 起不再默认包含。以下是解决方法: --- #### 方法 1: 通过 **Windows SDK** 安装 1. **下载 Windows SDK** - 访问 [Windows SDK 下载页面](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/),选择与系统匹配的版本(如 10/11)。 2. **自定义安装** - 安装时勾选 **"Windows 开发工具包"** 或 **"Windows SDK 签名工具"**,确保包含 `makecert.exe`。 3. **配置环境变量** - 安装完成后,找到 `makecert.exe` 的路径(通常为 `C:\Program Files (x86)\Windows Kits\10\bin\<版本号>\x64`)并添加到系统环境变量 `PATH` 中[^1][^3]。 --- #### 方法 2: 使用 **PowerShell 替代命令** 微软推荐使用 `New-SelfSignedCertificate` 替代 `makecert.exe`: ```powershell New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName "localhost" -FriendlyName "TestCert" -NotAfter (Get-Date).AddYears(10) ``` 此命令生成自签名证书并存储到本地计算机的证书库[^4]。 --- #### 方法 3: 使用 **OpenSSL** 生成证书 1. **安装 OpenSSL** - 下载 [OpenSSL for Windows](https://slproweb.com/products/Win32OpenSSL.html) 并安装。 2. **生成私钥和证书** ```bash openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes ``` 生成的 `cert.pem` 和 `key.pem` 可直接用于测试环境。 --- #### 方法 4: 手动下载 `makecert.exe`(需谨慎) 1. **获取文件** - 从可信来源(如旧版 Windows SDK 或开发工具包)提取 `makecert.exe`,或通过第三方工具包下载[^2]。 2. **放置到系统目录** - 将文件复制到系统目录(如 `C:\Windows\System32`)或项目目录中,确保权限匹配[^5]。 --- #### 注意事项 - **安全风险**:手动下载的 `makecert.exe` 可能被篡改,建议优先使用官方工具。 - **兼容性**:若用于 IIS 或 Fiddler 调试,需确保证书私钥权限正确配置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值