通过 HTTPS 和 SSL 确保 Windows Azure 网站 (WAWS) 安全
编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写。
随着身份盗窃和各种形式的网络犯罪迅速增多,使用安全套接字层 (SSL) 对网站进行保护变得越来越重要和普遍。如果将网站托管在 Windows Azure 网站 (WAWS) 上,您可能想将其设置为使用 HTTPS。在本指南中,我们将了解如何完成此过程。
此过程的第一步似乎是获取数字证书...对吧?嗯,好像不是。实际上第一步应该确定您是想拥有自己的自定义域,还是使用 Azure 的默认域 Azurewebsites.net 来运行您的站点。之所以这是第一步,是因为 Windows Azure 网站实际上已预先配置为可在 SSL 上运行。如果您不需要使用自己的域,可以立即使用 SSL。您只需通过SSL地址浏览您的网站即可!在浏览器中,将前缀由 https:// 更改为 HTTPS:// 。瞧!您的站点将作出响应,并且您将与其建立安全连接。但是,建议不要使用此方法来保护敏感的内容或应用程序,因为它所使用的通配证书对所有 Azure 网站均通用。
如果您要在自己的域中使用 SSL,则需要执行几个额外的设置步骤。在执行任何操作之前,需注意的是,仅标准收费模式中的站点才支持在自定义域中使用 SSL。如果您的站点目前处于免费模式或共享模式,您必须切换到标准模式,这将需要额外收费。请参阅我们的定价指南或 Azure 计算器以了解预期成本。
在您选择域并设置要使用该域的站点后,下一步是获取与您的域匹配的数字证书。在购买证书时,您具有 3 个选项:
1. 购买一个匹配您的网站 URL 的简单证书。这是最便宜的选项,一年只需支付 8 美元,可以在诸如 https://www.thesslshop.com 的商店中购买。
2. 购买 SAN(Subject Alternative Name)证书。SAN 证书可与同一个域下的多个 URL 相匹配,是适用于拥有多个网站的公司的经济解决方案。您无需购买多个证书(分别为每个 URL 购买一个证书),而是购买一个可用于多个 URL 的证书,并且需支付的金额将少于需为多个证书支付的金额。
3. 购买通配证书。此证书可与您域中的任何子域相匹配。虽然此证书是最贵的一种证书,但是对于拥有许多网站的公司而言,它是最经济的选项。例如,如果贵公司拥有 30 个网站,那么购买一个通配证书需支付的金额(79 美元)将远低于购买 30 个简单证书需支付的金额(240 美元)。
要购买证书,您将需要选择提供商,并执行特定过程来生成 PFX 文件形式的证书。我们在这篇文章中介绍了此过程。
拥有证书之后,启用 SSL 就相当简单了。具体步骤如下:
第 1 阶段:将您的网站切换为 Standard 。
在进行此切换之前,您可能需要考虑取消以前设置的支出限额。虽然这并不是必需的,但是通常不会在具有支出限额的情况下运行商业网站,因为如果达到您设置的限额,您的网站在下一个计费周期之前将处于离线状态。将站点切换为 Standard 的步骤如下:
1. 登录到 Azure 管理门户
2. 单击您的网站
3. 切换到 Scale 选项卡
4. 在 General 下,单击 Standard 按钮将站点切换为 Standard 状态。
5. 单击 Save
第 2 阶段:配置 SSL
要配置 SSL,您需要上传证书并将其绑定到您的站点。具体步骤如下:
1. 登录到 Azure 管理门户
2. 单击您的网站
3. 切换到 Configure 选项卡
4. 在 Certificate 部分中,单击 Upload a certificate
5. 上传证书的 PFX 文件,并为其指定密码(您应该已在将证书导出至 PFX 时创建了密码)
6. 在 SSL Binding 下,从下拉列表中选择您的自定义域。如果您尚未配置自定义域,请单击此处阅读有关如何执行此操作的说明:
7. 从下拉列表中选择相关证书(当前您仅拥有一个证书,但以后可能会拥有更多证书)
8. 在第 3 个下拉列表中,您可以选择启用或禁用 SNI。通常情况下,您会希望使用 SNI,但是如果您预期将有版本很低的浏览器(Windows XP 或更低)访问自己的网站,请选择 IP Based SSL。如果查看 SSL 定价,您将发现使用 SNI 也是一种很经济的方式。
9. 单击 Save
运气好的话,现在就大功告成了,您的站点现在将对发送到 HTTPS 的请求做出响应。
有问题?
您可能会遇到的最常见问题是无法将证书上传到 Azure。在以前的博客文章中,我们讨论了如何获取证书,借此机会要提醒您的是,证书必须是已导出的 PFX 证书,而不是您从证书提供商获得的文件(即使它也是 PFX 文件形式)。这是因为,要将证书分配到网站,Azure 必须具有与该证书关联的私钥。证书生成过程从您的计算机开始,首先创建私钥,然后由您的证书提供商进行匹配。需将提供商返回给您的文件导入到最初发出请求的计算机,然后将生成“完整”的证书。如果您尝试上传由提供程序提供的文件,该文件不会为 Azure 提供私钥,这将导致证书无效。
此问题也可能表现为未正确地将证书导出到 PFX。导出中必须包含私钥(这就是为什么您需要在此过程中指定密码的原因),并且如果您在执行导入时忘记选中该框,将无法导出。
使用证书时的另一个常见问题是,当用户尝试浏览到站点时,浏览器会显示某种安全警告。当浏览器不认可证书时就会发生这个情况,针对该情况不同浏览器被设计为提供不同的响应。某些浏览器只是显示一条警告,其他浏览器则可能会完全阻止此站点。导致出错的最常见原因是 URL 不匹配。证书是针对特定 URL 颁发的,如果实际 URL 不匹配,则会形成潜在的安全风险。哪怕是一个拼写错误就可能会毁掉您一整天的工作,因此务必谨慎。
导致浏览器显示安全警告的一个更常见的原因是证书不受信任。证书通常由商业提供商颁发和出售,并且所有现代操作系统都预先配置了所有主要商业提供商的根证书。但是,如果您是从私有证书颁发机构(例如由一些私人组织或您自己的公司拥有的 CA 服务器)颁发的证书,证书将不受信任,并会导致错误。Azure 网站不支持使用私有证书,因此,如果您要在不购买证书的情况下使用 SSL,可以转为使用自签名证书。
如上所述,默认情况下将支持所有主要商业提供商,但是您可能会偶尔遇到在其信任链中使用中间证书的提供商。一些证书提供商已将其证书路径分为 2 个部分,因此您的证书将不由根 CA 颁发,而是由较低级别的“中间”服务器(受提供商根的信任)颁发。在这种情况下,证书可能会导致客户端浏览器发出警告,这意味着需要随您的证书一起上传提供商所颁发的中间证书。当您将证书导出到 PFX 中时,应在其中包括整个链,并且默认情况下此选项已启用:
但是,如果您取消选中该选项,或者以其他不包含证书路径的方式导出,可能会导致一些提供商出现问题。如果不能确定,建议您重新执行导出,并确保选中此选项。
本文翻译自: