如何从 X509Certificate2 获取 RFC-1779 中的颁发者名称?

How to get issuer name in RFC-1779 from X509Certificate2?

Issuer属性从X509Certificate2returns一个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电子商务系统Team/CN=电子商务开发CA"

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

您想要的字符串与您实际从 Issuer 获得的字符串相反,并且由斜杠而不是逗号分隔,后面跟着 space.

我第一次尝试解决这个问题是创建一个新的 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);