gpt4 book ai didi

c# - 在颁发者名称与特定值匹配的集合中查找 X509 证书

转载 作者:行者123 更新时间:2023-12-02 00:30:29 27 4
gpt4 key购买 nike

在我的应用程序中,我需要能够在本地商店中找到与特定颁发者名称匹配的证书。所以,我之前做的是:

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

最佳答案

您可能需要的是 FindByIssuerDistingushedName

FindByIssuerName 是不区分大小写的子字符串匹配,以正向顺序匹配发行者名称,带逗号分隔符且没有字段标记。这作为一个句子并没有多大意义,所以让我们举个例子。

正常的 Windows(和 .NET)打印方式实际上是颠倒的,因此您的 Issuer Distinguished Name 很可能是 DC=local, DC=MyCompanyDomain, CN=My Common Name。 FindByIssuerName 会将该值转换为字符串 local, MyCompanyDomain, My Common Name,然后如果您的输入(不区分大小写)位于该字符串的任何位置,则匹配。

  • “local, MyCompanyDomain, My Common Name”:是的
  • “local, mycompanyDOMAIN, My common name”:是的
  • “本地”:是的
  • “m”:是的
  • "":是的
  • “香蕉”:没有
另一方面,

FindByIssuerDistinguishedName 是与 cert.Issuer 返回的相同字符串的不区分大小写的等号。因此,您已有的字符串将是一个匹配项。

https://github.com/dotnet/corefx/blob/f252ef6d695176143aa46b855db5553fb6e44921/src/System.Security.Cryptography.X509Certificates/tests/FindTests.cs#L381-L406显示 FindByIssuerName 和 FindByIssuerDistinguishedName 的行为保留单元测试。

关于c# - 在颁发者名称与特定值匹配的集合中查找 X509 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52103417/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com