小编JCS*_*day的帖子

无需外部工具,自动将带链的 x509 证书从 Server 2008 R2 导出到 p7b 文件?

我集中管理域控制器,但站点管理员在本地管理他们自己的数字发送器。我可以通过向导轻松地将包含整个链的 X509 证书(不需要私钥)从 Windows Server 2008 R2 域控制器导出到 p7b 文件:

~~~~~~~~~~~~~~~~~~

...5. 证书导出向导打开。点击下一步。

  1. 在“导出文件格式”对话框中,执行以下操作:

    一种。选择加密消息语法标准 – PKCS #7 证书 (.P7B)。

    湾 如果可能,请选中在证书路径中包含所有证书。

    C。点击下一步。

  2. 在要导出的文件对话框中,单击浏览。

  3. 在另存为对话框中,执行以下操作:

    一种。在文件名框中,键入 ciroots.p7b。

    湾 在保存类型框中,选择 PKCS #7 证书 (*.p7b)。

    C。单击保存。

  4. 在要导出的文件对话框中,单击下一步。

  5. 在“完成证书导出向导”页面上,单击“完成”。

~~~~~~~~~~~~~~~~~~

它工作得很好。生成的文件可以很好地导入到数字发送器中进行身份验证。它使站点管理员可以访问链中的其他证书(如果他们尚未导入)。它不需要包含私钥,因为没有它它也能正常工作。

问题是,我需要手动执行此操作,实际上是几十次,每个业务站点一次,因为每个站点都有自己的域控制器,每个域控制器都有自己的证书。必须有一种方法可以自动执行此证书导出(PowerShell w/.NET、certutil.exe 等)。也许使用 System.Security.Cryptography.X509Certificates X509IncludeOption 和 WholeChain 的东西,但我无法让它工作:

$Cert = (dir Cert:\localmachine\my)[0]

# PKCS7 证书导出文件扩展名为 .p7b。

$CertCollection = 新对象

System.Security.Cryptography.X509Certificates.X509Certificate2Collection

$证书| %{[void]$CertCollection.Add($_)}

$Exported_pkcs7 = $CertCollection.Export('Pkcs7')

$out_FileName = $ENV:COMPUTERNAME + ".p7b"

$My_Export_Path = 'd:\CertFiles\' + $out_FileName

Set-Content -path $My_Export_Path -Value $Exported_pkcs7 -encoding Byte …

powershell x509 certutil pkcs#7

4
推荐指数
1
解决办法
2725
查看次数

标签 统计

certutil ×1

pkcs#7 ×1

powershell ×1

x509 ×1