Delen via


Toepassingen beschikbaar maken op internet met TLS-beëindiging bij Application Gateway

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

In dit artikel wordt uitgelegd hoe u toepassingen beschikbaar maakt op internet met Application Gateway.

Wanneer een Azure Spring Apps-service-exemplaar wordt geïmplementeerd in uw virtuele netwerk (VNET), zijn toepassingen op het service-exemplaar alleen toegankelijk in het privénetwerk. Als u de toepassingen toegankelijk wilt maken op internet, moet u integreren met Azure-toepassing Gateway. Het inkomende versleutelde verkeer kan worden ontsleuteld bij de toepassingsgateway of het kan worden doorgegeven aan Azure Spring Apps versleuteld om end-to-end TLS/SSL te bereiken. Voor ontwikkel- en testdoeleinden kunt u beginnen met SSL-beëindiging bij de toepassingsgateway, die in deze handleiding wordt behandeld. Voor productie raden we end-to-end TLS/SSL aan met een privécertificaat, zoals beschreven in Toepassingen beschikbaar maken met end-to-end TLS in een virtueel netwerk.

Vereisten

Application Gateway configureren voor Azure Spring Apps

Het is raadzaam dat de domeinnaam, zoals wordt gezien door de browser, dezelfde is als de hostnaam die Application Gateway gebruikt om verkeer naar de Back-end van Azure Spring Apps te leiden. Deze aanbeveling biedt de beste ervaring bij het gebruik van Application Gateway om toepassingen beschikbaar te maken die worden gehost in Azure Spring Apps en zich in een virtueel netwerk bevinden. Als het domein dat wordt weergegeven door Application Gateway verschilt van het domein dat wordt geaccepteerd door Azure Spring Apps, kunnen cookies en gegenereerde omleidings-URL's (bijvoorbeeld) worden verbroken. Zie Behoud van hostnamen voor meer informatie.

Als u Application Gateway wilt configureren voor Azure Spring Apps in een privé-VNET, gebruikt u de volgende stappen.

  1. Volg de instructies in Azure Spring Apps implementeren in een virtueel netwerk.
  2. Volg de instructies in Access uw toepassing in een particulier netwerk.
  3. Verwerf een certificaat voor uw keuzedomein en sla dit op in Key Vault. Zie Zelfstudie: Een certificaat importeren in Azure Key Vault voor meer informatie.
  4. Configureer een aangepast domein en het bijbehorende certificaat van Key Vault op een app die is geïmplementeerd in Azure Spring Apps. Zie Zelfstudie: Een bestaand aangepast domein toewijzen aan Azure Spring Apps voor meer informatie.
  5. Implementeer Application Gateway in een virtueel netwerk dat is geconfigureerd volgens de volgende lijst:
    • Gebruik Azure Spring Apps in de back-endpool waarnaar wordt verwezen door het domeinachtervoegsel met private.azuremicroservices.io.
    • Neem een HTTPS-listener op met hetzelfde certificaat uit Key Vault.
    • Configureer het virtuele netwerk met HTTP-instellingen die gebruikmaken van de aangepaste domeinnaam die is geconfigureerd in Azure Spring Apps in plaats van het domeinachtervoegsel met private.azuremicroservices.io.
  6. Configureer uw openbare DNS zodat deze verwijst naar de toepassingsgateway.

Variabelen definiëren

Gebruik vervolgens de volgende opdrachten om variabelen te definiëren voor de resourcegroep en het virtuele netwerk dat u hebt gemaakt zoals beschreven in Azure Spring Apps implementeren in een virtueel netwerk. Vervang de <tijdelijke aanduidingen ...> door echte waarden op basis van uw werkelijke omgeving. Wanneer u definieert SPRING_APP_PRIVATE_FQDN, verwijdert u deze https:// uit de 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'

Aanmelden bij Azure

Gebruik de volgende opdracht om u aan te melden bij de Azure CLI en uw actieve abonnement te kiezen.

az login
az account set --subscription $SUBSCRIPTION

De naam van het openbare domein configureren in Azure Spring Apps

Verkeer voert de toepassing in die is geïmplementeerd in Azure Spring Apps met behulp van de openbare domeinnaam. Als u uw toepassing wilt configureren om naar deze hostnaam te luisteren via HTTP, gebruikt u de volgende opdrachten om een aangepast domein toe te voegen aan uw app, waarbij u de <tijdelijke aanduidingen voor ...> vervangt door echte waarden:

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

Netwerkbronnen maken

De toepassingsgateway die moet worden gemaakt, wordt gekoppeld aan hetzelfde virtuele netwerk als het Azure Spring Apps-service-exemplaar. Maak eerst een nieuw subnet voor de toepassingsgateway in het virtuele netwerk en maak vervolgens een openbaar IP-adres als de front-end van de toepassingsgateway, zoals wordt weergegeven in het volgende voorbeeld.

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

Een beheerde identiteit maken voor de toepassingsgateway

Uw toepassingsgateway moet toegang hebben tot Key Vault om het certificaat te kunnen lezen. Hiervoor gebruikt de toepassingsgateway een door de gebruiker toegewezen beheerde identiteit. Zie Wat zijn beheerde identiteiten voor Azure-resources voor meer informatie? Maak de beheerde identiteit met behulp van de volgende opdracht, waarbij u de <tijdelijke aanduiding ...> vervangt:

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

Gebruik vervolgens de volgende opdracht om de objectId beheerde identiteit op te halen. Deze waarde wordt later gebruikt om toegang te krijgen tot het certificaat in 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)

Beleid instellen voor Key Vault

Configureer Key Vault met behulp van de volgende opdracht, zodat de beheerde identiteit voor de toepassingsgateway toegang heeft tot het certificaat dat is opgeslagen in 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

Een toepassingsgateway maken

Maak een toepassingsgateway met behulp van az network application-gateway create en geef de privé FQDN (Fully Qualified Domain Name) van uw toepassing op als servers in de back-endpool. Zorg ervoor dat u de door de gebruiker toegewezen beheerde identiteit gebruikt en verwijst naar het certificaat in Key Vault met behulp van de geheime id van het certificaat.

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

Het kan tot 30 minuten duren om de toepassingsgateway te maken in Azure.

HTTP-instellingen bijwerken om de domeinnaam naar de back-end te gebruiken

Werk de HTTP-instellingen bij om de openbare domeinnaam te gebruiken als hostnaam in plaats van het domeinachtervoegsel waarmee .private.azuremicroservices.io verkeer naar Azure Spring Apps moet worden verzonden.

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

De implementatie van de toepassingsgateway controleren

Nadat deze is gemaakt, controleert u de back-endstatus met behulp van de volgende opdracht. Met de uitvoer van deze opdracht kunt u bepalen of de toepassingsgateway uw toepassing bereikt via de eigen FQDN (Fully Qualified Domain Name).

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

De uitvoer geeft de status van de back-endpool aan, zoals wordt weergegeven in het volgende voorbeeld:

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

DNS configureren en toegang krijgen tot de toepassing

Configureer de openbare DNS zodat deze verwijst naar de toepassingsgateway met behulp van een CNAME- of A-record. U vindt het openbare adres voor de toepassingsgateway met behulp van de volgende opdracht:

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

U hebt nu toegang tot de toepassing met behulp van de openbare domeinnaam.

Resources opschonen

Als u van plan bent om door te gaan met volgende artikelen, wilt u deze resources mogelijk behouden. Als u de resourcegroep niet meer nodig hebt, verwijdert u deze. Hierdoor worden ook de resources in de resourcegroep verwijderd. Gebruik de volgende opdracht om de resourcegroep te verwijderen met behulp van Azure CLI:

az group delete --name $RESOURCE_GROUP

Volgende stappen