Freigeben über


Generieren eines selbstsignierten Azure Application Gateway-Zertifikats mit einer benutzerdefinierten Stammzertifizierungsstelle

Die Anwendungsgateway-SKU v2 führt die Verwendung vertrauenswürdiger Stammzertifikate ein, um TLS-Verbindungen mit den Back-End-Servern zuzulassen. Diese Bereitstellung entfernt die Verwendung von Authentifizierungszertifikaten (einzelne Leaf-Zertifikate), die in der v1-SKU erforderlich waren. Das Stammzertifikat ist ein Base-64-codiertes X.509 (.CER) Format-Stammzertifikat vom Backend-Zertifikatserver. Es identifiziert die Stammzertifizierungsstelle, die das Serverzertifikat ausgestellt hat, und das Serverzertifikat wird dann für die TLS/SSL-Kommunikation verwendet.

Das Anwendungsgateway vertraut dem Zertifikat Ihrer Website standardmäßig, wenn es von einer bekannten Zertifizierungsstelle signiert ist (z. B. GoDaddy oder DigiCert). In diesem Fall müssen Sie das Stammzertifikat nicht explizit hochladen. Weitere Informationen finden Sie unter Übersicht über TLS-Beendigung und End-to-End TLS mit Anwendungsgateway. Wenn Sie jedoch über eine Entwicklungs-/Testumgebung verfügen und kein überprüftes Zertifizierungsstellenzertifikat erwerben möchten, können Sie ihre eigene benutzerdefinierte Stammzertifizierungsstelle und ein blattbasiertes Zertifikat erstellen, das von dieser Stammzertifizierungsstelle signiert ist.

Hinweis

Selbst generierte Zertifikate sind standardmäßig nicht vertrauenswürdig und können schwierig verwaltet werden. Außerdem kann es sein, dass für sie veraltete Hash- und Verschlüsselungssammlungen verwendet werden, die möglicherweise nicht stark sind. Um eine bessere Sicherheit zu erreichen, sollten Sie ein Zertifikat kaufen, das von einer bekannten Zertifizierungsstelle signiert ist.

Sie können die folgenden Optionen verwenden, um Ihr privates Zertifikat für Back-End-TLS-Verbindungen zu generieren.

  1. Verwenden Sie das Tool zum Erstellen eines privaten Zertifikats mit nur einem Klick. Mithilfe des von Ihnen bereitgestellten Domänennamens (gemeinsamer Name) führt dieses Tool die gleichen Schritte wie in diesem Artikel beschrieben aus, um Stamm- und Serverzertifikate zu generieren. Mit den generierten Zertifikatdateien können Sie die Stammzertifikatsdatei (.CER) sofort in die Back-End-Einstellungen Ihres Gateways hochladen und die entsprechende Zertifikatkette (.PFX) auf den Back-End-Server übertragen. Das Kennwort für die PFX-Datei wird auch in der heruntergeladenen ZIP-Datei angegeben.

  2. Verwenden Sie OpenSSL-Befehle, um Zertifikate entsprechend Ihren Anforderungen anzupassen und zu generieren. Folgen Sie den Anweisungen in diesem Artikel weiterhin, wenn Sie dies ganz alleine tun möchten.

In diesem Artikel erfahren Sie, wie man:

  • Erstellen Einer eigenen benutzerdefinierten Zertifizierungsstelle
  • Erstellen eines selbstsignierten Zertifikats, das von Ihrer benutzerdefinierten Zertifizierungsstelle signiert ist
  • Hochladen eines selbstsignierten Stammzertifikats in ein Anwendungsgateway zum Authentifizieren des Back-End-Servers

Voraussetzungen

Erstellen eines Stammzertifikats der Zertifizierungsstelle

Erstellen Sie Ihr Stammzertifikat der Zertifizierungsstelle mit OpenSSL.

Erstellen des Stammschlüssels

  1. Melden Sie sich bei Ihrem Computer an, auf dem OpenSSL installiert ist, und führen Sie den folgenden Befehl aus. Dadurch wird ein verschlüsselter Schlüssel erstellt.

    openssl ecparam -out contoso.key -name prime256v1 -genkey
    

Erstellen eines Stammzertifikats und Selbst signieren

  1. Verwenden Sie den folgenden Befehl, um die Zertifikatsignaturanforderung (Certificate Signing Request, CSR) zu generieren.

    openssl req -new -sha256 -key contoso.key -out contoso.csr
    
  2. Geben Sie bei Aufforderung das Kennwort für den Stammschlüssel und die Organisationsinformationen für die benutzerdefinierte CA ein, z. B. Land/Region, Bundesland, Organisation, Organisationseinheit und vollständig qualifizierter Domainname (dies ist die Domäne des Ausstellers).

    Stammzertifikat erstellen

  3. Verwenden Sie den folgenden Befehl, um das Stammzertifikat zu generieren.

    openssl x509 -req -sha256 -days 365 -in contoso.csr -signkey contoso.key -out contoso.crt
    

    Die vorherigen Befehle erstellen das Stammzertifikat. Sie verwenden dies, um Ihr Serverzertifikat zu signieren.

Erstellen eines Serverzertifikats

Als Nächstes erstellen Sie ein Serverzertifikat mit OpenSSL.

Erstellen des Zertifikatschlüssels

Verwenden Sie den folgenden Befehl, um den Schlüssel für das Serverzertifikat zu generieren.

openssl ecparam -out fabrikam.key -name prime256v1 -genkey

CSR (Zertifikatsignierungsanforderung) erstellen

Die CSR ist ein öffentlicher Schlüssel, der bei der Anforderung eines Zertifikats an eine Zertifizierungsstelle übergeben wird. Die Zertifizierungsstelle gibt das Zertifikat für diese bestimmte Anforderung aus.

Hinweis

Der CN (Gemeinsamer Name) für das Serverzertifikat muss sich von der Domäne des Ausstellers unterscheiden. Zum Beispiel ist in diesem Fall der CN für den Aussteller www.contoso.com, und das CN des Serverzertifikats ist www.fabrikam.com.

  1. Verwenden Sie den folgenden Befehl, um die CSR zu generieren:

    openssl req -new -sha256 -key fabrikam.key -out fabrikam.csr
    
  2. Wenn Sie dazu aufgefordert werden, geben Sie das Kennwort für den Stammschlüssel und die Organisationsinformationen für die benutzerdefinierte Zertifizierungsstelle ein: Land/Region, Bundesland, Organisation, Organisationseinheit sowie den vollqualifizierten Domänennamen. Dies ist die Domäne der Website und sollte sich von dem Aussteller unterscheiden.

    Serverzertifikat

Generieren Sie das Zertifikat mit der CSR und dem Schlüssel, und signieren Sie es mit dem Stammschlüssel der Zertifizierungsstelle.

  1. Verwenden Sie den folgenden Befehl, um das Zertifikat zu erstellen:

    openssl x509 -req -in fabrikam.csr -CA  contoso.crt -CAkey contoso.key -CAcreateserial -out fabrikam.crt -days 365 -sha256
    

Überprüfen des neu erstellten Zertifikats

  1. Verwenden Sie den folgenden Befehl, um die Ausgabe der CRT-Datei zu drucken und deren Inhalt zu überprüfen:

    openssl x509 -in fabrikam.crt -text -noout
    

    Zertifikatüberprüfung

  2. Überprüfen Sie die Dateien in Ihrem Verzeichnis, und stellen Sie sicher, dass Sie über die folgenden Dateien verfügen:

    • contoso.crt
    • contoso.key
    • fabrikam.crt
    • fabrikam.key

Konfigurieren des Zertifikats in den TLS-Einstellungen Ihres Webservers

Konfigurieren Sie in Ihrem Webserver TLS mithilfe der Dateien fabrikam.crt und fabrikam.key. Wenn Ihr Webserver keine zwei Dateien aufnehmen kann, können Sie sie mit openSSL-Befehlen zu einer einzelnen PEM- oder PFX-Datei kombinieren.

IIS

Anweisungen zum Importieren und Hochladen von Zertifikaten als Serverzertifikat auf IIS finden Sie unter HOW TO: Install Imported Certificates on a Web Server in Windows Server 2003.

Anweisungen zur TLS-Bindung finden Sie unter Einrichten von SSL unter IIS 7.

Apache

Die folgende Konfiguration ist ein Beispiel für einen virtuellen Host, der für SSL in Apache konfiguriert ist:

<VirtualHost www.fabrikam:443>
      DocumentRoot /var/www/fabrikam
      ServerName www.fabrikam.com
      SSLEngine on
      SSLCertificateFile /home/user/fabrikam.crt
      SSLCertificateKeyFile /home/user/fabrikam.key
</VirtualHost>

NGINX

Die folgende Konfiguration ist ein Beispiel für einen NGINX-Serverblock mit TLS-Konfiguration:

NGINX mit TLS

Zugreifen auf den Server, um die Konfiguration zu überprüfen

  1. Fügen Sie das Stammzertifikat zum vertrauenswürdigen Stammspeicher Ihres Computers hinzu. Stellen Sie beim Zugriff auf die Website sicher, dass die gesamte Zertifikatkette im Browser angezeigt wird.

    Vertrauenswürdige Stammzertifikate

    Hinweis

    Es wird angenommen, dass DNS so konfiguriert wurde, dass der Webservername (in diesem Beispiel www.fabrikam.com) auf die IP-Adresse Ihres Webservers verweist. Wenn nicht, können Sie die Hostdatei bearbeiten, um den Namen aufzulösen.

  2. Navigieren Sie zu Ihrer Website, und klicken Sie auf das Sperrsymbol im Adressfeld Ihres Browsers, um die Website- und Zertifikatinformationen zu überprüfen.

Überprüfen der Konfiguration mit OpenSSL

Sie können auch OpenSSL verwenden, um das Zertifikat zu überprüfen.

openssl s_client -connect localhost:443 -servername www.fabrikam.com -showcerts

OpenSSL-Zertifikatüberprüfung

Hochladen des Stammzertifikats in die HTTP-Einstellungen des Anwendungsgateways

Um das Zertifikat in das Anwendungsgateway hochzuladen, müssen Sie das CRT-Zertifikat in ein .cer Base-64-codiertes Format exportieren. Da CRT bereits den öffentlichen Schlüssel im base64-codierten Format enthält, benennen Sie einfach die Dateierweiterung von CRT in .cer um.

Azure-Portal

Um das vertrauenswürdige Stammzertifikat aus dem Portal hochzuladen, wählen Sie die Back-End-Einstellungen und https im Back-End-Protokoll aus.

Screenshot des Hinzufügens eines Zertifikats mithilfe des Portals.

Azure PowerShell

Sie können auch Azure CLI oder Azure PowerShell verwenden, um das Stammzertifikat hochzuladen. Der folgende Code ist ein Azure PowerShell-Beispiel.

Hinweis

Im folgenden Beispiel wird dem Anwendungsgateway ein vertrauenswürdiges Stammzertifikat hinzugefügt, eine neue HTTP-Einstellung erstellt und eine neue Regel hinzugefügt, vorausgesetzt, der Back-End-Pool und der Listener sind bereits vorhanden.

## Add the trusted root certificate to the Application Gateway

$gw=Get-AzApplicationGateway -Name appgwv2 -ResourceGroupName rgOne

Add-AzApplicationGatewayTrustedRootCertificate `
   -ApplicationGateway $gw `
   -Name CustomCARoot `
   -CertificateFile "C:\Users\surmb\Downloads\contoso.cer"

$trustedroot = Get-AzApplicationGatewayTrustedRootCertificate `
   -Name CustomCARoot `
   -ApplicationGateway $gw

## Get the listener, backend pool and probe

$listener = Get-AzApplicationGatewayHttpListener `
   -Name basichttps `
   -ApplicationGateway $gw

$bepool = Get-AzApplicationGatewayBackendAddressPool `
  -Name testbackendpool `
  -ApplicationGateway $gw

Add-AzApplicationGatewayProbeConfig `
  -ApplicationGateway $gw `
  -Name testprobe `
  -Protocol Https `
  -HostName "www.fabrikam.com" `
  -Path "/" `
  -Interval 15 `
  -Timeout 20 `
  -UnhealthyThreshold 3

$probe = Get-AzApplicationGatewayProbeConfig `
  -Name testprobe `
  -ApplicationGateway $gw

## Add the configuration to the HTTP Setting and don't forget to set the "hostname" field
## to the domain name of the server certificate as this will be set as the SNI header and
## will be used to verify the backend server's certificate. Note that TLS handshake will
## fail otherwise and might lead to backend servers being deemed as Unhealthy by the probes

Add-AzApplicationGatewayBackendHttpSettings `
  -ApplicationGateway $gw `
  -Name testbackend `
  -Port 443 `
  -Protocol Https `
  -Probe $probe `
  -TrustedRootCertificate $trustedroot `
  -CookieBasedAffinity Disabled `
  -RequestTimeout 20 `
  -HostName www.fabrikam.com

## Get the configuration and update the Application Gateway

$backendhttp = Get-AzApplicationGatewayBackendHttpSettings `
  -Name testbackend `
  -ApplicationGateway $gw

Add-AzApplicationGatewayRequestRoutingRule `
  -ApplicationGateway $gw `
  -Name testrule `
  -RuleType Basic `
  -BackendHttpSettings $backendhttp `
  -HttpListener $listener `
  -BackendAddressPool $bepool

Set-AzApplicationGateway -ApplicationGateway $gw

Überprüfen Sie den Backend-Zustand des Anwendungsgateways

  1. Klicken Sie auf die Back-End-Integrität-Ansicht Ihres Anwendungsgateways, um zu prüfen, ob der Test fehlerfrei ist.
  2. Sie sollten sehen, dass der Status für die HTTPS-Probe fehlerfrei ist.

HTTPS-Prüfpunkt

Nächste Schritte

Weitere Informationen zu SSL\TLS im Anwendungsgateway finden Sie in einer Übersicht über TLS-Termination und End-to-End-TLS mit dem Anwendungsgateway.