这是 SSL 证书替换时间,虽然我可以,对于我的 Windows 服务器,以乏味的方式执行此操作(证书 mmc,手动导入),但我正在寻找可以通过一些 PowerShell 脚本自动化的东西。
我知道Import-PfxCertificate,要导入 .pfx 我会这样做:
$pwd = ConvertTo-SecureString -String "PrivateKeyPasswordGoesHere" -AsPlainText -Force
Import-PfxCertificate -Password $pwd -FilePath "\\path\to\pfxfile\pfxfile.pfx" -CertStoreLocation Cert:\LocalMachine\My -Exportable # optional if i want the private key to be exportable
这一切都很好,但与手动繁琐的方式不同,它只引入实体证书本身;它不会在整个链中引入任何其他证书(根证书、中间证书等)。
看起来我可以用Get-PfxData做一些事情,它“将个人信息交换 (PFX) 文件的内容提取到包含最终实体证书、任何中间证书和根证书的结构中”,但是Import-证书具有强制性 FilePath 参数,因此我无法将 Get-PfxData 的输出通过管道传递给它。
我使用 Get-PfxData 来验证 PFX 确实包含完整的链。
我也尝试过以下方法:
- 手动导入到证书 mmc。
- 使用 Export-PfxCertificate 导出整个链(必须假设以 Import-PfxCertificate 可使用的格式这样做)。
- 使用 Import-PfxCertificate 导入导出的证书。
但同样,Import-PfxCertificate 并没有引入完整的链。
破解这个坚果还有其他选择吗?
如果完整的证书链是 PFX 文件的一部分,则
Import-PfxCertificate
还将导入所有相关证书并将它们放入适当的文件夹中。您无需做任何其他事情。
我最终使用证书 mmc 手动执行此操作。
最终,似乎没有足够的保证 PowerShell 方法可以重现与 mmc 相同的行为,并且对于业务关键型应用程序,使用 mmc 的保证非常重要,足以在时间和精力上承受打击。
我也对此进行了测试,并且
Import-PfxCertificate
确实导入了链,但是如果链证书已经存在(这是我的情况),它们就不会出现在个人证书中。我能够将我的 pfx 绑定到我的网站,并且一切正常。