Como remover o certificado raiz da CA de um arquivo pfx no Windows?

3

Em um Windows 2012 R2 e em uma máquina Windows 10, há um arquivo pfx que contém a cadeia de certificados do servidor. Eu criei este arquivo usando a ferramenta de exportação de certificados do Windows MMC. As opções eram exportar todos os certificados da cadeia, se possível, ou apenas o certificado. A cadeia contém a raiz, dois intermediários e, em seguida, o certificado do meu servidor.

Eu gostaria de remover o certificado raiz da CA, pois o cliente já deve tê-lo, mas deixe os certificados intermediários.

Como você edita um arquivo pfx para remover o único certificado raiz?

    
por esnm 09.05.2017 / 03:12

1 resposta

6

Você pode fazer isso com poucas linhas de código do PowerShell (não é necessário o 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)
    
por 09.05.2017 / 21:21