【问题标题】:Which store to use when installing an x509 certificate安装 x509 证书时使用哪个存储
【发布时间】:2013-05-02 19:27:21
【问题描述】:

好的,所以我的应用需要与使用客户端证书对用户进行身份验证的第 3 方网络应用交互。 (我只需要使用 Web 浏览器控件打开一个窗口,然后导航到该站点)。

供应商向我扔了 6 个 .cer 文件。一个将是根,我假设将有 1 个或多个中间证书,以及 1 个或多个客户端证书。不知道哪个是哪个。

这些将是自行颁发的证书,因此我不希望发行者证书默认受信任——我需要将根安装到受信任的发布者中。

所以,我知道我需要将这些证书安装到我的密钥存储中,但我不知道哪个证书进入哪个存储。我需要做些什么来解决这个问题?

【问题讨论】:

    标签: .net security ssl cryptography x509certificate


    【解决方案1】:

    如果您正在运行其他操作系统,我会假设您正在使用某种类型的 MS Windows,请在此处停止阅读:-)

    要走正确的路,你应该这样做:

    根证书 --> 受信任的根证书颁发机构

    中间证书 --> 中间证书颁发机构

    客户证书 --> 个人证书。

    根据我的经验,您无法通过 Windows 导入指南将证书放在正确的存储中,您必须告诉它在哪个存储中放置证书。

    要对证书进行排序,您必须对证书进行“链式排序” 查看所有证书并将它们排序在一个或多个链中。

    根 --> 中间 --> 第二中间 --> 客户端。 |----> 另一个中间人 --> 另一个客户

    当您对证书进行排序时,您会查看一个证书以及哪个证书已对其进行了签名。根是自签名的,第一个中间证书由根签名。第二个中间证书由第一个中间证书签名,以此类推。

    您的客户端证书应该是唯一具有私钥的证书。

    【讨论】:

      【解决方案2】:

      您只需使用资源管理器双击证书即可打开它们。检查详细信息并将它们安装在 Windows 中。检查他们去哪里。然后单击它们以查看该证书向上的证书链。您可以随时再次删除它们。如果不确定,请使用单独的非关键安装。请注意,证书还包含一个 issuer 字符串,它指向用于签署证书的证书/私钥。

      请注意,对于客户端证书,您不仅需要证书,还需要私钥。获得这样一对的正常方法是创建一个包含公钥的私钥和证书请求。这是您发送给另一方的。另一方必须确保请求来自您。然后另一方创建一个属于你的私钥的证书。使用这对您可以执行客户端身份验证。

      执行证书路径验证的另一种方法是使用openssl verify 命令。请注意,许多证书都是二进制/DER 编码的。如果它们是 PEM 编码的(openssl 的主要格式),那么它们看起来像文本。如果不是,它们可能以 30 hex 开头,这意味着它们是 DER 编码的。在使用openssl verify 命令之前,您需要将这些证书转换为 PEM 格式。请注意,您可以简单地连接 PEM 文件以创建一组 (CA) 证书。

      openssl x509 -inform der -in certificate.cer -out certificate.pem
      openssl verify -CAfile ca-chain.pem certificate.pem
      

      【讨论】:

        最近更新 更多