对于 Windows 和 Macos 平台,像 StoreName 和 StoreLocation 这样的 X509Certificates 枚举是否足够?

Are X509Certificates enums like StoreName and StoreLocation sufficient for both Windows and Macos platforms?

我是 .Net 和 X509Certificates 的新手。我将使用 .net 核心编写一个应用程序来查找 Windows 和 Mac 的所有已安装证书。 我已经完成了这个例子 here。我想知道

  1. 这些枚举适用于 Windows 和 Macos?
  2. 这是否足以在两个平台上找到所有已安装的证书?

谢谢。

枚举 "work" 因为您可以传入它们。但是在 macOS 上,只有以下 StoreName 值会成功:

  • 我的(如果应用了任何自定义信任规则,读写、删除将失败)
  • 根目录(只读)
  • 不允许(只读)

My 对应于 System.keychain (LocalMachine) 或 login.keychain (CurrentUser).

  1. Should that be sufficient on both the platforms to find all the installed certificates?

不,它们在任何平台上都不足以找到所有 个已安装的证书。

  • 在 macOS 上可以创建任意数量的钥匙串,.NET 无法枚举它们。
  • 在 Windows 上可以创建任意数量的自定义命名商店,.NET 无法枚举它们。
  • 在两个系统上,东西可以安装在不同的用户下。

但枚举 "usable certificates" 的 My 商店或 "trusted certificates" 的 Root 商店在两个平台上都是 99% 的解决方案。