如何从Windows中的pfx文件中删除CA根证书?

在Windows 2012 R2和Windows 10机器上,有一个包含服务器证书链的pfx文件。 我使用Windows MMC证书导出工具创build了这个文件。 select是在可能的情况下导出链中的所有证书,或者只导出一个证书。 链包含根,两个中介,然后我的服务器证书。

我想删除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)