为 Azure 云服务(经典)配置SSL

NOTE: 本文由 赤石俊哉 撰写,转载时请注明出处。

参考:
Microsoft Azure - Azure 云服务证书概述
在 Azure 中为应用程序配置 SSL

获取证书

获取证书的方式有两种,一种是通过使用现有域名,向权威的 CA 机构申请证书。另一种则是自签名证书。自签名证书具有较差的安全性,而且也会被浏览器标示为不安全的连接,所以建议使用第三方 CA 颁发的证书用于产品环境。自签名证书仅用于测试。
这里我们不介绍第一种方式,就自签名证书的方法进行描述。

创建自签名证书

引用:

可以使用任何可用工具创建自签名的证书,只要它们符合这些设置:

  • X.509 证书。
  • 包含私钥。
  • 为密钥交换(.pfx 文件)而创建。
  • 使用者名称必须与用于访问云服务的域匹配。

    无法获取 cloudapp.net 域(或与 Azure 相关的任何域)的 SSL 证书;该证书的使用者名称必须与用于访问应用程序的自定义域名匹配。 例如,contoso.net,而不是 contoso.cloudapp.net。
  • 至少为 2048 位加密。
  • 仅服务证书:客户端证书必须驻留在个人证书存储区。

使用 PowerShell 运行下面的命令即可创建自签名证书

$cert = New-SelfSignedCertificate -DnsName yourdomain.cloudapp.net -CertStoreLocation "cert:\LocalMachine\My"
$password = ConvertTo-SecureString -String "your-password" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath ".\my-cert-file.pfx" -Password $password

yourdomain.cloudapp.net替换成你的域名,如果希望用于某一个 IP 地址而不是域名,可以将它替换成对应的 IP 地址。
your-password替换成你的密码。
.\my-cert-file.pfx替换成证书文件导出的本地位置。

在 Linux 中生成秘钥对的方法可以参考Microsoft Azure - 如何创建和使用适用于 Azure 中 Linux VM 的 SSH 公钥和私钥对

云服务项目设置

在 Visual Studio 中打开云服务项目,从角色中找到你需要添加 SSL 的 Web 角色,双击会打开配置。

NOTE:
如果你希望从 cscfg 配置文件中直接修改,可以参考原文,本文使用 Visual Studio 图形界面进行配置。
原文地址:在 Azure 中为应用程序配置 SSL

添加证书

导航到证书选项卡,点选添加证书,会在配置表格中添加一行,名称可以随便起一个,存储位置和存储名称对应上面 PowerShell 命令中的 -CertStoreLocation 的参数,如果你没有修改,则是默认的 LocalMachineMy
点选指纹格后面的 ... 按钮,找到刚刚我们创建的证书的名字,指纹就会被自动填入表格。

添加 https 端点

导航到端点选项卡,点选添加端点,同样也会在配置表格中添加一行,名称还是随意,类型选择 Input,协议选择 https,公用端口选择 443,当然你也可以用其他端口,443https 的默认端口。专用端口可以留空,SSL 证书名称则对应上一步我们添加的证书那个随便起的名字。

测试

至此,你就完成了所有的步骤,可以部署到测试环境测试一下 https 是否已经生效了,


赤石俊哉
127 声望227 粉丝