You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows命令行下通过certutil导出指定证书存储中受信任证书的方法咨询

Windows命令行下通过certutil导出指定证书存储中受信任证书的方法咨询

嗨,别担心,certutil的文档确实有点绕,我来给你拆解清楚你要的这几个需求——每个都能实现,咱们一个个来:


1. 在控制台输出PEM格式的证书

要直接在命令行里打印指定存储中所有证书的PEM内容,可以结合certutil的存储查询和编码功能,用循环遍历每个证书输出。比如针对Root存储,执行下面的命令(如果是在批处理脚本里,把%a改成%%a):

for /f "tokens=3" %a in ('certutil -store Root ^| findstr /i "Serial Number:"') do (
    certutil -store Root %a - | certutil -encode -f - -
)

简单解释下:

  • certutil -store Root会列出存储里的所有证书信息,我们用findstr提取每个证书的唯一序列号
  • 通过序列号定位单个证书,用-把证书二进制内容输出到标准输入
  • 再用certutil -encode - -把二进制DER内容编码成PEM格式输出到控制台

你只需要把命令里的Root换成你要的其他存储名称(My/Trust/CA/AuthRoot)就行。


2. 导出到目录为PEM格式

这个需要先把证书导出为二进制DER格式,再编码成PEM。我们可以先创建一个存放PEM的目录,然后循环处理每个证书:

:: 创建存放PEM的目录,已存在则忽略错误提示
mkdir certs_pem 2>nul

:: 遍历Root存储的所有证书,导出为PEM文件
for /f "tokens=3" %a in ('certutil -store Root ^| findstr /i "Serial Number:"') do (
    :: 先导出为DER格式的临时文件
    certutil -export -f -store Root %a certs_pem\%a.tmp
    :: 把DER文件编码成PEM格式
    certutil -encode -f certs_pem\%a.tmp certs_pem\%a.pem
    :: 删除临时的DER文件
    del certs_pem\%a.tmp
)

执行完后,certs_pem目录里会生成以证书序列号命名的.pem文件。同样,把Root替换成其他存储名称就能处理对应存储的证书。


3. 导出到目录为DER格式

这个更直接,certutil的-export参数默认就是导出二进制DER格式的证书,直接循环导出即可:

:: 创建存放DER的目录,已存在则忽略错误提示
mkdir certs_der 2>nul

:: 遍历Root存储的所有证书,导出为DER格式文件
for /f "tokens=3" %a in ('certutil -store Root ^| findstr /i "Serial Number:"') do (
    certutil -export -f -store Root %a certs_der\%a.cer
)

导出的.cer文件就是二进制DER格式的证书,同样替换存储名称就能处理其他存储。


备注:内容来源于stack exchange,提问作者Hakan54

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 15:29:40