C# 如何从X509Certificate2获取RFC-1779中的发卡机构名称?

C# 如何从X509Certificate2获取RFC-1779中的发卡机构名称?,c#,certificate,x509certificate2,C#,Certificate,X509certificate2,X509Certificate2中的Issuer属性返回一个字符串,例如: CN=电子商务发展CA,OU=ITSB电子商务系统团队,O=阿瓦诺,L=悉尼,S=新南威尔士,C=AU 如何在RFC-1779中获得相同的结果?例如: “/C=AU/ST=NSW/L=Sydney/O=AVANO/OU=ITSB电子商务系统团队/CN=eBusiness Development CA” 您想要的字符串与实际从颁发者获得的字符串正好相反,并且由斜杠而不是逗号分隔,后面有空格 我解决此问题的第一次尝试是创建一

X509Certificate2
中的
Issuer
属性返回一个
字符串,例如:

CN=电子商务发展CA,OU=ITSB电子商务系统团队,O=阿瓦诺,L=悉尼,S=新南威尔士,C=AU

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

“/C=AU/ST=NSW/L=Sydney/O=AVANO/OU=ITSB电子商务系统团队/CN=eBusiness Development CA”


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

我解决此问题的第一次尝试是创建一个新的
X500 DifferentizedName
对象,将证书的
IssuerName
X500 DifferentizedNameFlags传递给构造函数

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); 
var split = cert.Issuer.Split(new []{',', ' '}, StringSplitOptions.RemoveEmptyEntries);
var reversed = split.Reverse();
var finalIssuerName = string.Join("/", reversed);