我有一个由 SslStream.AuthenticateAsClient 调用的 RemoteCertificateValidationCallback 函数,该函数传递一个 X509Certificate 对象。
我想从该证书中提取名称,这样如果我将该字符串传递给 AuthenticateAsClient,它就会通过。 (假设没有其他问题。)
(注意:Subject 属性包含域名,但它位于“CN=..., S=...”等格式的字符串内。)
也可以看看:如何在Java中从X509Certificate中提取CN? https://stackoverflow.com/questions/2914521/how-to-extract-cn-from-x509certificate-in-java(针对 Java 提出了类似的问题,但我找不到这些答案中提到的 .NET 的类似类。)
(尤金的回答的后续。)
我试过这个...
var cert2 = new System.Security.Cryptography.X509Certificates.X509Certificate2();
cert2.Import(certificate.GetRawCertData());
...但 cert2.SubjectName.Name 仍然具有 CN= 等格式。我做错了吗?
我是通过以下方式完成的:
var cert2 = new X509Certificate2(cert);
string hostName = cert2.GetNameInfo(X509NameType.DnsName, false);
您还可以检查证书是否有效:
bool valid = cert2.Verify();
(See 这个问题 https://stackoverflow.com/questions/1182612/net-x509certificate2-vs-x509certificate用于 X509Certificate2 类的描述)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)