您可以使用 openssl 验证证书是否正确签名,但这取决于证书的格式。如果我“假设”证书是PEM 格式。
例如
openssl x509 -in cert.pem -noout -text
将转储存储在证书中的信息。如果有任何不正确的地方,它就会“出错”出来。
您可以通过以下方式检查证书是否过期:
openssl x509 -enddate -checkend 0 -noout -in cert.pem
这将显示结束日期(以 UTC 格式)以及证书是否已过期。
您还可以使用verify openssl 命令检查证书“链”是否正确。
例如
openssl verify cert.pem
虽然您可能需要包含中间证书和证书(如果需要)。
例如这是验证 GoDady 签名证书链的示例:
openssl verify -CAfile .\gdroot-g2.crt -untrusted .\gdig2.crt.pem -show_chain .\server.pem
.\server.pem: OK
Chain:
depth=0: OU = Domain Control Validated, CN = *.XXXX.XXX (untrusted)
depth=1: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2 (untrusted)
depth=2: C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", CN = Go Daddy Root Certificate Authority - G2
当您建立SslStream 连接时,大部分工作都会为您完成。
至于尝试做所有这些都是代码(例如 C#),您必须更加具体地了解您想要做什么。如果你只是想知道C#是否可以“加载”一个证书,可以使用X509Certificate2CollectionImport方法导入一个PFX格式的证书链。
导入后,您可以提取任何想要查看的属性。
您可以使用X509Certificate2 Verify 数学方法验证链。