Konfigurieren eines Application Gateway-Listeners für die Verschlüsselung

Abgeschlossen

Sie haben die SSL-Verschlüsselung für die Verbindung zwischen Azure Application Gateway und den Servern im Back-End-Pool konfiguriert. Für das Versandportal benötigen Sie vollständige End-to-End-Verschlüsselung. Für diese Verschlüsselung müssen Sie auch die Nachrichten verschlüsseln, die der Client an Application Gateway sendet.

Erstellen eines Front-End-Ports

Application Gateway empfängt Anforderungen über mindestens einen Port. Wenn Sie per HTTPS mit dem Gateway kommunizieren, sollten Sie einen SSL-Port konfigurieren. Normalerweise nutzt HTTPS den Port 443. Verwenden Sie den Befehl az network application-gateway frontend-port create, um einen neuen Front-End-Port zu erstellen. Im folgenden Beispiel wird veranschaulicht, wie ein Front-End-Port für den Port 443 erstellt wird:

az network application-gateway frontend-port create \
    --resource-group $rgName \
    --gateway-name gw-shipping  \
    --name my-https-port \
    --port 443

Konfigurieren des Listeners

Ein Listener wartet auf Datenverkehr, der über einen bestimmten Front-End-Port beim Gateway eingeht. Dieser Datenverkehr wird dann an einen Server im Back-End-Pool weitergeleitet. Wenn der Front-End-Port die SSL-Verschlüsselung verwendet, müssen Sie das Zertifikat zum Entschlüsseln der eingehenden Nachrichten angeben. Das Zertifikat enthält den privaten Schlüssel.

Sie können das Zertifikat mithilfe des Befehls az network application-gateway ssl-cert create hinzufügen. Die Zertifikatsdatei sollte das PFX-Format aufweisen. Da diese Datei den privaten Schlüssel enthält, wird sie wahrscheinlich auch mit einem Kennwort geschützt. Sie geben das Kennwort wie im folgenden Beispiel gezeigt mit dem Argument cert-password an.

az network application-gateway ssl-cert create \
   --resource-group $rgName \
   --gateway-name gw-shipping \
   --name shipping-ssl.crt \
   --cert-file shippingportal/server-config/shipping-ssl.pfx \
   --cert-password <password for certificate file>

Sie können dann den Listener erstellen, der Anforderungen über den Front-End-Port empfängt und mithilfe dieses Zertifikats entschlüsselt. Verwenden Sie den Befehl az network application-gateway http-listener create.

az network application-gateway http-listener create \
    --resource-group $rgName \
    --gateway-name gw-shipping \
    --name http-listener \
    --frontend-port my-https-port \
    --ssl-cert shipping-ssl.crt

Definieren einer Regel zum Senden von HTTPS-Anforderungen an die Server

Der letzte Schritt besteht darin, eine Regel zu erstellen, die die über den Listener empfangenen Nachrichten an die Server im Back-End-Pool weiterleitet. Die vom Front-End-Port empfangenen Nachrichten werden über das SSL-Zertifikat entschlüsselt, das für den Listener festgelegt wurde. Sie müssen diese Nachrichten mithilfe des clientseitigen Zertifikats für die Server im Back-End-Pool erneut verschlüsseln. Diese Informationen definieren Sie in der Regel.

Im folgenden Beispiel wird veranschaulicht, wie der Befehl az network application-gateway rule create zum Erstellen einer Regel verwendet wird, die einen Listener mit einem Back-End-Pool verknüpft. Mit dem Parameter --http-settings werden die HTTP-Einstellungen festgelegt, die auf das clientseitige Zertifikat für die Server verweisen. Diese Einstellungen haben Sie in der vorherigen Lerneinheit erstellt.

az network application-gateway rule create \
    --resource-group $rgName \
    --gateway-name gw-shipping \
    --name app-gw-rule \
    --address-pool ap-backend \
    --http-listener http-listener \
    --http-settings https-settings \
    --rule-type Basic
    --priority 101

Sie sollten nun über eine vollständige End-to-End-Verschlüsselung für Nachrichten verfügen, die Application Gateway durchlaufen. Clients verwenden das SSL-Zertifikat für Application Gateway zum Senden von Nachrichten. Application Gateway entschlüsselt diese Nachrichten mithilfe dieses SSL-Zertifikats. Anschließend verschlüsselt der Dienst die Nachrichten mithilfe des Zertifikats für die Server im Back-End-Pool erneut.