我的Azure Web角色中的SSL证书“不受信任”

时间:2017-10-23 23:38:33

标签: azure ssl https

我的Azure网络角色中安装了GoDaddy SSL证书。它适用于大多数客户,但有些客户抱怨证书“不受信任”。特别是,我有一个Azure Scheduler作业连接到我的Web角色定期POST到https端点,但POST失败。经过一番调查后发现POST失败了,因为SSL证书“不可信任”。

我的SSL证书未完全正确连接的事实也通过使用此工具检查我的域来验证:

https://www.digicert.com/help

据我所知,许多客户端(Web浏览器)都有GoDaddy证书链(即从我的SSL证书到GoDaddy根CA的“中间”证书)。但是某些客户端(例如Azure Scheduler)希望我的Web服务器不仅提供我的SSL证书,还提供直到根CA的所有中间证书。

如何在Azure网络角色中包含中间证书?

注意:我问这个问题的目的是为了自己回答这个问题(现在我已经挣扎了一个星期来解决它)。

1 个答案:

答案 0 :(得分:4)

答案概述

您需要手动将中间证书添加到Web角色“证书”(在Visual Studio中),并且需要将中间证书上载到Azure Web角色。

第1步:将p7b文件转换为pfx以上传到Azure

此步骤源自this article

  1. 从GoDaddy下载您的证书文件。这会为您提供一个包含 crt 文件和 p7b 文件的zip文件。 crt文件包含您的SSL证书,但在完成CSR请求之前,它尚未完全出炉。请参阅下文了解详情。 p7b文件包含GoDaddy中间证书。
  2. 使用crt文件完成CSR请求。有关详细信息,请参阅this SO answer
  3. 打开Windows证书管理器(certlm.msc)
  4. 将p7b文件导入Local computer/Intermediate Certifcation Authorities/Certificates节点。
  5. 将SSL证书及其依赖项导出为.PFX文件。如果使用证书管理器(certlm.msc)导出证书,则此步骤有效,但如果使用IIS管理器导出证书,则无法(据我所知)。在Personal/Certificates节点中找到您的SSL证书,右键单击,然后选择所有任务... /导出。告诉向导导出私钥,并在路径和所有扩展属性中包含所有证书。
  6. 步骤2:将证书上载到Azure Web角色

    将您在上一步中创建的pfx文件上载到Azure Web角色中的证书。这会将您的SSL证书和所有中间证书直到根CA 添加到您的Azure Web角色。

    步骤3:将证书添加到您的Web角色项目

    此步骤源自this article

    1. 在Visual Studio中,导航到您的Web角色(Solution/Azure project/Roles/Your web role),右键单击,然后选择“属性”
    2. 在“属性”窗口中,选择“证书”
    3. 现在,您需要手动添加新证书(实际上,您只需为每个中间证书添加新证书指纹)。您可以从Azure门户“证书”网页复制并粘贴指纹,或者(通过一些额外的工作)您可以直接从本地Windows证书存储中获取它们。

      如果您想在Visual Studio中使用内置的“从我的计算机读取证书”魔术获取指纹,您需要先:

      1. 打开Windows证书管理器(certlm.msc)
      2. 将包含中间证书的pfx文件导入Personal/Certificates节点
      3. 同时,回到Visual Studio,每个中间证书:

        1. 点击“添加证书”,然后点击
        2. 为中间证书输入一个有意义的名称(该名称仅供参考;不用于任何内容)
        3. 将商店名称设置为CA.
        4. 输入证书指纹。您可以从Azure门户中的Web角色/证书页面复制并粘贴它,或者,如果您已将证书导入个人证书存储区(如上所述),则可以通过单击指纹中的省略号来获取它。框并选择证书。
        5. 第4步:发布并测试

          呼。因此,现在您已将p7b和crt文件转换为包含SSL证书和GoDaddy证书的pfx文件。您已将证书上载到Azure,并已将它们添加到Visual Studio项目中。

          将您的新项目发布到Azure。您可以使用以下任一在线工具测试您网站的SSL:

          https://www.sslshopper.com/ssl-checker.html
          https://www.digicert.com/help