下面我将为你详细解释 certmgr.exe 的用法,包括其不同模式、常用命令和实例。

什么是 certmgr.exe?
certmgr.exe 是一个证书管理器命令行工具,它的核心功能是管理证书存储区(Certificate Stores)中的证书,证书存储区就像是存放数字证书的“文件夹”或“保险箱”。
certmgr.exe 的三种主要模式
certmgr.exe 的行为取决于你提供的参数,主要有三种模式:
/s模式(默认模式,用于查看和删除):这是最常用的模式,用于与系统或用户的证书存储区进行交互。/add模式(用于导入证书):将证书文件(如 .cer, .pfx)导入到指定的证书存储区。/del模式(用于删除证书):从证书存储区中删除指定的证书。
详细命令语法与实例
/s - 查看、删除系统/用户存储区中的证书
这是默认模式,如果你只提供存储区名称,它会列出该存储区中的所有证书。
基本语法:

certmgr.exe [-s] [-user | -enterprise | -machine] [-v] [-c] [-n name] [-sha1 thumbprint] [-store storename]
常用参数:
-s: 指定操作针对证书存储区,如果省略,且没有/add或/del,这也是默认行为。-user: 指定操作针对当前用户的证书存储区。-machine: 指定操作针对本地计算机的证书存储区(需要管理员权限)。-enterprise: 指定操作针对 Active Directory 企业证书存储区(需要域管理员权限)。-v: 详细输出,显示证书的详细信息(如颁发者、有效期、指纹等)。-c: 仅显示自签名证书。-n "name": 指定要操作的证书的“友好名称”。-sha1 thumbprint: 指定要操作的证书的 SHA1 指纹(最精确的查找方式)。-store storename: 指定证书存储区的名称。这是最关键的参数。
常用证书存储区名称:
My: 个人(也称为“我的”),存放你自己的私钥和证书。Root: 受信任的根证书颁发机构,存放受信任的CA证书。CA: 中级证书颁发机构。TrustedPublisher: 受信任的发布者。TrustedPeople: 受信任的人员。
实例 1:列出“受信任的根证书颁发机构”中的所有证书
certmgr.exe -s -user -store Root
-s: 操作存储区-user: 当前用户存储区-store Root: 指定“受信任的根证书颁发机构”存储区
实例 2:以详细形式查看“个人”存储区中所有证书

certmgr.exe -s -user -store My -v
-v: 显示详细信息。
实例 3:删除“个人”存储区中“友好名称”为 "MyTestCert" 的证书
certmgr.exe -s -user -store My -n "MyTestCert" -del
-n "MyTestCert": 指定友好名称。-del: 执行删除操作。
实例 4:根据指纹删除“本地计算机”的“中级证书颁发机构”中的一个证书 (需要以管理员身份运行 CMD)
certmgr.exe -s -machine -store CA -sha1 "12 34 56 78 90 AB CD EF 12 34 56 78 90 AB CD EF 12 34 56 78" -del
-machine: 本地计算机存储区。-sha1 ...: 使用证书的指纹进行精确定位。
/add - 从文件导入证书
此模式用于将证书文件(如 .cer, .crt, .p7b, .pfx)添加到证书存储区。
基本语法:
certmgr.exe /add filename.cer [-s | -user | -machine] [-store storename] [-all] [-p password]
常用参数:
/add filename.cer: 指定要导入的证书文件名。-p password: 如果导入的是 PFX 文件(包含私钥),需要提供密码。-all: 当导入一个包含多个证书的文件(如 P7B)时,导入所有证书。
实例 5:将 my_certificate.cer 文件导入到当前用户的“受信任的根证书颁发机构”
certmgr.exe /add C:\path\to\my_certificate.cer -s -user -store Root
实例 6:将包含私钥的 my_private_key.pfx 文件导入到当前用户的“个人”存储区
certmgr.exe /add C:\path\to\my_private_key.pfx -s -user -store My -p "your_pfx_password"
/del - 从存储区删除证书(与 /s 模式类似)
虽然 /s -del 也能删除,但 /del 模式是另一种写法,功能上基本一致。
基本语法:
certmgr.exe /del [-s] [-user | -machine] [-sha1 thumbprint] [-n name] [-store storename]
参数与 /s 模式下相同。
实例 7:使用 /del 模式删除证书
certmgr.exe /del -s -user -store My -n "AnotherCert"
与 certmgr.msc 的区别
| 特性 | certmgr.exe (命令行) |
certmgr.msc (管理单元) |
|---|---|---|
| 类型 | 命令行工具 | 图形化用户界面 |
| 使用场景 | 自动化脚本、批量操作、远程服务器管理 | 日常手动管理、查看、导入、导出、设置信任 |
| 灵活性 | 高度可编程,适合集成到脚本中 | 直观易用,无需记忆命令 |
| 启动方式 | 在命令提示符或 PowerShell 中直接运行 certmgr.msc |
在命令提示符或 PowerShell 中直接运行 certmgr.exe |
- 想要点击鼠标管理证书?用
certmgr.msc。 - 想要写个脚本自动管理证书?用
certmgr.exe。
常见问题与技巧
Q: 如何找到证书的指纹或友好名称?
A: 使用 certmgr.exe -v 命令列出证书,在输出中可以清楚地看到“颁发者”、“主题”、“指纹”和“友好名称”。
Q: 如何以管理员身份运行?
A: 在开始菜单搜索 "cmd",右键点击“命令提示符”,选择“以管理员身份运行”,执行 -machine 相关操作时必须这样做。
Q: 找不到 certmgr.exe 怎么办?
A: certmgr.exe 通常包含在 Windows SDK 或 Visual Studio 的安装包中,如果你没有安装这些,可以使用系统自带的 PowerShell 命令作为替代方案:
- 查看证书:
Get-ChildItem -Path Cert:\LocalMachine\Root Get-ChildItem -Path Cert:\CurrentUser\My
- 导入证书:
Import-Certificate -FilePath "C:\path\to\my_certificate.cer" -CertStoreLocation Cert:\LocalMachine\Root Import-PfxCertificate -FilePath "C:\path\to\my_private_key.pfx" -CertStoreLocation Cert:\CurrentUser\My -Password (Read-Host -AsSecureString "Enter PFX password")
- 删除证书:
# 先找到证书,再删除 $cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object { $_.Subject -like "*MyTestCert*" } Remove-Item -Path $cert.PSPath
希望这份详细的指南能帮助你熟练掌握 certmgr.exe 命令!
