【问题标题】:Questions about CSR and SSL Certificates关于 CSR 和 SSL 证书的问题
【发布时间】:2019-11-14 09:06:51
【问题描述】:

我正在连接到外部服务器,并正在制作 CSR 以从他们那里接收一些证书,我对此有一些疑问。

一些教程指出您应该保存私钥,因为这将在安装证书期间使用。但是,当使用 Windows 证书管理器 (certmgr.msc) 时,我认为它会在后台生成私钥,并且生成的 CSR 文件不包含任何私钥。所以在那种情况下,我根本无法访问任何私钥,除非我可以从以后收到的证书中导出它?我还觉得安装证书不需要私钥,因为它只是导入到证书存储中?如果是这样的话,除了生成公钥之外,私钥还有其他用处吗?

我也想知道证书的使用位置。似乎证书只能在创建 CSR 的服务器上使用。但是,我的应用程序将在 Azure 上运行,我如何才能获得可以在云中使用的证书?

最后一个问题:证书提供者提供三个证书,一个根证书、一个中间证书和一个“实际”证书。这些不同证书的用途是什么?

感谢您对此过程的任何见解或指导。那里有很多指南,但其中许多似乎以某种方式相互矛盾。

【问题讨论】:

    标签: ssl certificate ssl-certificate csr


    【解决方案1】:

    (certmgr.msc) 我认为 [] 在后台生成私钥,

    正确。您生成密钥 CSR,将后者发送给 CA,然后(我们希望!)取回包含您的公钥和身份的证书(对于 SSL/TLS,您的身份是您的域名) ,加上任何需要的链证书(通常是一个中间证书和一个根证书,但这可能会有所不同)。您将证书导入到 certmgr,它与现有的、存储的但隐藏的私钥匹配,以生成 pair 证书+私钥,现在可见且可用。

    要在 Windows 程序(如 IIS)中使用它,您还需要 chain 证书,见下文,在您的商店中 - 这些只是证书而不是私钥(s),你没有也不能得到。如果您使用 Comodo、GoDaddy、LetsEncrypt 等已建立的公共 CA,它们的根目录通常已经在您的商店中,如果您使用雇主运行的 CA,它们的根目录很可能已经在您的商店中用于其他电子邮件等原因;如果没有,你应该添加它。中间体(s?)可能已经在您的商店中,也可能不在您的商店中,如果没有,您应该添加它(它们)。

    我还觉得安装证书不需要私钥,因为它只是导入到证书存储中?

    需要的,但你不提供它,因为它已经在那里了。

    证书似乎只能在创建 CSR 的服务器上使用。但是,我的应用程序将在 Azure 上运行,我如何才能获得可以在云中使用的证书?

    最初,它只能在生成 CSR 和私钥的系统上使用。但是使用 certmgr,您可以将证书 私钥的组合 以及可选的证书链(导出向导称为“路径”)导出到 PKCS12/PFX 文件。该文件可以复制和导入到其他 Windows 系统和/或由其他类型的软件使用或导入到其他类型的软件,如 Java(例如 Tomcat 和 Jboss/Wildfly)、Apache、Nginx 等。

    但是请注意,您可以使用证书的一个或多个名称,或者可能是与(单级)通配符匹配的名称范围是在证书颁发时确定的,并且不能随后更改(除了通过获得新证书)。

    证书提供者提供三个证书,一个根证书、一个中间证书和一个“实际”证书。这些不同证书的用途是什么?

    证书颁发机构按层次结构排列。运行——尤其是保护——根 CA 既困难又昂贵。因此,最终实体(如您)的证书不是由根直接颁发,而是由下级或中间 CA 颁发。有时有不止一个级别的下级或中级。因此,当您的服务器使用此证书来证明其身份时,为了让浏览器或其他客户端验证(并因此接受)您的证书,您需要提供一个“链” ' 的证书,每个都由下一个签名,它将您的证书链接到受信任的根。正如我所说,一个中间体是常见的;这意味着您的服务器需要发送自己的证书,该证书由中间密钥签名,加上中间证书,该证书由根中的密钥签名。实际上不需要发送根,因为客户端已经在 他们的 信任库中拥有它,但它可能是,并且在使用它之前自己验证链也是可取的,为此你需要即使你不发送它也有根。

    【讨论】:

    • 太棒了,非常感谢您的详细回答!这解决了我的很多问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 2011-10-14
    • 2019-01-18
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多