【发布时间】:2019-02-05 18:37:15
【问题描述】:
在我的应用程序中,我需要能够在本地商店中找到与某个发行者名称匹配的证书。 所以,我之前做的是:
LocalStore.Certificates.Find(X509FindType.FindByIssuerName, "My Common Name", True)
但是由于新的证书服务器已安装并且正在使用活动目录,因此我的证书“颁发者”字段具有附加属性(DC 值)。 完整的字符串如下所示:
"CN=My Common Name, DC=MyCompanyDomain, DC=local"
这不会让我像以前那样使用 Find 方法,并且 CN、DC 值的任何组合都不适合我。
这是我在 ImmediateWindow 中尝试过的:
?LocalStore.Certificates.Item(0).IssuerName
{System.Security.Cryptography.X509Certificates.X500DistinguishedName}
Name: "CN=My Common Name, DC=MyCompanyDomain, DC=local"
Oid: {System.Security.Cryptography.Oid}
RawData: {Length=85}
m_distinguishedName: "CN=My Common Name, DC=MyCompanyDomain, DC=local"
m_oid: {System.Security.Cryptography.Oid}
m_rawData: {Length=85}
?LocalStore.Certificates.Find(X509FindType.FindBySubjectName, "My Common Name", True).Count
0
?LocalStore.Certificates.Find(X509FindType.FindByIssuerName, "My Common", True).Count
0
?LocalStore.Certificates.Find(X509FindType.FindByIssuerDistinguishedName, "My Common Name", True).Count
0
?LocalStore.Certificates.Find(X509FindType.FindByIssuerDistinguishedName, "My", True).Count
0
【问题讨论】:
-
您的代码正在寻找 issuer 名称,但您的“完整字符串”可能是基于您在其中使用“My”的主题名称。也许您打算使用
X509FindType.FindBySubjectName?如果不是,您确定字符串是Issuer名称,而不是Subject名称吗? -
证书颁发机构由我控制,因此是“我的”。但是不,我正在尝试按“发行人”进行搜索。我想不出一种方法来禁用 CA 中的 DC 值输出,在旧服务器上,没有 DC 的情况下一切正常
标签: c# iis certificate x509certificate x509certificate2