如何从X509Certificate2获取组织名称?

时间:2018-07-19 16:51:08

标签: c# x509certificate2

我可以通过X509Certificate2属性从Subject获取完整的主题字符串,但是有什么方法可以从主题字符串中获取特定的值(例如,仅O = "Stack Exchange, Inc.")? SubjectName属性看起来很有希望,但似乎只包含更多将整个主题转储为字符串的方式。

2 个答案:

答案 0 :(得分:2)

不,您不能,X509Certificate2除了Subject之外没有其他属性来获取所需的信息。

但是,如果您确实需要将 Organization 名称分开, 您可以通过简单的匹配就可以拥有它:

var organization = Regex.Match(certificate.Subject, @"O\s?=(.*)\s").Groups[1].ToString();

答案 1 :(得分:0)

Portable.BouncyCastle库(可用的via NuGet)中,有一个X509Name类,您可以执行以下操作:

using Org.BouncyCastle.Asn1.X509;
using System.Linq;
using System.Security.Cryptography.X509Certificates;

...

X509Certificate2 certificate = ...

var name = new X509Name(certificate.Subject);
var organization = name
  .GetValueList(X509Name.O)
  .OfType<string>()
  .FirstOrDefault();