Udostępnij za pośrednictwem


Uwidacznianie aplikacji w Internecie za pomocą kończenia żądań protokołu TLS w usłudze Application Gateway

Uwaga

Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.

Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.

W tym artykule wyjaśniono, jak uwidaczniać aplikacje w Internecie przy użyciu usługi Application Gateway.

Po wdrożeniu wystąpienia usługi Azure Spring Apps w sieci wirtualnej aplikacje w wystąpieniu usługi są dostępne tylko w sieci prywatnej. Aby aplikacje były dostępne w Internecie, należy zintegrować je z usługą aplikacja systemu Azure Gateway. Przychodzący zaszyfrowany ruch można odszyfrować w bramie aplikacji lub przekazać go do usługi Azure Spring Apps zaszyfrowane w celu uzyskania kompleksowego protokołu TLS/SSL. Na potrzeby tworzenia i testowania można rozpocząć od zakończenia protokołu SSL w bramie aplikacji, która jest omówiona w tym przewodniku. W przypadku środowiska produkcyjnego zalecamy kompleksowe protokoły TLS/SSL z certyfikatem prywatnym, zgodnie z opisem w temacie Uwidacznij aplikacje z kompleksową protokołem TLS w sieci wirtualnej.

Wymagania wstępne

Konfigurowanie usługi Application Gateway dla usługi Azure Spring Apps

Zalecamy, aby nazwa domeny, jak widać w przeglądarce, jest taka sama jak nazwa hosta używana przez usługę Application Gateway do kierowania ruchu do zaplecza usługi Azure Spring Apps. To zalecenie zapewnia najlepsze środowisko korzystania z usługi Application Gateway w celu uwidaczniania aplikacji hostowanych w usłudze Azure Spring Apps i znajdujących się w sieci wirtualnej. Jeśli domena uwidoczniona przez usługę Application Gateway różni się od domeny zaakceptowanej przez usługę Azure Spring Apps, pliki cookie i wygenerowane adresy URL przekierowania (na przykład) mogą być uszkodzone. Aby uzyskać więcej informacji, zobacz Zachowywanie nazwy hosta.

Aby skonfigurować usługę Application Gateway przed usługą Azure Spring Apps w prywatnej sieci wirtualnej, wykonaj następujące kroki.

  1. Postępuj zgodnie z instrukcjami w artykule Deploy Azure Spring Apps in a virtual network (Wdrażanie usługi Azure Spring Apps w sieci wirtualnej).
  2. Postępuj zgodnie z instrukcjami w artykule Uzyskiwanie dostępu do aplikacji w sieci prywatnej.
  3. Uzyskaj certyfikat dla wybranej domeny i zapisz go w usłudze Key Vault. Aby uzyskać więcej informacji, zobacz Samouczek: importowanie certyfikatu w usłudze Azure Key Vault.
  4. Skonfiguruj domenę niestandardową i odpowiedni certyfikat z usługi Key Vault w aplikacji wdrożonej w usłudze Azure Spring Apps. Aby uzyskać więcej informacji, zobacz Samouczek: mapowania istniejącej domeny niestandardowej na usługę Azure Spring Apps.
  5. Wdróż usługę Application Gateway w sieci wirtualnej skonfigurowanej zgodnie z następującą listą:
    • Użyj usługi Azure Spring Apps w puli zaplecza, do których odwołuje się domena z sufiksem private.azuremicroservices.io.
    • Dołącz odbiornik HTTPS przy użyciu tego samego certyfikatu z usługi Key Vault.
    • Skonfiguruj sieć wirtualną przy użyciu ustawień PROTOKOŁU HTTP, które używają niestandardowej nazwy domeny skonfigurowanej w usłudze Azure Spring Apps zamiast sufiksu domeny z private.azuremicroservices.io.
  6. Skonfiguruj publiczny system DNS, aby wskazywał bramę aplikacji.

Definiowanie zmiennych

Następnie użyj następujących poleceń, aby zdefiniować zmienne dla grupy zasobów i sieci wirtualnej utworzonej zgodnie z instrukcjami w temacie Wdrażanie usługi Azure Spring Apps w sieci wirtualnej. Zastąp <symbole zastępcze ...> rzeczywistymi wartościami na podstawie rzeczywistego środowiska. Po zdefiniowaniu SPRING_APP_PRIVATE_FQDNelementu usuń https:// element z identyfikatora URI.

export SUBSCRIPTION='<subscription-id>'
export RESOURCE_GROUP='<resource-group-name>'
export LOCATION='eastus'
export SPRING_CLOUD_NAME='<name-of-Azure-Spring-Apps-instance>'
export APPNAME='<name-of-app-in-Azure-Spring-Apps>'
export SPRING_APP_PRIVATE_FQDN='$APPNAME.private.azuremicroservices.io'
export VIRTUAL_NETWORK_NAME='azure-spring-apps-vnet'
export APPLICATION_GATEWAY_SUBNET_NAME='app-gw-subnet'
export APPLICATION_GATEWAY_SUBNET_CIDR='10.1.2.0/24'

Logowanie się do platformy Azure

Użyj następującego polecenia, aby zalogować się do interfejsu wiersza polecenia platformy Azure i wybrać aktywną subskrypcję.

az login
az account set --subscription $SUBSCRIPTION

Konfigurowanie nazwy domeny publicznej w usłudze Azure Spring Apps

Ruch spowoduje wprowadzenie aplikacji wdrożonej w usłudze Azure Spring Apps przy użyciu nazwy domeny publicznej. Aby skonfigurować aplikację do nasłuchiwania tej nazwy hosta za pośrednictwem protokołu HTTP, użyj następujących poleceń, aby dodać domenę niestandardową do aplikacji, zastępując <symbole zastępcze ...> rzeczywistymi wartościami:

export KV_NAME='<name-of-key-vault>'
export KV_RG='<resource-group-name-of-key-vault>'
export CERT_NAME_IN_KV='<name-of-certificate-with-intermediaries-in-key-vault>'
export DOMAIN_NAME=myapp.mydomain.com

az spring app custom-domain bind \
    --resource-group $RESOURCE_GROUP \
    --service $SPRING_CLOUD_NAME \
    --domain-name $DOMAIN_NAME \
    --app $APPNAME

Tworzenie zasobów sieciowych

Brama aplikacji, która ma zostać utworzona, dołączy tę samą sieć wirtualną co wystąpienie usługi Azure Spring Apps. Najpierw utwórz nową podsieć dla bramy aplikacji w sieci wirtualnej, a następnie utwórz publiczny adres IP jako fronton bramy aplikacji, jak pokazano w poniższym przykładzie.

export APPLICATION_GATEWAY_PUBLIC_IP_NAME='app-gw-public-ip'
az network vnet subnet create \
    --name $APPLICATION_GATEWAY_SUBNET_NAME \
    --resource-group $RESOURCE_GROUP \
    --vnet-name $VIRTUAL_NETWORK_NAME \
    --address-prefix $APPLICATION_GATEWAY_SUBNET_CIDR
az network public-ip create \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --name $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
    --allocation-method Static \
    --sku Standard

Tworzenie tożsamości zarządzanej dla bramy aplikacji

Brama aplikacji musi mieć dostęp do usługi Key Vault, aby odczytać certyfikat. W tym celu brama aplikacji będzie używać tożsamości zarządzanej przypisanej przez użytkownika. Aby uzyskać więcej informacji, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure? Utwórz tożsamość zarządzaną przy użyciu następującego polecenia, zastępując <symbol zastępczy ...>

export APPGW_IDENTITY_NAME='<name-for-appgw-managed-identity>'
az identity create \
    --resource-group $RESOURCE_GROUP \
    --name $APPGW_IDENTITY_NAME

Następnie użyj następującego polecenia, aby pobrać objectId element dla tożsamości zarządzanej. Ta wartość będzie używana później w celu udzielenia praw dostępu do certyfikatu w usłudze Key Vault.

export APPGW_IDENTITY_CLIENTID=$(az identity show \
    --resource-group $RESOURCE_GROUP \
    --name $APPGW_IDENTITY_NAME \
    --query clientId \
    --output tsv)
export APPGW_IDENTITY_OID=$(az ad sp show \
    --id $APPGW_IDENTITY_CLIENTID \
    --query objectId \
    --output tsv)

Ustawianie zasad w usłudze Key Vault

Skonfiguruj usługę Key Vault przy użyciu następującego polecenia, aby tożsamość zarządzana bramy aplikacji mogła uzyskać dostęp do certyfikatu przechowywanego w usłudze Key Vault:

az keyvault set-policy \
    --resource-group $KV_RG \
    --name $KV_NAME \
    --object-id $APPGW_IDENTITY_OID \
    --secret-permissions get list \
    --certificate-permissions get list

Tworzenie bramy aplikacji

Utwórz bramę aplikacji przy użyciu i az network application-gateway create określ prywatną w pełni kwalifikowaną nazwę domeny (FQDN) aplikacji jako serwery w puli zaplecza. Pamiętaj, aby użyć tożsamości zarządzanej przypisanej przez użytkownika i wskazać certyfikat w usłudze Key Vault przy użyciu identyfikatora tajnego certyfikatu.

export APPGW_NAME='<name-for-application-gateway>'
export CERT_NAME_IN_KV='<name-of-certificate-in-key-vault>'
export KEYVAULT_SECRET_ID_FOR_CERT=$(az keyvault certificate show \
    --name $CERT_NAME_IN_KV \
    --vault-name $KV_NAME \
    --query sid \
    --output tsv)

az network application-gateway create \
    --name $APPGW_NAME \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --capacity 2 \
    --sku Standard_v2 \
    --frontend-port 443 \
    --http-settings-cookie-based-affinity Disabled \
    --http-settings-port 80 \
    --http-settings-protocol Http \
    --public-ip-address $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
    --vnet-name $VIRTUAL_NETWORK_NAME \
    --subnet $APPLICATION_GATEWAY_SUBNET_NAME \
    --servers $SPRING_APP_PRIVATE_FQDN \
    --key-vault-secret-id $KEYVAULT_SECRET_ID_FOR_CERT \
    --identity $APPGW_IDENTITY_NAME

Tworzenie bramy aplikacji na platformie Azure może potrwać do 30 minut.

Aktualizowanie ustawień PROTOKOŁU HTTP w celu używania nazwy domeny w kierunku zaplecza

Zaktualizuj ustawienia PROTOKOŁU HTTP, aby używać nazwy domeny publicznej jako nazwy hosta zamiast sufiksu domeny z sufiksem .private.azuremicroservices.io w celu wysyłania ruchu do usługi Azure Spring Apps za pomocą polecenia .

az network application-gateway http-settings update \
    --resource-group $RESOURCE_GROUP \
    --gateway-name $APPGW_NAME \
    --host-name-from-backend-pool false \
    --host-name $DOMAIN_NAME \
    --name appGatewayBackendHttpSettings

Sprawdzanie wdrożenia bramy aplikacji

Po utworzeniu sprawdź kondycję zaplecza, używając następującego polecenia. Dane wyjściowe tego polecenia umożliwiają określenie, czy brama aplikacji dociera do aplikacji za pośrednictwem jej prywatnej w pełni kwalifikowanej nazwy domeny (FQDN).

az network application-gateway show-backend-health \
    --name $APPGW_NAME \
    --resource-group $RESOURCE_GROUP

Dane wyjściowe wskazują stan dobrej kondycji puli zaplecza, jak pokazano w poniższym przykładzie:

{
  "backendAddressPools": [
    {
      "backendHttpSettingsCollection": [
        {
          "servers": [
            {
              "address": "my-azure-spring-apps-hello-vnet.private.azuremicroservices.io",
              "health": "Healthy",
              "healthProbeLog": "Success. Received 200 status code",
              "ipConfiguration": null
            }
          ]
        }
      ]
    }
  ]
}

Konfigurowanie systemu DNS i uzyskiwanie dostępu do aplikacji

Skonfiguruj publiczny system DNS, aby wskazywał bramę aplikacji przy użyciu rekordu CNAME lub A. Publiczny adres bramy aplikacji można znaleźć przy użyciu następującego polecenia:

az network public-ip show \
    --resource-group $RESOURCE_GROUP \
    --name $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
    --query [ipAddress] \
    --output tsv

Teraz możesz uzyskać dostęp do aplikacji przy użyciu nazwy domeny publicznej.

Czyszczenie zasobów

Jeśli planujesz kontynuować pracę z kolejnymi artykułami, możesz pozostawić te zasoby na swoim miejscu. Gdy grupa zasobów nie będzie już potrzebna, usuń grupę zasobów, która usuwa zasoby w grupie zasobów. Aby usunąć grupę zasobów przy użyciu interfejsu wiersza polecenia platformy Azure, użyj następującego polecenia:

az group delete --name $RESOURCE_GROUP

Następne kroki