Windows

如何從 Windows 中的 pfx 文件中刪除 CA 根證書?

  • May 10, 2017

在 Windows 2012 R2 和 Windows 10 機器上,有一個 pfx 文件,其中包含伺服器的證書鏈。我使用 Windows MMC 證書導出工具創建了這個文件。如果可能,選擇是導對外連結中的所有證書或僅導出一個證書。該鏈包含根、兩個中介,然後是我的伺服器證書。

我想刪除 CA 根證書,因為客戶端應該已經擁有它,但保留中間證書。

如何編輯 pfx 文件以刪除一個根證書?

您可以使用幾行 PowerShell 程式碼來完成此操作(不需要 OpenSSL):

$path = "Put the path to a pfx file here"
$password = "Put password here"
$pfx = New-Object Security.Cryptography.X509Certificates.X509Certificate2Collection
# import pfx to X509Certificate2 collection
$pfx.Import([IO.File]::ReadAllBytes($path), $password, "Exportable")
# remove first root (self-signed) certificate
if ($pfx.Count -gt 1) {
   for ($i = 0; $i -lt $pfx.Count; $i++) {
       if ($pfx[$i].Issuer -eq $pfx[$i].Subject) {
           [void]$pfx.RemoveAt($i); break
       }
   }
}
# write back pfx to a file
$bytes = $pfx.Export("pfx", $password)
[IO.File]::WriteAllBytes($path, $bytes)

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