此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
在 HTTPS 终结点上配置 SSL 证书

在 HTTPS 终结点上配置 SSL 证书

更新时间: 2014年8月

要将 HTTPS 终结点添加到 Windows Azure 服务的角色中并将其与 SSL 证书相关联,您必须执行以下步骤:

  1. 从证书颁发机构获取一个 SSL 证书。有关详细信息,请参阅获取 SSL 证书

  2. 将该证书添加到托管服务的证书存储中。有关详细信息,请参阅将证书上载到 Windows Azure 中 部分。

  3. 在服务配置文件中添加证书指纹。有关详细信息,请参阅在服务配置文件中添加证书指纹部分。

  4. 更新服务定义文件以确定使用证书的托管服务。有关详细信息,请参阅在服务定义文件中添加证书部分。

  5. 在服务定义文件中配置 HTTPS 终结点,并将其与证书相关联。有关详细信息,请参阅配置 HTTPS 终结点部分。

  6. 设置颁发 SSL 证书的域名的 CNAME 记录以将通信重定向到服务。有关配置 CNAME 的更多信息,请参见配置 Windows Azure 云服务的自定义域名

在开发环境中测试 HTTPS 终结点时,所有身份验证都是使用为 127.0.0.1 提供的自签名证书完成的。有关详细信息,请参阅本主题后面的标题为在计算仿真程序中测试 HTTPS 终结点的部分。

用于帮助保护 Windows Azure 中的 HTTPS 终结点的 SSL 证书必须具有以下特性:

  • 证书必须包含私钥。

  • 证书的用途应该是服务器身份验证

  • 证书的主题名称必须与用于访问服务的域名相匹配。

  • 至少需要 2048 位的密钥大小。

note备注
如果您使用 Windows Azure Tools for Microsoft Visual Studio 开发服务,则可以使用您的角色的属性页配置 HTTPS 终结点。

Windows Azure 提供了安全的证书存储,可以在其中保存您的托管服务的证书。在将证书与您的服务相关联并将证书上载到存储中时,Windows Azure 自动将证书部署到运行您的角色实例的 VM 中。有关证书存储的更多信息,请参见管理证书

要将证书上载到证书存储中,请按照将新证书添加到证书存储中中的步骤进行操作。

服务配置文件中的证书指纹将服务定义文件中提供的证书逻辑名称与存储中的证书配对使用。通过在服务配置文件中保存指纹,可以将证书数据与服务包分开。这样,您或 IT 管理员可以更新证书,而无需重新部署服务。

要在服务配置文件中列出证书及其指纹,请修改该配置文件,然后在您的角色条目中添加 Certificates 集合。在 Certificates 集合中添加 Certificate 元素,然后指定证书的逻辑名称。请务必使用在服务定义文件中指定的同一名称。最后,指定证书的指纹和用于生成指纹的算法,如以下示例中所示:


<ServiceConfiguration serviceName="MyService">
  <Role name=" MyWorkerRole">
    <Instances count="5" />    
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <Certificates>
      <Certificate name="MySSLCert" thumbprint="8420C0773626D5137A820156EB5BD9D6FDB9BEE9" thumbprintAlgorithm="sha1"/>
    </Certificates>  
  </Role>
</ServiceConfiguration>

有关如何获取证书指纹的更多信息,请参见为 Azure 创建服务证书的“创建 X.509 v3 证书”一节。

要将证书与 HTTPS 终结点相关联,您必须提供用于在服务中标识该证书的证书逻辑名称。您还必须指示在运行您的角色实例的虚拟机上存储证书的位置。

在服务定义文件中,在您的角色定义中添加 Certificates 元素。在 Certificates 集合中,添加您的证书条目,如以下示例中所示:


  <WorkerRole name="MyWorkerRole" vmsize="Small">
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <LocalResources>
      . . .
    </LocalResources>
    <Endpoints>
      . . .
    </Endpoints>
    <Certificates>
      <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
  </WorkerRole>
</ServiceDefinition>

在此示例中,存储位置设置为 LocalMachine,存储名称设置为 My。这两个属性指示在 VM 上安装证书(此处标识为 MySSLCert)的位置。

您可以为证书的 name 属性选择所需的任意名称。只能使用该名称在 HTTPS 终结点定义和服务配置文件中引用证书。

要将 HTTPS 终结点添加到您的角色中,请编辑您的服务定义文件,并在您的角色的 Endpoints 集合中添加 InputEndpoint 元素。指定终结点名称、协议 (HTTPS) 和端口。然后,为在角色的 Certificates 集合中定义的证书指定逻辑名称。

以下步骤说明了如何为侦听端口 80 的 Web 角色添加 HTTP 输入终结点,并且还定义了侦听端口 443 的 HTTPS 终结点:

  1. 在文本编辑器中打开您的服务的 ServiceDefinition.csdef 文件。

  2. 将包含 Certificate 元素的 Certificates 集合元素添加到使用 SSL 保护的角色的角色元素中。将 name 属性设置为您的证书的名称。设置 storeLocationstoreName 属性以指定虚拟机中的证书位置。

        
    <Certificates>
       <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
    
    
  3. 将包含 InputEndpoint 元素的 Endpoints 集合元素添加到使用 SSL 保护的角色的角色元素中。设置 HttpsIn 输入终结点的 certificate 属性,以便与在 certificates 集合中指定的证书名称相匹配。

       
    <Endpoints>
       <InputEndpoint name="HttpIn" protocol="http" port="80" />
       <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MySSLCert" />
    </Endpoints>
    
    
  4. 保存该文件。

完成的服务定义类似于以下示例。


<ServiceDefinition name="MyService">
  <WorkerRole name="MyWorkerRole">
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <LocalResources>
      . . .
    </LocalResources>
    <Endpoints>
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
      <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MySSLCert" />
    </Endpoints>
    <Certificates>
      <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
  </WorkerRole>
</ServiceDefinition>

默认情况下,计算仿真程序依赖于 IP 地址 127.0.0.1(对应于 localhost)的自签名证书。如果在安装或配置在前面的步骤中配置的证书时出现问题,计算仿真程序将默认针对该自签名证书进行身份验证,而不是针对自定义证书。如果您的部署默认在 127.0.0.1 中使用 SSL 证书(即使您定义了不同的证书),请检查以确保您的自定义证书没有错误并已正确安装。

默认情况下,计算仿真程序使用的自签名证书不是根信任的。在浏览到 HTTPS 时,将会出现证书错误,除非您将该证书添加到本地计算机上的“受信任的根证书颁发机构”存储中。您可以忽略该错误,或者将该证书添加到受信任的根中以纠正该错误。

在 Windows Azure 计算仿真程序中运行托管服务时,可以将 SSL 端口设置为 443 以外的编号(通常为 444 或 445)。如果您指定的端口不可用,计算仿真程序将在 HTTPS 终结点 443 基础上增加端口号,直至找到可用的端口为止。

要使用端口 443,您必须关闭使用该端口的应用程序或网站,退出并重新启动计算仿真程序以重新加载可用的端口列表。关闭并重新启动仿真程序并不会重新加载可用的端口列表。

要确定是否正在使用端口 443,您可以打开一个命令提示符并使用 NETSTAT 命令。有关 NETSTAT 命令的更多信息,请参见 Netstat

如果没有证书颁发机构颁发的证书,您可以生成自签名证书以用于 Windows Azure 服务。

note备注
该自签名证书与开发环境使用的证书是分开的。该证书仅为您提供,并用于在开发环境中进行身份验证。

在 Windows Azure 中浏览到与自签名证书关联的 HTTPS 终结点时,将会在浏览器中出现证书错误。使用证书颁发机构签名的证书可以纠正该问题;同时,您也可以忽略该错误。

另请参阅

概念

管理证书

显示:
© 2015 Microsoft