Windows certutil 命令完整手册

适用系统:Windows XP / Server 2003 及以上所有版本
类型:系统内置命令行工具(C:\Windows\System32\certutil.exe


📖 目录

  1. 概述
  2. 基本语法与帮助
  3. 核心功能速览
  4. 常用命令详解
  5. 查看证书颁发机构(CA)配置
  6. 管理证书存储区
  7. 导入与导出证书(含私钥)
  8. 计算文件哈希值
  9. Base64 / 十六进制编码解码
  10. 验证证书与密钥对
  11. 备份与还原CA组件
  12. 高级诊断工具
  13. 典型应用场景与示例
  14. 安全警示
  15. 常见问题(FAQ)
  16. 参考资料

概述

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月