如何将现有Azure网络角色从http切换为https

时间:2018-04-20 17:53:13

标签: asp.net azure ssl https azure-web-roles

我有一个工作的Azure Web角色,我一直在http端点上使用它。我现在正试图将其切换到https但是我认为这是一个简单的操作。 (我将在此处提供一些提示,以便将来的读者解决我已经遇到过的问题

我使用Microsoft here记录的powershell命令创建(现在)自签名证书,并将其上传到azure门户。我知道第三方在拥有自签名证书时无法使用API​​,但我的计划是在购买适当的&#39之前使用以下内容进行本地客户端测试;证书。

  ServicePointManager.ServerCertificateValidationCallback += (o, c, ch, er) => true;

提示:您需要上传.pfx文件,然后提供您在powershell脚本中使用的密码。不要因建议创建一个完全不同的.cer文件而感到困惑。

然后,我按照记录的流程来配置azure云服务here,尽管这些操作中的许多现在直接通过visual studio而不是手工编辑文件完成。

主要的云服务'我希望修改的角色项目:

  • 我导入了新创建的证书。 提示:用于添加指纹的对话框的设计使得很容易错误地选择已安装在您的计算机上的开发人员证书(由visual studio?)。点击“更多选项”'获取_your_证书,然后检查显示的指纹与证书部分中Azure门户中显示的匹配。

certificates properties

  • 在'端点'我添加了一个新的https端点。 提示:使用标准的https端口443,而不是默认的'端口8080,否则您的服务将无法得到任何响应

endpoints properties

  • 在服务本身的web.config中,我更改了服务的端点绑定,以便name元素与新端点匹配。

web config for role

  • 然后我将云项目发布到Azure(使用Visual Studio)。

此时,我没有看到我预期的结果。该服务仍可在http上使用,但在https上不可用。当我尝试在https上浏览它时( includeExceptionDetailInFaults 设置为true)我得到:

HTTP错误404"您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用"

error

我认为这意味着https端点可用但服务本身绑定到http而不是https,尽管我对web.config进行了更改。

我已经验证发布步骤确实是通过修改一些返回的内容来上传新配置。 (请记住,http仍然可以使用。)

我试过删除过时的' http端点,但这只会导致不同的错误:

"无法找到与绑定WebHttpBinding的端点的方案http匹配的基址。已注册的基地址方案为[https]"

我确定我必须在这里遗漏一些简单的东西。任何人都可以建议它是什么或进一步解决问题的技巧?有许多与网站相关的堆栈溢出答案,并建议需要调整IIS设置,但我不知道这是如何适用于我不能直接控制的网络角色服务器

编辑根据Gaurav的建议,我使用(自签名)证书为我们自己的域而不是cloudapp.net重复此过程,然后尝试通过此域访问该服务。我仍然看到相同的结果;即服务可以通过http而不是https。

Edit2 来自csdef文件的信息......是" Endpoint1"的双重引用。可疑?

 <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="HttpsEndpoint" />
          <Binding name="Endpoint1" endpointName="HttpEndpoint" />
        </Bindings>
      </Site>
  </Sites>
  <Endpoints>
  <InputEndpoint name="HttpsEndpoint" protocol="https" port="443" certificate="backend" />
  <InputEndpoint name="HttpEndpoint" protocol="http" port="80" />
</Endpoints>
<Certificates>
  <Certificate name="backend" storeLocation="LocalMachine" storeName="My" />
</Certificates>

0 个答案:

没有答案