【问题标题】:How to get issuer name in RFC-1779 from X509Certificate2?如何从 X509Certificate2 获取 RFC-1779 中的颁发者名称?
【发布时间】:2018-08-23 10:13:37
【问题描述】:

来自X509Certificate2Issuer 属性返回string,例如:

“CN=eBusiness Development CA, OU=ITSB eBusiness Systems Team, O=AVANO, L=Sydney, S=NSW, C=AU”

如何在 RFC-1779 中得到相同的结果?例如:

"/C=AU/ST=NSW/L=Sydney/O=AVANO/OU=ITSB eBusiness Systems Team/CN=eBusiness Development CA"

var cert = new X509Certificate2(certPath, password);
Console.WriteLine(cert.Issuer);

【问题讨论】:

    标签: c# certificate x509certificate2


    【解决方案1】:

    您想要的字符串与您实际从Issuer 获得的字符串正好相反,并且由斜杠而不是逗号和后面的空格分隔。

    我第一次尝试解决这个问题是创建一个新的X500DistinguishedName 对象,将证书的IssuerNameX500DistinguishedNameFlags.Reversed 传递给构造函数:

    var distinguishedName = new X500DistinguishedName(cert.Issuer, X500DistinguishedNameFlags.Reversed);
    

    但这并没有为我提供我希望的结果。我不确定有什么方法可以做到这一点。但您可以尝试手动重新格式化字符串以满足您的需求:

    var split = cert.Issuer.Split(new []{',', ' '}, StringSplitOptions.RemoveEmptyEntries);
    var reversed = split.Reverse();
    var finalIssuerName = string.Join("/", reversed); 
    

    【讨论】:

      猜你喜欢
      • 2013-07-28
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2016-04-20
      • 1970-01-01
      相关资源
      最近更新 更多