练习 - 配置用于加密的后端池

已完成

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

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

下图突出显示了在本练习中配置的元素。 您正在使用 Azure 应用程序网关 v2 来配置应用程序网关。

此图突出显示在本练习中创建的元素(后端池、SSL 证书和 HTTP 设置)。

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

  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 复制并粘贴到您的网页浏览器中,然后打开该 URL。

    浏览器很可能显示类似于下图的警告消息。 根据浏览器的不同,警告消息中的确切内容可能会有所不同。 示例图像来自 Microsoft Edge。

    有关 Microsoft Edge 中未经身份验证的服务器的警告的屏幕截图。

    发生此警告是因为 Web 服务器是通过无法进行身份验证的自签名证书配置的。 在此警告页上,查找并选择指向网站的链接;例如,选择 “转到网页 ”或“ 高级 ”,然后选择 “继续”或等效项。 结果将转到发货门户主页,如下图所示。 这是一个示例应用,用于测试服务器是否已正确配置。

    运输门户网站首页的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. 将后端池中的 VM 证书作为受信任的根证书上传到应用程序网关。 安装脚本生成了此证书,并将其存储在 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. 运行以下命令,将后端池的受信任证书设置为在后端 VM 上安装的证书:

    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 加密。