【问题标题】:How do I pull the thumbprint out of a SSL certificate FILE (not the windows cert store)?如何从 SSL 证书文件(不是 Windows 证书存储)中提取指纹?
【发布时间】:2018-05-23 06:18:28
【问题描述】:

我了解如何获取安装到证书存储的证书的指纹,但是我希望有一种方法可以从证书文件中获取该信息。

例如,我有 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

提前谢谢你!!

【问题讨论】:

  • 我想通了。首先,您需要使用 openssl,这并不理想,但这就是我能想到的全部 - 仍然希望有人知道如何在 Windows 中本地执行此操作。其次,在 Linux(以及 openssl)世界中,指纹被称为“指纹”。最后,指纹以 xx:yy:zz 格式返回,因此需要重新格式化,使其成为连续字符串。这是 openssl 命令: $fileThumbprint = openssl x509 -in "$cert.crt" -fingerprint -noout... write-host $fileThumbprint... SHA1 Fingerprint=25:2E:1F:A3:B6:2C:C4 :60:75:5B:07:34:9C:E5:4D:3F:EE:84:45:BF

标签: powershell ssl ssl-certificate


【解决方案1】:

在不使用第三方库的情况下,您可以依赖 .NET 框架的x509certificate2 加密类:

$content = [System.IO.File]::ReadAllBytes("D:\mycertificate.cer")
$cer = [system.security.cryptography.x509certificates.x509certificate2]::new($content)

$cer.SignatureAlgorithm.FriendlyName
$cer.Thumbprint
$cer.Subject

然后你会收到如下结果:

sha1RSA
5A6008B61ABADE6412BEE4704C2407D5DE5DAA34
C=GB, O=University College London, OU=Computer Science, CN=FTAM Service

【讨论】:

  • 如果文件受密码保护,您也可以在构造函数中传递密码。
猜你喜欢
  • 2021-08-21
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 2016-06-14
  • 2017-03-27
  • 1970-01-01
  • 2011-01-01
  • 2011-11-09
相关资源
最近更新 更多