C# 使用C从证书签名请求(CSR)读取电子邮件字段#

C# 使用C从证书签名请求(CSR)读取电子邮件字段#,c#,x509certificate,csr,C#,X509certificate,Csr,我使用以下代码读取CSR的属性: string csr = myCSR; CX509CertificateRequestPkcs10 request = new CX509CertificateRequestPkcs10(); request.InitializeDecode(csr, EncodingType.XCN_CRYPT_STRING_BASE64_ANY); request.CheckSignature(); string tmp = ReadDnsSan(request); str

我使用以下代码读取CSR的属性:

string csr = myCSR;
CX509CertificateRequestPkcs10 request = new CX509CertificateRequestPkcs10();
request.InitializeDecode(csr, EncodingType.XCN_CRYPT_STRING_BASE64_ANY);
request.CheckSignature();
string tmp = ReadDnsSan(request);
string attribs = (((CX500DistinguishedName)request.Subject).Name);
在attribs中,我得到的是通用名称、组织、部门、城市、国家,但不是电子邮件地址

CSR不应该是强制性的吗? 有没有办法用C#来读它

在attribs中,我得到了通用的名称、组织、部门

您的方向是正确的,但主题字段中似乎没有显示电子邮件RDN属性

CSR不应该是强制性的吗

否。此外,整个主题字段是可选的。因此,您可能需要相应地修改代码。可能存在主题字段为空的情况,则主题信息应显示在主题备选名称扩展中

因此,如果主题字符串中缺少
E=
Email=
属性,则该属性不在其中显示