我有这个证书:
我需要阅读字段“RFC822”。我使用X509Certificate2类,但此类不返回此信息:
StringBuilder sb = new StringBuilder();
X509Certificate2 card = GetCertificate();
sb.AppendLine(card.FriendlyName);
sb.AppendLine(card.GetCertHashString());
sb.AppendLine(card.GetEffectiveDateString());
sb.AppendLine(card.GetExpirationDateString());
sb.AppendLine(card.GetExpirationDateString());
sb.AppendLine(card.GetFormat());
//sb.AppendLine(card.GetIssuerName());
sb.AppendLine(card.GetKeyAlgorithm());
sb.AppendLine(card.GetKeyAlgorithmParametersString());
//sb.AppendLine(card.GetName());
sb.AppendLine(card.GetPublicKeyString());
sb.AppendLine(card.GetRawCertDataString());
sb.AppendLine(card.GetSerialNumberString());
sb.AppendLine(card.HasPrivateKey.ToString());
sb.AppendLine(card.Issuer);
sb.AppendLine(card.IssuerName.Name);
sb.AppendLine(card.SerialNumber);
sb.AppendLine(card.Subject);
sb.AppendLine(card.SubjectName.Name);
sb.AppendLine(card.Thumbprint);
sb.AppendLine(card.Version.ToString());
我可以从.NET程序中读取RFC822数据吗?
由于
答案 0 :(得分:1)
您可以通过
获取主题备用名称扩展名的字节byte[] subjAltName = cert.Extensions["2.5.29.17"].RawData
如果按System.Text.Encoding.UTF8.GetString(subjAltName)
查看这些字节,您会看到电子邮件地址。但是这个字节数组实际上代表了一个ASN.1序列结构,需要正确解码。正如Eugene所说,如果您需要证书中的深层信息,可能更容易使用封装复杂ASN.1内容的第三方库。