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






4.80/5 (7投票s)
您需要在 Azure WebService 中将默认的 HTTP 协议更改为 HTTPS。本文解释了如何操作。
引言
您创建了我的 Azure WCF RESTful 服务,将其上传到 Azure,进行了测试,并且准备好投入生产了,但是…您不想使用开放的 HTTP 协议,而是想要安全的 HTTPS 连接。我原以为只需将绑定从 webHTTPBinding 更改为类似 webHTTPSBindning 的绑定即可。但现实却有些不同。为了使我的 RESTful 服务通过 HTTPS 工作,我不得不进行一些调整,阅读了许多不同的文章,并将一些内容组合起来,最终使其对我有效。以下是我的版本,说明如何将 Azure 服务中配置的默认 HTTP 协议更改为 HTTPS。
步骤
- 我们需要创建一个证书。为此,可以使用提供证书的第三方供应商,或者我们可以使用 Windows 工具自行创建。我选择了第二种选择。为此,您需要从 VS 工具运行开发控制台。注意:命令提示符应以管理员身份运行。
- 执行控制台时,您需要在其中运行以下命令来创建证书。
makecert -r -pe -n CN=ispeakSSLCert -sky signature ispeakSSLCert.cer -sv ispeakSSLCert.pvk
在此命令中,iSpeakSSLCert 是我为证书选择的名称。它与我的云应用程序名称相关联:ispeak。
运行命令时,它会创建证书并要求您输入密钥的密码。
并验证它。
完成所有操作后,您将在控制台中看到“succeeded”。
- 下一步,我们创建 .pfx 文件,该文件实际上存储了证书。为此,我们使用上述步骤中的密码运行以下命令。
pvk2pfx -pvk ispeakSSLCert.pvk -spc ispeakSSLCert.cer -pfx ispeakSSLCert.pfx -pi 您使用的密码
如果您在此步骤中没有看到任何错误,则意味着您已成功。
- 下一步是打开 C:\Windows\SysWOW64(如果您使用的是 64 位 Windows 8)或 C:\Windows\System32(如果您使用的是 32 位 Windows 8),您将看到这些文件。
- 现在,让我们通过双击 .cer 文件在本地系统上安装我们的证书。
- 您可以运行命令 certmgr.msc 来打开证书管理应用程序,您可以在其中看到您的证书。
- 接下来,在 Visual Studio 中导航到 Web 角色属性。
- 在属性窗口中,打开“证书”并按“添加证书”。
- 给证书一个名称,为存储位置选择“本地计算机”,为存储名称选择“My”,然后单击指纹部分的“…”以从列表中选择我们创建的证书。
- 添加证书后,我们还需要添加 HTPS 终结点,如下面的屏幕截图所示。
- 配置完所有这些内容后,请确保您的 ServiceConfiguration.Local 和 ServiceConfiguration.Cloud 文件包含证书部分,如下面的示例所示。
<Certificates>
<Certificate name="iSpeakCerfificate" thumbprint="7631B8220A6A7C4BE63A752F0FE59F00A5E61030" thumbprintAlgorithm="sha1" />
</Certificates>
- 您还应该检查服务定义文件中是否也包含带有证书的部分。
<Certificates>
<Certificate name="iSpeakCerfificate" storeLocation="LocalMachine" storeName="My" />
</Certificates>
- 现在最重要的是:确保您的绑定包含 <security mode="Transport" />
- 就是这样。完成所有这些操作后,我能够通过 HTTPS 和 HHTP 以 2 个终结点同时运行我的服务。
目前,我的两个终结点都使用相同的绑定打开,并且基于此,HTTP 终结点不起作用。由于安全模式发生了变化。我已经从我的解决方案中完全删除了 HTTP 绑定,并且仅通过 HTTPS 工作。