我如何使用PowerShell的一个PFX证书的公钥?

问题描述 投票:2回答:2

我试图从使用PowerShell证书的公钥。但是,每当我使用PowerShell命令Get-PfxCertificate只输出证书的指纹,而不是公共密钥。我怎样才能得到它的输出公钥?

powershell certificate public-key pkcs12
2个回答
7
投票

要使用PowerShell检索一个PFX证书的公钥,使用以下命令:

(Get-PfxCertificate -FilePath mycert.pfx).GetPublicKey()

公钥转换为十六进制字符串不带连字符,你可以使用这个命令:

[System.BitConverter]::ToString((Get-PfxCertificate -FilePath mycert.pfx).GetPublicKey()).Replace("-", "")

0
投票

要知道,Get-PfxCertificate临时存储在%ProgramData%\Microsoft\Crypto\RSA\MachineKeys,每个人都可以阅读你的私钥。

如果这不是一个期望的行为,比你应该使用import .NET对象的任何X509Certificate2方法或构造与EphemeralKeySet作为密钥存储标志,它表明私钥应在内存中创建和磁盘导入时不持久证书,如:

$Cert = New-Object -TypeName System.Security.Cryptography.X509Certificates.X509Certificate2
$FullPathToCert = Resolve-Path -Path .\cert.pfx
$Password = Read-Host 'Password' -AsSecureString
$X509KeyStorageFlag = 32
$Cert.Import($FullPathToCert, $Password, $X509KeyStorageFlag)
$Cert.GetPublicKey()

Notes

  • 由.NET框架4.7.2,.NET核心2.0及以上支持EphemeralKeySet标志;
  • $X509KeyStorageFlag = 32是只为$X509KeyStorageFlag = [System.Security.Cryptography.X509Certificates.X509KeyStorageFlags]::EphemeralKeySet的简写

Further reading

© www.soinside.com 2019 - 2024. All rights reserved.