Windows

通過具有完整證書鏈的 PowerShell 導入 PFX 證書

  • January 26, 2021

這是 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 並沒有引入完整的鏈。

破解這個堅果還有其他選擇嗎?

我最終使用證書 mmc 手動執行此操作。

最終,似乎沒有足夠的保證 PowerShell 方法可以重現與 mmc 相同的行為,並且對於業務關鍵型應用程序,使用 mmc 的保證非常重要,足以在時間和精力上承受打擊。

如果完整的證書鍊是 PFX 文件的一部分,則Import-PfxCertificate還將導入所有相關證書並將它們放入相應的文件夾中。

您無需做任何其他事情。

引用自:https://serverfault.com/questions/1050702