在 Azure 云服务 中启用 HTTPS 通信(扩展支持)

使用超文本传输协议安全(HTTPS)协议完成与Microsoft Azure 云端服务(扩展支持)的通信。 本文讨论如何为云服务启用 HTTPS 通信(扩展支持)。

先决条件

项目部署的常规步骤

将云服务(扩展支持)项目部署到 Azure 的一般步骤如下所示:

  1. 准备证书。

  2. 配置项目。

  3. 将项目文件打包到云服务的服务定义(.csdef)、服务配置(.cscfg)和服务包(.cspkg)文件中。

  4. 如有必要,请更改云服务(扩展支持)资源的配置。 例如,可以进行以下任何修改:

    1. 更新包 URL。
    2. 配置 URL 设置。
    3. 更新操作系统机密设置。
  5. 将新项目部署并更新到 Azure。

注意

可以通过多种不同的方法部署项目,例如使用以下工具:

无论部署方法如何,常规部署步骤都是相同的。

所有部署方法都需要执行上述前两个步骤。 “代码更改”部分将讨论这些步骤。 其余步骤也很重要,但它们并不总是需要手动用户干预。 例如,步骤可能由 Visual Studio 等工具自动完成。 “配置更改”部分将讨论这些步骤的最后三个步骤。

代码更改

若要对代码进行更改以准备证书并配置项目,请执行以下步骤:

  1. 按照说明 ,通过步骤 6 将证书上传到密钥保管库

  2. 记下证书的指纹(40 位十六进制字符串)。

  3. 项目的服务配置 (.cscfg) 文件中 ,将证书指纹添加到要使用的证书的角色。 例如,如果要将证书用作 SSL 证书来与 WebRole 通信,可以添加类似于以下代码片段 WebRole1 的 XML 代码作为根 ServiceConfiguration 元素的第一个子元素:

    <Role name="WebRole1">
      <Instances count="1" />
      <Certificates>
        <Certificate
          name="Certificate1"
          thumbprint="0123456789ABCDEF0123456789ABCDEF01234567"
          thumbprintAlgorithm="sha1"
        />
      </Certificates>
    </Role>
    

    可以自定义证书的名称,但它必须与服务定义 (.csdef) 文件中使用的证书名称匹配。

  4. 服务定义 (.csdef) 文件中,添加以下元素。

    父 XPath 要添加的元素 要使用的属性
    /ServiceDefinition/WebRole/Sites/Site/Bindings Binding nameendpointName
    /ServiceDefinition/WebRole/Endpoints InputEndpoint 名称协议端口证书
    /ServiceDefinition/WebRole Certificates/Certificate namestoreLocationstoreNamepermissionLevel

    Certificates必须在结束Endpoints标记之后直接添加元素。 它不包含任何属性。 它仅包含子 Certificate 元素。

    例如,服务定义文件可能类似于以下 XML 代码:

    <?xml version="1.0" encoding="utf-8"?>
    <ServiceDefinition name="CSESOneWebRoleHTTPS" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
      <WebRole name="WebRole1" vmsize="Standard_D1_v2">
        <Sites>
          <Site name="Web">
            <Bindings>
              <Binding name="Endpoint1" endpointName="Endpoint1" />
              <Binding name="HttpsIn" endpointName="HttpsIn" />
            </Bindings>
          </Site>
        </Sites>
        <Endpoints>
          <InputEndpoint name="Endpoint1" protocol="http" port="80" />
          <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="Certificate1" />
        </Endpoints>
        <Certificates>
          <Certificate name="Certificate1" storeLocation="LocalMachine" storeName="My" permissionLevel="limitedOrElevated" />
        </Certificates>
      </WebRole>
    </ServiceDefinition>
    

    在此示例中,将修改服务定义文件,以在端口 443 上绑定 HTTPS 协议的 HttpsIn 输入终结点。 它使用 Certificate1 证书作为存储区, My 该存储的名称和位置 LocalMachine 仅为有限权限级别或提升的权限级别。 元素InputEndpointCertificate中的证书名称彼此匹配。 它们还与上一步的服务配置 (.cscfg) 文件中使用的证书名称匹配。

配置更改

有关更改云服务配置的说明因云服务的部署方式而异。 以下选项卡上显示了这些说明。 每个选项卡表示不同的部署方法。

在继续之前,请参阅使用 Azure 门户 部署 Azure 云服务(扩展支持)。 然后,按照以下步骤通过Azure 门户进行正确的配置更改:

  1. 转到标题为 手动从经典云服务迁移到使用 ARM 模板的云服务扩展支持的博客条目,并遵循步骤 7 到 9。 这些说明演示如何执行以下步骤:

    • 打包项目。

    • 将生成的服务包(<project-name.cspkg>)和云服务配置(ServiceConfiguration.Cloud.cscfg)文件上传到云服务的存储帐户容器中。

      注意

      还必须使用其他两个文件描述的相同过程上传服务定义(ServiceDefinition.csdef)文件。

    • 为每个上传的文件生成共享访问签名 (SAS) URL。

  2. Azure 门户中,返回到云服务的“概述”页,然后选择“更新”。

  3. “更新云服务 ”页上,在 “基本信息 ”选项卡上进行以下更改:

    1. “包/配置/服务定义位置 ”字段中,选择“ 从 blob”。

    2. “上传包”(.cspkg,.zip) 字段中,执行以下步骤:

      1. 选择“浏览”链接。
      2. 选择已上传文件的存储帐户和容器。
      3. 在容器页中,选择相应的文件(在本例中为 <project-name.cspkg>),然后选择“选择”按钮。
    3. 对于“上传配置”(.cscfg)字段(和 ServiceConfiguration.Cloud.cscfg 文件),请重复上一步中概述的子过程。

    4. 对于“上传服务定义”(.csdef)字段(和 ServiceDefinition.csdef 文件),请再次重复子项目。

  4. 选择“配置”选项卡。

  5. “密钥保管库 ”字段中,选择在其中上传证书的密钥保管库(之前在 “代码更改 ”部分)。 在所选密钥保管库中找到证书后,列出的证书将显示“已找到状态”。

  6. 若要部署新配置的项目,请选择“ 更新 ”按钮。

进行配置更改后,客户将能够使用 HTTPS 协议与云服务网站通信。 如果证书已自签名,浏览器可能会报告一条警告,指出证书不安全,但浏览器不会阻止连接。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区