【问题标题】:Are X509Certificates enums like StoreName and StoreLocation sufficient for both Windows and Macos platforms?X509Certificates 枚举(如 StoreName 和 StoreLocation)对于 Windows 和 Macos 平台是否足够?
【发布时间】:2019-02-11 15:48:49
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 这些类是为 Windows 设计的,Microsoft 将它们映射到相应的 Mac 位置,github.com/dotnet/corefx/issues/20324 说“足够”与否太宽泛了。你的具体情况是什么?

标签: .net windows macos asp.net-core-2.0 x509certificate


【解决方案1】:

枚举“起作用”,因为您可以将它们传入。但在 macOS 上,只有以下 StoreName 值会成功:

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

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

  1. 这是否足以在两个平台上找到所有已安装的证书?

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

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

但枚举“可用证书”的 My 存储或“受信任的证书”的 Root 存储在这两个平台上都是 99% 的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 2017-03-19
    • 2020-05-15
    相关资源
    最近更新 更多