安装 - 将 PFX 证书导入单独的本地帐户的个人存储 - 自动化

安装 - 将 PFX 证书导入单独的本地帐户的个人存储 - 自动化

我一直在思考如何自动完成这项任务:

我们为客户部署 Windows Server 2008 R2 映像。我们使用 PowerShell(版本 2)部署我们的专有软件,并在发货前对系统进行各种其他更改。此 PowerShell 进程在本地管理员帐户下运行,直到完成并禁用本地管理员帐户。

现在,回到问题 - 我正在尝试将 .PFX 客户端证书安装到独立用户的 CurrentUser\My 证书存储中。我们将该用户称为“SQL”。

目前,证书正在 LocalMachine\My 证书存储下安装,但我们的一个开发团队对该位置有顾虑,并希望复制原始设置。

现在,我知道如何通过在我们的部署脚本中添加重新启动步骤并在“SQL”用户下执行此操作来完成此操作,但我想避免这样做,因为似乎必须有一种方法可以在另一个帐户下完成此操作。以下是我们现在用于将证书安装到 LocalMachine\My 存储的基本代码。假设 $certPath 是 .pfx 的路径,$pfxPass 是 .pfx 的密码。

function Import-PfxCertificate {
param([string] $certPath, [string]$pfxPass)

$pfx = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$pfx.Import([string]$certPath, [string]$pfxPass, "Exportable,PersistKeySet")

$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My", "LocalMachine")
$store.open("MaxAllowed")
$store.add($pfx)
$store.close()
}    

答案1

我对我的服务器做了类似的事情,但我没有使用纯 PowerShell:

psexec.exe -accepteula -u sql -p sqlspassword certutil.exe -p certpassword -importPFX cert.pfx

这只是在指定帐户下运行 certutil 命令,您需要下载 psexec.exe

答案2

我最终使用了带有 -Credentials 的 Start-Process 和免费的 importpfx.exe 工具。基本上与 @Mathias 所述和 @Peter 给出的示例相同。

谢谢你们的帮助。这比过去两天的研究让我相信的要容易得多。

相关内容