65.9K
CodeProject 正在变化。 阅读更多。
Home

让您的 Azure REST WCF 服务通过 HTTPS 工作

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.80/5 (7投票s)

2015 年 1 月 13 日

CPOL

3分钟阅读

viewsIcon

16509

您需要在 Azure WebService 中将默认的 HTTP 协议更改为 HTTPS。本文解释了如何操作。

引言

您创建了我的 Azure WCF RESTful 服务,将其上传到 Azure,进行了测试,并且准备好投入生产了,但是…您不想使用开放的 HTTP 协议,而是想要安全的 HTTPS 连接。我原以为只需将绑定从 webHTTPBinding 更改为类似 webHTTPSBindning 的绑定即可。但现实却有些不同。为了使我的 RESTful 服务通过 HTTPS 工作,我不得不进行一些调整,阅读了许多不同的文章,并将一些内容组合起来,最终使其对我有效。以下是我的版本,说明如何将 Azure 服务中配置的默认 HTTP 协议更改为 HTTPS。

步骤

  1. 我们需要创建一个证书。为此,可以使用提供证书的第三方供应商,或者我们可以使用 Windows 工具自行创建。我选择了第二种选择。为此,您需要从 VS 工具运行开发控制台。注意:命令提示符应以管理员身份运行。
  2. 执行控制台时,您需要在其中运行以下命令来创建证书。

makecert -r -pe -n CN=ispeakSSLCert -sky signature ispeakSSLCert.cer -sv ispeakSSLCert.pvk

在此命令中,iSpeakSSLCert 是我为证书选择的名称。它与我的云应用程序名称相关联:ispeak。

运行命令时,它会创建证书并要求您输入密钥的密码。

并验证它。

完成所有操作后,您将在控制台中看到“succeeded”。

  1. 下一步,我们创建 .pfx 文件,该文件实际上存储了证书。为此,我们使用上述步骤中的密码运行以下命令。

pvk2pfx -pvk ispeakSSLCert.pvk -spc ispeakSSLCert.cer -pfx ispeakSSLCert.pfx -pi 您使用的密码

如果您在此步骤中没有看到任何错误,则意味着您已成功。

  1. 下一步是打开 C:\Windows\SysWOW64(如果您使用的是 64 位 Windows 8)或 C:\Windows\System32(如果您使用的是 32 位 Windows 8),您将看到这些文件。

  1. 现在,让我们通过双击 .cer 文件在本地系统上安装我们的证书。









 

  1. 您可以运行命令 certmgr.msc 来打开证书管理应用程序,您可以在其中看到您的证书。
  2. 接下来,在 Visual Studio 中导航到 Web 角色属性。

 

  1. 在属性窗口中,打开“证书”并按“添加证书”。






 

  1. 给证书一个名称,为存储位置选择“本地计算机”,为存储名称选择“My”,然后单击指纹部分的“…”以从列表中选择我们创建的证书。








 

  1. 添加证书后,我们还需要添加 HTPS 终结点,如下面的屏幕截图所示。







 

  1. 配置完所有这些内容后,请确保您的 ServiceConfiguration.Local 和 ServiceConfiguration.Cloud 文件包含证书部分,如下面的示例所示。

    <Certificates>

      <Certificate name="iSpeakCerfificate" thumbprint="7631B8220A6A7C4BE63A752F0FE59F00A5E61030" thumbprintAlgorithm="sha1" />

    </Certificates>

  1. 您还应该检查服务定义文件中是否也包含带有证书的部分。

    <Certificates>

      <Certificate name="iSpeakCerfificate" storeLocation="LocalMachine" storeName="My" />

    </Certificates>

  1. 现在最重要的是:确保您的绑定包含 <security mode="Transport" />
  2. 就是这样。完成所有这些操作后,我能够通过 HTTPS 和 HHTP 以 2 个终结点同时运行我的服务。





 

目前,我的两个终结点都使用相同的绑定打开,并且基于此,HTTP 终结点不起作用。由于安全模式发生了变化。我已经从我的解决方案中完全删除了 HTTP 绑定,并且仅通过 HTTPS 工作。

© . All rights reserved.