在 Windows 2012 R2 和 Windows 10 计算机上有一个 pfx 文件,其中包含服务器的证书链。我使用 Windows MMC 证书导出工具创建了此文件。选择是导出链中的所有证书(如果可能)或仅导出一个证书。该链包含根证书、两个中间证书以及我的服务器证书。
我想删除 CA 根证书,因为客户端应该已经拥有它,但保留中间证书。
如何编辑 pfx 文件以删除一个根证书?
答案1
您可以使用几行 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)