Как удалить корневой сертификат CA из pfx файл в Windows?

На компьютере с Windows 2012 R2 и Windows 10 есть файл pfx, который содержит цепочку сертификатов для сервера. Я создал этот файл с помощью инструмента экспорта сертификатов Windows MMC. Можно было экспортировать все сертификаты в цепочке, если это возможно, или только один сертификат. Цепочка содержит корневой, два промежуточных и затем мой сертификат сервера.

Я хотел бы удалить корневой сертификат CA, поскольку он уже должен быть у клиента, но оставьте промежуточные сертификаты.

Как вы редактируете файл pfx удалить один корневой сертификат?

3
задан 9 May 2017 в 04:36
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)
6
ответ дан 3 December 2019 в 05:23

Теги

Похожие вопросы