我使用的X509Store在C#中DOTNET的遍历证书存储。但是,我不清楚证书位置和证书存储区之间的区别。例如,位置是LocalUser和LocalMachine。商店的例子是我的(个人)和根。 LocalUser上的个人商店与LocalUser上的个人商店之间有什么区别?在LocalMachine上拥有个人商店意味着什么?X509Store位置与商店?
回答
个人商店LOCALMACHINE包含计算机证书。驻留在此类商店中的证书的示例是IIS使用的用于保护HTTP流量的SSL证书。机器上只有一个这样的商店。
个人商店LocalUser包含用户证书。此类证书的一个示例是用于对电子邮件进行签名的S/MIME证书。每个用户都有他/她自己的这种类型的商店。
感谢您的指点。我正在将Root商店与LocalMachine混淆。那么Root LocalMachine Store和Root Personal Store之间有什么区别? –
查看其他答案。它谈到了这一点。 –
有几个旨意店(在括号中的斜体大胆,UI显示名称C#名):
- 我(个人):寻找一个叶/终端实体的证书,这个时商店通常被搜索到。这通常是具有相关私钥的证书的唯一商店。
- 如果您在使用客户端身份验证证书,IE会选择从我的店候选人证书浏览到一个网站。 (正向参考:这个位置是CurrentUser)
- 当从GUI配置IIS它会显示在我的存储证书。 (正向参考:这个位置是LOCALMACHINE)
- 根(受信任的根证书颁发机构):在做一个链接,信任决策,如TLS,如果链的另一端在这家商店代表,那么原始证书是可信的。
- 除了证书明确这家店它暴露在AuthRoot虚拟视图。
- AuthRoot(第三方根证书颁发机构):当注册一个额外的受信任的根在第三聚会用品商店你“应该”去做,因为...的原因?虽然LocalMachine似乎工作正常,CurrentUser之一seems to mostly be for show。
- CertificateAuthority(中级证书颁发机构,对底层系统称为“CA”):这是已知中间证书的存储库。在进行链式构建时,系统将在此查找父级,然后在Root中查找,然后通过Internet查找。如果链是可信的,那么链中间的证书可以缓存在这里供将来查找。
- 不允许(不受信任的证书):如果在此商店中找到证书链的一部分,则该链条被视为不可信。
- 地址簿(其他人):您知道的证书集合。是的,关于那个具体。在尝试匹配对等证书时,它会被某些程序/库搜索到。例如,在SignedXml中查找发行者和序列号通知。
有几个更标准的,你可以read about them at TechNet。您也可以使用X509Store(string, StoreLocation)
过载创建自己的证书存储。 (这对于管理应用程序有时很有用,但是当您在自定义商店中拥有私钥时,证书管理器UI会有点困惑;它只会在我的商店中预期它们)。
这就是StoreName。 StoreLocation可能更好地被认为是“店主”。标准用户可以决定他们信任某些私人CA颁发的证书,以便他们可以将其添加到他们的Root商店。由于它的它们的存储它不会影响系统上的任何其他用户。该系统本身也拥有商店。例如,计算机的TLS证书确实属于“计算机”,并且多个管理员可能参与管理它。由于搜索朋友的资料非常不寻常,StoreLocation归结为“我,作为用户”(CurrentUser)或“此计算机”(LocalMachine),供其使用的商店。
事情现在变得有些模糊:在Windows上,几乎每个CurrentUser存储(具有My store的显着例外)都向LocalMachine等效存储公开视图。因此,当您枚举CurrentUser \ Root中的证书时,您将得到这两个明确添加到CurrentUser \ Root的证书以及显式添加到LocalMachine \ Root的证书。这可能会导致混淆,因为枚举时可以看到证书,请将其作为参数调用Remove
,并且在枚举时仍然存在。
根据我的经验,大多数与cert商店的互动都在我的商店。在这一点决策树归结为这样的事情:
- 我是一个专门的用户帐户的服务?
new X509Store(StoreName.My, StoreLocation.CurrentUser)
- 上午我服务没有一个专用的用户帐户?
new X509Store(StoreName.My, StoreLocation.LocalMachine)
- 否则
new X509Store(StoreName.My, StoreLocation.CurrentUser)
但是,这是一个很大的推广。
感谢您的详细解释。我注意到了CurrentUser \ Root和LocalMachine \ Root之间的重复。你是说如果服务登录是LSA,那么使用LocalMachine \ My,但是如果它使用特定的登录,那么使用CurrentUser \ My? –
我不是说你“应该”,只是这是我见过的正常模式。对于共享帐户服务(LocalSystem,LocalService,NetworkService),管理员似乎发现使用证书管理器UI更容易操作系统证书。在特定登录中运行服务的好处之一是权限/数据隔离,这意味着您希望使用该登录的证书存储区。 (就像你想要做的事情的细节一样,有很多东西是“除了”和“除非”)的无限链。 – bartonjs
- 1. 商店iPhone位置
- 2. 商店小部件位置
- 3. 商店定位器与SQL
- 4. 商店定位器API +地理位置
- 5. 根据商店位置搜索商店产品
- 6. CoreData中的商店位置(Swift)
- 7. Redis商店位置的用户策略
- 8. 拖放div和商店位置
- 9. 商店file_put_contents在安全的位置
- 10. 使用地理位置查找商店
- 11. redis商店128位数
- 12. 商店岗位价值
- 13. 停用iOS和Android商店从商店,但使其复位的
- 14. 商店订阅未与NGRX店4
- 15. 当商店发生变化时,React flux鼠标位置重置
- 16. Prestashop多商店设置
- 17. symfony2商店只读配置
- 18. ExtJS商店/网格重置
- 19. infinispan jdbc商店配置
- 20. Php商店小时 - 设置
- 21. CodeGear Delphi 2009商店设置
- 22. Sencha触摸FormPanel与商店
- 23. Azman与多家商店
- 24. Extjs问题与商店
- 25. 凡商店用户设置的iOS - 应用程序商店
- 26. 如何获得Drupal 8商店的商店设置
- 27. 使用opencart获取多商店设置的商店ID
- 28. 超过200家商店与多商店和相同的产品?
- 29. 使用magmi与多个网站/商店/ storeviews恢复排序顺序/位置值
- 30. 给定有向图和商店位置放置商店,以便从任何城市到最近的商店的最大距离最小化
假设机器是特殊用户。 –