![如何从 SSL 证书文件(而不是 Windows 证书存储区)中提取指纹?](https://linux22.com/image/1548165/%E5%A6%82%E4%BD%95%E4%BB%8E%20SSL%20%E8%AF%81%E4%B9%A6%E6%96%87%E4%BB%B6%EF%BC%88%E8%80%8C%E4%B8%8D%E6%98%AF%20Windows%20%E8%AF%81%E4%B9%A6%E5%AD%98%E5%82%A8%E5%8C%BA%EF%BC%89%E4%B8%AD%E6%8F%90%E5%8F%96%E6%8C%87%E7%BA%B9%EF%BC%9F.png)
我知道如何获取安装到证书存储区的证书的指纹,但我希望有一种方法可以获取证书文件的该信息。
例如,我有 c:\temp\mycert.com.cer... 我该如何从该文件中获取指纹?这可能吗?谷歌帮不上什么忙。我一直在 powershell 中这样做,以便从证书存储中获取它,但同样 - 我需要从证书文件中获取此信息。
$certCN = mysite.com
$cert = Get-ChildItem cert:\LocalMachine\My -Recurse | where {$_.subject -like "*CN=$certCN*"} | where {$_.ExpiringInDays -lt "91"}
$thumbprint = $cert.thumbprint
答案1
您可以使用 .NET Framework 类的构造函数X509Certificate2
仅接受文件名:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 'C:\path\to\mycert.cer'
$thumbprint = $cert.Thumbprint
此处的对象$cert
与您从驱动器获取的对象类型完全相同Cert:\
,因此所有其他方法和属性均可用。您还可以从各种不同的证书格式加载信息。
答案2
在 powershell 上使用此命令。
Get-PfxCertificate -Filepath "PATH OF THE FILE STORED" -Password ($pwd = ConvertTo-SecureString -String "PASSWORD" -Force -AsPlainText)