获取证书存储的根

Posted

技术标签:

【中文标题】获取证书存储的根【英文标题】:Get root of certificate store 【发布时间】:2020-12-07 06:59:06 【问题描述】:

我需要读取证书存储的根文件夹。使用以下课程 (https://docs.microsoft.com/de-de/dotnet/api/system.security.cryptography.x509certificates.x509store?view=netcore-3.1) 我看不到读取证书存储的根目录的可能性,我只能读取证书存储的默认文件夹。但是我们的证书存储中有许多自定义文件夹,所以我需要能够阅读它们。

例如: 我创建了一个存储文件夹“Web Hosting”,并希望读取此文件夹中的证书,但没有为 X509Store 类提供 Storename:“\Web Hosting”。 我想从根目录获取这家商店的名称,因为我不想硬编码许多其他商店文件夹。

感谢您的帮助。

【问题讨论】:

你试过这样的事情吗? blog.codingoutloud.com/2012/11/02/… 【参考方案1】:

如果您谈论疼痛等级,则没有 root store 这样的术语。没有任何层次结构。证书存储是存储的简单列表,每个存储用于不同目的。您必须使用X509Store(String, StoreLocation, OpenFlags) 来查询自定义商店。但是,您必须提前知道商店名称。

【讨论】:

那么就不可能得到本地机器的所有storenames? 不在原始 .NET 中。您可能必须通过互操作使用CertEnumSystemStore C++ 函数:docs.microsoft.com/en-us/windows/win32/api/wincrypt/…。一个 C++ 示例:docs.microsoft.com/en-us/windows/win32/seccrypto/…

以上是关于获取证书存储的根的主要内容,如果未能解决你的问题,请参考以下文章

将证书添加到受信任的根证书存储失败,出现以下错误:访问控制列表(ACL)结构无效

为啥我的根证书不受信任?

Azure App Service 上的根证书

iOS 9 中可用的受信任根证书列表

根证书和中间证书的区别

ipad mini 受信任证书存储区是代表啥?