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
相关产品推荐
相关产品推荐

