练习 - 为加密配置后端池

已完成

你希望为传送门户应用程序实现端到端加密。 加密用户和服务器之间的所有数据有助于确保任何未经授权的用户都无法拦截和读取数据。

在本单元中,你将设置 Web 应用程序和应用程序网关。 接下来,创建一些自签名 SSL 证书,并在后端池中启用加密,从而协助保护从应用程序网关到服务器的流量。

下图突出显示你要在本练习中配置的元素。 你会使用 Azure 应用程序网关 v2 设置应用程序网关。

Diagram that highlights the elements (backend pool, SSL certificate, and HTTP settings) created in this exercise.

部署虚拟机和应用程序网关

  1. 在浏览器中打开 Azure Cloud Shell,登录至具有相应权限(对要在其中创建资源的订阅的访问权限)的目录。 本练习使用 Bash shell 环境。

  2. 在 Cloud Shell 中运行以下命令,以为资源创建资源组。 将 <resource group name> 替换为资源组的名称,将 <location> 替换为要在其中部署资源的 Azure 区域。

    az group create --resource-group <resource group name> --location <location>
    
  3. 在 Cloud Shell 中运行以下命令,创建用于存储资源组名称的变量:

    export rgName=<resource group name>
    
    
  4. 在 Azure Cloud Shell 中,运行以下命令来下载传送门户的源代码:

    git clone https://github.com/MicrosoftDocs/mslearn-end-to-end-encryption-with-app-gateway shippingportal
    
  5. 移动到“shippingportal”文件夹

    cd shippingportal
    
  6. 运行下面的安装脚本,创建虚拟机、证书和应用程序网关:

    bash setup-infra.sh
    

    注意

    此脚本需要几分钟才能完成。 允许它通过多个进程来解包和配置网关和资源。 你应看到进程成功,不会出现任何警告和错误。

验证 Web 服务器是否配置正确

  1. 运行以下命令,显示由安装脚本创建的 Web 服务器的 URL。

    echo https://"$(az vm show \
      --name webservervm1 \
      --resource-group $rgName \
      --show-details \
      --query [publicIps] \
      --output tsv)"
    
  2. 将 URL 复制并粘贴到 Web 浏览器,然后访问该 URL。

    浏览器很可能会显示如下图所示的警告消息。 警告消息中的内容可能因浏览器而异。 示例图像来自 Microsoft Edge。

    Screenshot of a warning about an unauthenticated server in Microsoft Edge.

    出现此警告的原因在于 Web 服务器是通过无法验证的自签名证书配置的。 在此警告页面上,查找并选择链接以继续访问网站;例如,选择“访问网页”或依次选择“高级”和“继续”或类似的按钮。 随后将转到运送门户的主页,如下图所示。 这是一个测试服务器是否配置正确的示例应用。

    Screenshot of the shipping portal home page Microsoft Edge.

为加密配置后端池

  1. 运行以下命令,获取充当 Web 服务器的虚拟机的专用 IP 地址。

    echo privateip="$(az vm list-ip-addresses \
      --resource-group $rgName \
      --name webservervm1 \
      --query "[0].virtualMachine.network.privateIpAddresses[0]" \
      --output tsv)"
    
  2. 创建用于存储专用 IP 地址的变量。 将 <privateIP> 替换为上一步骤中 IP 地址。

    export privateip=<privateIP>
    
    
  3. 使用虚拟机的专用 IP 地址为应用程序网关设置后端池。

    az network application-gateway address-pool create \
      --resource-group $rgName \
      --gateway-name gw-shipping \
      --name ap-backend \
      --servers $privateip
    
  4. 将后端池中的虚拟机证书上传到应用程序网关,作为受信任的根证书。 此证书由安装脚本生成,并存储在 shipping-ssl.crt 文件中。

    az network application-gateway root-cert create \
      --resource-group $rgName \
      --gateway-name gw-shipping \
      --name shipping-root-cert \
      --cert-file server-config/shipping-ssl.crt
    
  5. 配置 HTTP 设置以使用证书:

    az network application-gateway http-settings create \
      --resource-group $rgName \
      --gateway-name gw-shipping \
      --name https-settings \
      --port 443 \
      --protocol Https \
      --host-name $privateip
    
  6. 运行以下命令,将后端池的受信任证书设置为安装在后端虚拟机上的证书:

    export rgID="$(az group show --name $rgName --query id --output tsv)"
    
    az network application-gateway http-settings update \
        --resource-group $rgName \
        --gateway-name gw-shipping \
        --name https-settings \
        --set trustedRootCertificates='[{"id": "'$rgID'/providers/Microsoft.Network/applicationGateways/gw-shipping/trustedRootCertificates/shipping-root-cert"}]'
    

现在,你已拥有运行传送门户网站的虚拟机和应用程序网关。 已在应用程序网关和应用程序服务器之间配置 SSL 加密。