Windows certutil 命令完整手册
适用系统:Windows XP / Server 2003 及以上所有版本
类型:系统内置命令行工具(C:\Windows\System32\certutil.exe)
📖 目录
- 概述
- 基本语法与帮助
- 核心功能速览
- 常用命令详解
- 查看证书颁发机构(CA)配置
- 管理证书存储区
- 导入与导出证书(含私钥)
- 计算文件哈希值
- Base64 / 十六进制编码解码
- 验证证书与密钥对
- 备份与还原CA组件
- 高级诊断工具
- 典型应用场景与示例
- 安全警示
- 常见问题(FAQ)
- 参考资料
概述
certutil 是 Windows 证书服务(Certificate Services)的命令行客户端工具。它允许管理员和开发人员:
- 查看、配置、管理本地或远程的证书颁发机构(CA)
- 操作 Windows 证书存储区(导入、导出、删除、列出证书)
- 对证书、密钥对、证书吊销列表(CRL)进行验证和诊断
- 对文件进行哈希计算(MD5、SHA1、SHA256 等)和 Base64 编码/解码
- 备份与还原 CA 关键数据(数据库、私钥等)
注意:微软官方将其定位为管理和诊断工具,不建议在生产代码中依赖其输出格式,也不提供应用程序兼容性保证。
基本语法与帮助
certutil [选项] [参数]
查看所有可用选项:
certutil -?
查看包含隐藏/调试选项的完整列表:
certutil -v -?
查看某个特定子命令的详细用法(例如 -dump):
certutil -dump -?
核心功能速览
| 功能分类 | 常用子命令 | 简要说明 |
|---|---|---|
| CA 配置查看 | -dump, -config |
显示当前 CA 配置、策略模块等信息 |
| 存储区管理 | -store, -addstore, -delstore |
列出/添加/删除证书存储区中的证书 |
| 导入导出 | -importpfx, -exportpfx, -p |
导入/导出带私钥的 PFX 文件 |
| 哈希/编码 | -hashfile, -encode, -decode |
计算文件哈希值,Base64 编解码 |
| 验证诊断 | -verify, -key, -verifykeys |
验证证书链、密钥配对 |
| 备份还原 | -backup, -backupkey, -restore |
备份/还原 CA 数据库及密钥 |
| CRL 管理 | -crl, -getcrl |
查看或下载证书吊销列表 |
| 高级工具 | -asn, -oid, -sign, -verifyctl |
ASN.1 解析、OID 操作、签名验证等 |
常用命令详解
查看证书颁发机构(CA)配置
在安装了证书服务的服务器上运行 certutil 不带参数,显示当前 CA 的基本信息。
certutil
转储完整的 CA 配置信息(包括注册表设置、策略模块、安全描述符等):
certutil -dump
指定远程 CA 服务器(需权限):
certutil -config "CA服务器名\CA名称" -dump
管理证书存储区
Windows 证书存储区分为多个逻辑容器,常见的有:
- My — 当前用户的个人证书
- Root — 受信任的根证书颁发机构
- CA — 中间证书颁发机构
- TrustedPublisher — 受信任的发布者
- AddressBook — 其他人证书(通讯簿)
列出存储区内容(默认当前用户):
certutil -store My
输出包括证书序列号、颁发者、有效期、公钥等。
列出系统(本地计算机)存储区(需管理员):
certutil -store -enterprise My
添加证书到存储区(将文件 myCert.cer 加入“受信任的根证书”存储区):
certutil -addstore Root myCert.cer
从存储区删除证书(根据序列号或证书指纹):
certutil -delstore My "序列号或指纹"
查看存储区详细信息(包含私钥标记等):
certutil -store -v My
导入与导出证书(含私钥)
导入 PFX 文件(包含私钥)到“个人”存储区:
certutil -importpfx My myCert.pfx
执行后会提示输入 PFX 密码。若需静默导入(明文密码):
certutil -importpfx My myCert.pfx -p "密码"
导出 PFX 文件(从存储区导出私钥):
certutil -exportpfx My "证书序列号或主题" outCert.pfx
同样需要设置导出密码(-p 参数)。
导出不带私钥的 CER 证书文件(Base64 或 DER 格式):
certutil -export My "序列号" outCert.cer
列出存储区所有证书的序列号和主题(便于导出):
certutil -store My | findstr "序列号\|主题"
计算文件哈希值
这是 certutil 在日常中最常用的轻量级功能。
基本用法:
certutil -hashfile 文件路径 [算法]
- 算法可选:
MD2,MD4,MD5,SHA1,SHA256,SHA384,SHA512 - 若不指定算法,默认
SHA1
示例:
certutil -hashfile C:\Users\demo\setup.exe MD5
certutil -hashfile C:\Users\demo\setup.exe SHA256
输出结果包含哈希字符串和一行空行,便于重定向到文件:
certutil -hashfile myfile.txt SHA256 > myfile.sha256
Base64 / 十六进制编码解码
Base64 编码文件(将二进制文件转为 Base64 文本):
certutil -encode input.bin output.txt
Base64 解码(将 Base64 文本还原为二进制):
certutil -decode input.txt output.bin
十六进制编码(将文件转为十六进制字符串):
certutil -encodehex input.bin output.txt
该命令常用于查看二进制文件结构或调试。
验证证书与密钥对
验证证书链(检查证书是否有效、是否被吊销):
certutil -verify myCert.cer
验证公钥与私钥是否匹配:
certutil -verifykeys "证书主题" "加密容器名"
或使用:
certutil -verifykeys -user My "主题"
查看证书中的扩展信息(如 OID、SAN 等):
certutil -dump myCert.cer
备份与还原 CA 组件
备份 CA 数据库、证书和私钥(备份到指定目录):
certutil -backup "备份目录路径"
仅备份 CA 私钥:
certutil -backupkey "备份目录路径"
还原备份:
certutil -restore "备份目录路径"
⚠️ 还原操作风险极高,建议在离线模式下操作。
高级诊断工具
显示证书吊销列表(CRL):
certutil -crl
下载 CRL 到文件:
certutil -getcrl "CRL分发点URL" crl.der
解析 ASN.1 结构(查看证书内部编码):
certutil -asn myCert.cer
显示支持的对象标识符(OID):
certutil -oid 1.2.840.113549.1.1.1 (显示 RSA 加密算法 OID 信息)
测试并签名数据(需证书):
certutil -sign My "数据文件" "签名文件"
验证时间戳或 CTL(证书信任列表):
certutil -verifyctl "CTL文件"
典型应用场景与示例
🔹 场景一:快速计算下载文件的校验和
certutil -hashfile D:\downloads\Ubuntu.iso SHA256
用于与官网提供的 SHA256 值对比,确认文件完整性。
🔹 场景二:将 PEM 格式证书转为 CER 并导入存储区
如果拿到一个 Base64 编码的 PEM 证书,但扩展名为 .pem,可先解码为 DER 再导入:
certutil -decode cert.pem cert.cer
certutil -addstore Root cert.cer
🔹 场景三:备份当前用户的个人证书(含私钥)并迁移到另一台机器
certutil -exportpfx My "CN=MyUserCert" mycert.pfx -p "备份密码"
将 PFX 复制到新机器,然后导入:
certutil -importpfx My mycert.pfx -p "备份密码"
🔹 场景四:查看某证书是否已被吊销
certutil -verify -urlfetch myCert.cer
加上 -urlfetch 会联网获取 CRL 进行验证。
🔹 场景五:清空指定存储区(危险操作,慎用)
for /f "skip=8 tokens=1" %i in ('certutil -store My') do certutil -delstore My %i
此命令会删除“个人”存储区中的所有证书。
安全警示
- 权限要求:修改
-enterprise存储区或 CA 配置需管理员权限。 - 恶意利用:攻击者常利用
certutil下载文件(通过-urlcache参数,但该参数在较新 Windows 中已被弃用)或编码恶意负载。如果看见不明进程调用certutil,需警惕。 - 私钥保护:导出 PFX 时必须设置强密码,并妥善保管。
- 备份还原:CA 还原操作可能导致证书服务不可用,务必在测试环境先行演练。
常见问题(FAQ)
Q1:运行 certutil 报错“找不到证书模板”怎么办?
A:这是正常的,因为该命令设计用于 CA 服务器环境;在普通客户端运行不带参数的 certutil 也会显示类似的 CA 未配置提示,但其他功能(如 -store、-hashfile)不受影响。
Q2:如何查看当前用户 vs 本地计算机的证书存储区?
A:不加 -enterprise 表示当前用户存储区;加 -enterprise 表示本地计算机(需要管理员权限)。
Q3:certutil 能否生成自签名证书?
A:不能直接生成。生成自签名证书推荐使用 New-SelfSignedCertificate(PowerShell)或 makecert(旧工具)。
Q4:计算哈希时输出格式包含“CertUtil: -hashfile 命令成功完成”,如何只输出哈希值?
A:使用 findstr /v "CertUtil" 过滤:
certutil -hashfile myfile.txt SHA256 | findstr /v "CertUtil"
Q5:如何获取证书的指纹(Thumbprint)?
A:使用 certutil -store My 查看,指纹通常以十六进制显示,可直接用于 -delstore 或 -export。
参考资料
- Microsoft 官方文档 (certutil)
- Windows 内置帮助:
certutil -?与certutil -v -? - Windows 证书服务概念:参见 Windows Server 文档中的“Active Directory 证书服务”
本文档基于 Windows 10 / Server 2022 版本整理,不同版本间可能存在细微差异,请以实际系统输出为准。
最后更新:2026年8月