仅从公钥创建公钥证书

问题描述 投票:0回答:1

据我所知,证书是由CA签署的用户公钥。

我没有来自用户的CSR,我只有他的公钥,我想要证明它。

如何使用OpenSSL(命令行)或.net(使用C#编程)验证此公钥?

编辑:更确切地说,我需要使用CA私钥对用户公钥进行签名,然后构建X509文本文件并将其转换为.PEM或.DER文件

.net openssl certificate public-key-encryption
1个回答
0
投票

您可以验证证书是否使用openssl正确签名,但这取决于证书的格式。如果我“假设”证书是PEM格式。例如

openssl x509 -in cert.pem -noout -text

将转储存储在证书中的信息。如果任何不正确,它将“错误”出来。

您可以检查证书是否已过期:openssl x509 -enddate -checkend 0 -noout -in cert.pem这将显示结束日期(以utc为单位)以及证书是否已过期。

您还可以使用verify openssl命令检查证书“chain”是否正确。例如

openssl verify cert.pem

虽然您可能需要包含中间证书和calist。例如这是验证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#是否可以“加载”证书,您可以使用X509Certificate2Collection Import方法导入PFX格式的证书链。

导入后,您可以提取您想要查看的任何属性。

您可以使用qazxsw poo qazxsw poo方法验证链。

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