我集中管理域控制器,但是站点管理员在本地管理他们自己的数字发送器。我可以很容易地从Windows Server 2008 R2域控制器通过向导导出X509证书(不需要私钥),用整条产业链的P7B文件:无需外部工具,自动导出x509证书w /链从Server 2008 R2到p7b文件?
~~~~~~~~~~~~~ ~~~~
... 5。证书导出向导打开。点击下一步。
在导出文件格式对话框,执行下列操作:
一个。选择加密消息语法标准 - PKCS#7证书(.P7B)。
b。如果可能,请选中包含证书路径中的所有证书。
c。点击下一步。
在要导出的文件对话框中,单击浏览。
在另存为对话框中,执行以下操作:
一个。在文件名框中,键入ciroots.p7b。
b。在另存为类型框中,选择PKCS#7证书(* .p7b)。
c。点击保存。
在要导出的文件对话框中,单击下一步。
在完成证书导出向导页面上,单击完成。
~~~~~~~~~~~~~~~~~
它的伟大工程。生成的文件可以很好地导入数字发送器进行验证。如果网站管理员尚未导入它们,它可以让网站管理员访问链中的其他证书。它不需要包含私钥,因为没有它就可以正常工作。
麻烦的是,我需要为每个企业站点手动完成数十次,因为每个站点都有自己的域控制器,每个都有自己的证书。必须有一种方法可以自动执行此证书导出(PowerShell w/.NET,certutil.exe等)。也许一些使用System.Security.Cryptography.X509Certificates X509IncludeOption与WholeChain,但我不能得到它的工作:
$证书=(DIR证书:\ LOCALMACHINE \我的)[0]
#PKCS7证书导出为.p7b文件扩展名。
$ CertCollection =新物体
System.Security.Cryptography.X509Certificates.X509Certificate2Collection
$证书| %{[void] $ CertCollection.Add($ _)}
$ Exported_pkcs7 = $ CertCollection。导出( 'PKCS7')
$ out_FileName = $ ENV:计算机+ “的.p7b”
$ My_Export_Path = 'd:\ CertFiles \' + $ out_FileName
集内容-path $ My_Export_Path -Value $ Exported_pkcs7 -encoding字节
使用此代码,我只获取证书,而不是其链中的证书。我不需要整个脚本,只需要复制导出w /链的部分,我已经可以通过GUI手动完成了。
的同事,想出了非常相似的一些工作,正因为如此,在这个优先下降,但这是在我的待办事项列表中,以完全按照您的方式进行尝试,看看我的同事的方法是否有任何差异。谢谢CryptoGuy。 – JCSunday