c# - 使用 C# 读取证书签名请求

标签 c# parsing csr x509

我想用 C# 读取 CSR 的内容。但是,我还没有找到在 C# 中执行此操作的任何方法。 我发现的是命名空间 System.Security.Cryptography.X509Certificates,但它只处理现有证书,不处理证书请求。

有人可以给我一些提示吗? 提前致谢。

最佳答案

有一种方法,Windows 附带的 CertEnroll 库(虽然我不能说它存在多久了)允许您加载证书请求并解析它们。

首先,您需要将对 CERTENROLLLib COM 库的引用导入到您的项目中。这将创建一个 CERTENROLLLib namespace ,您随后可以使用。

然后你做这样的事情;

string csr = "-----BEGIN CERTIFICATE REQUEST-----\r\n" +
             "MIIBnTCCAQYCAQAwXTELMAkGA1UEBhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRIw\r\n" +
             "EAYDVQQDEwlsb2NhbGhvc3QxJzAlBgkqhkiG9w0BCQEWGGFkbWluQHNlcnZlci5l\r\n" +
             "eGFtcGxlLmRvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAr1nYY1Qrll1r\r\n" +
             "uB/FqlCRrr5nvupdIN+3wF7q915tvEQoc74bnu6b8IbbGRMhzdzmvQ4SzFfVEAuM\r\n" +
             "MuTHeybPq5th7YDrTNizKKxOBnqE2KYuX9X22A1Kh49soJJFg6kPb9MUgiZBiMlv\r\n" +
             "tb7K3CHfgw5WagWnLl8Lb+ccvKZZl+8CAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4GB\r\n" +
             "AHpoRp5YS55CZpy+wdigQEwjL/wSluvo+WjtpvP0YoBMJu4VMKeZi405R7o8oEwi\r\n" +
             "PdlrrliKNknFmHKIaCKTLRcU59ScA6ADEIWUzqmUzP5Cs6jrSRo3NKfg1bd09D1K\r\n" +
             "9rsQkRc9Urv9mRBIsredGnYECNeRaK5R1yzpOowninXC\r" + 
             "-----END CERTIFICATE REQUEST-----";

CX509CertificateRequestPkcs10 request = new CX509CertificateRequestPkcs10();
request.InitializeDecode(csr, EncodingType.XCN_CRYPT_STRING_BASE64_ANY);
request.CheckSignature();

Console.WriteLine(((CX500DistinguishedName)request.Subject).Name);
Console.WriteLine(request.PublicKey.Length);
Console.WriteLine(request.HashAlgorithm.FriendlyName);

您可以看到唯一有趣的部分是获取主题名称,因为您需要先将其转换为 CX500DistinguishedName 实例。

关于c# - 使用 C# 读取证书签名请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2830659/

相关文章:

c# - 如何释放或回收 C# 中的字符串?

java - 我收到错误 500 : java. text.ParseException:无法解析的日期: "2013-07-18 16:57:22.0"

C# 和正则表达式 : How to extract strings between quotation marks

go - 从客户端获取 TLS 信息

perl - 如何使用 Perl 解析证书签名请求?

java - 证书注册流程是什么?

c# - 具有多个泛型类型参数的类型推断

java - C# 相当于 Java 类级别字段

android - JSON Android 解析JSONArray

c# - 为什么 VS 2019 一直覆盖我的警告设置?