【问题标题】: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。我想知道如果
- 这些枚举适用于 Windows 和 Macos?
- 这是否足以在两个平台上找到所有已安装的证书?
谢谢。
【问题讨论】:
标签:
.net
windows
macos
asp.net-core-2.0
x509certificate
【解决方案1】:
枚举“起作用”,因为您可以将它们传入。但在 macOS 上,只有以下 StoreName 值会成功:
- 我的(如果应用任何自定义信任规则,读写、删除将失败)
- 根目录(只读)
- 不允许(只读)
My 对应于System.keychain (LocalMachine) 或login.keychain (CurrentUser)。
- 这是否足以在两个平台上找到所有已安装的证书?
不,它们不足以在任何平台上找到所有已安装的证书。
- 在 macOS 上可以创建任意数量的钥匙串,而 .NET 无法枚举它们。
- 在 Windows 上可以创建任意数量的自定义名称存储,而 .NET 无法枚举它们。
- 在这两个系统上,可以在不同的用户下安装东西。
但枚举“可用证书”的 My 存储或“受信任的证书”的 Root 存储在这两个平台上都是 99% 的解决方案。