如何从 X509Certificate2 获取 RFC-1779 中的颁发者名称?
How to get issuer name in RFC-1779 from X509Certificate2?
Issuer
属性从X509Certificate2
returns一个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
对象,将证书的 IssuerName
和 X500DistinguishedNameFlags.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);
Issuer
属性从X509Certificate2
returns一个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
对象,将证书的 IssuerName
和 X500DistinguishedNameFlags.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);