Freigeben über


Fehlerbehebung bei der gegenseitigen Authentifizierung im Anwendungs-Gateway

Erfahren Sie, wie Sie Probleme mit der gegenseitigen Authentifizierung behandeln, wenn Sie das Anwendungsgateway verwenden.

Überblick

Bei der gegenseitigen Authentifizierung auf einem Anwendungsgateway können während der Clientzertifikatüberprüfung nach der Konfiguration verschiedene Fehler auftreten. Häufige Ursachen für diese Fehler sind:

  • Hochladen eines Zertifikats oder einer Zertifikatkette ohne ein Stammzertifizierungsstellenzertifikat
  • Hochladen einer Zertifikatkette mit mehreren Stamm-CA-Zertifikaten
  • Laden Sie eine Zertifikatkette hoch, die nur ein Blattzertifikat ohne ein Zertifizierungsstellenzertifikat enthält
  • Fehler bei der Zertifikatüberprüfung aufgrund einer Nichtübereinstimmung des Aussteller-Distinguished Names (DN)
  • Fehlende oder falsche EKU-Attribute (Extended Key Usage)

In diesem Handbuch werden verschiedene Szenarien behandelt, die auftreten können, und es werden schritte zur Problembehandlung für die einzelnen Szenarien bereitgestellt. Wir behandeln auch bestimmte Fehlercodes und erläutern ihre wahrscheinlichen Ursachen in Szenarien der gegenseitigen Authentifizierung. Alle Clientzertifikatauthentifizierungsfehler führen dazu, dass ein HTTP 400 -Statuscode (Ungültige Anforderung) an den Client zurückgegeben wird.

Problembehandlung bei Szenarios – Konfigurationsprobleme

Die folgenden Szenarien behandeln häufige Konfigurationsprobleme, die beim Einrichten der gegenseitigen Authentifizierung auftreten können. Jedes Szenario enthält die Problembeschreibung und die empfohlene Lösung.

Selbstsigniertes Zertifikat

Das Problem

Das von Ihnen hochgeladene Clientzertifikat ist ein selbstsigniertes Zertifikat, das zum folgenden Fehlercode führt: „ApplicationGatewayTrustedClientCertificateDoesNotContainAnyCACertificate“.

Lösung

Stellen Sie sicher, dass das selbstsignierte Zertifikat, das Sie verwenden, die BasicConstraintsOid-Erweiterung mit dem Wert "2.5.29.19" und dem auf TRUE festgelegten Zertifizierungsstellen-Flag enthält. Diese Erweiterung gibt an, dass der Antragsteller des Zertifikats als Zertifizierungsstelle fungieren kann.

Um die Zertifikateigenschaften zu überprüfen, können Sie den folgenden OpenSSL-Befehl verwenden:

openssl x509 -in certificate.pem -text -noout

Suchen Sie in der Ausgabe nach dem Abschnitt "Basic Constraints", der "CA:TRUE" für ein gültiges CA-Zertifikat anzeigen soll. Ausführliche Anleitungen zum Generieren von selbstsignierten Clientzertifikaten finden Sie unter vertrauenswürdigen Clientzertifikaten.

Problembehandlung bei Szenarien – Konnektivitätsprobleme

Möglicherweise können Sie die gegenseitige Authentifizierung ohne Probleme konfigurieren, aber beim Senden von Anforderungen an Ihr Anwendungsgateway treten Probleme auf. Im folgenden Abschnitt befassen wir uns mit einigen häufig auftretenden Problemen und Lösungen. Sie finden die sslClientVerify-Eigenschaft in den Zugriffsprotokollen Ihres Anwendungsgateways.

„SslClientVerify“ auf „NONE“ festgelegt

Das Problem

Die sslClientVerify-Eigenschaft wird in Ihren Zugriffsprotokollen als "NONE" angezeigt, was angibt, dass während des TLS-Handshake kein Clientzertifikat angezeigt wurde.

Lösung

Dieses Problem tritt auf, wenn der Client kein Clientzertifikat in der TLS-Handshake-Anforderung an das Anwendungsgateway sendet. Dieses Problem kann auftreten, wenn:

  • Die Clientanwendung ist nicht für die Verwendung von Clientzertifikaten konfiguriert.
  • Das Clientzertifikat ist nicht ordnungsgemäß installiert oder zugänglich.
  • Der Client vertraut dem Serverzertifikat des Anwendungsgateways nicht

Um zu überprüfen, ob die Clientauthentifizierung auf dem Anwendungsgateway ordnungsgemäß konfiguriert ist, verwenden Sie den folgenden OpenSSL-Befehl:

openssl s_client -connect <hostname:port> -cert <path-to-certificate> -key <client-private-key-file> 

Ort:

  • -cert Gibt den Pfad zum Clientzertifikat an (Blattzertifikat)
  • -key Gibt den Pfad zur Datei des privaten Clientschlüssels an.
  • -verify_return_error stellt sicher, dass der Befehl fehlschlägt, wenn die Zertifikatüberprüfung fehlschlägt.

Weitere Informationen zur Verwendung des OpenSSL-Befehls s_client finden Sie auf der Manuellen Seite "OpenSSL".

SSLClientVerify ist FEHLGESCHLAGEN.

Das Problem

Die sslClientVerify-Eigenschaft wird in Ihren Zugriffsprotokollen als "FAILED" angezeigt, was angibt, dass die Clientzertifikatüberprüfung während des TLS-Handshake fehlgeschlagen ist.

Lösung

Es gibt viele mögliche Ursachen für Fehler in den Zugriffsprotokollen. Hier ist eine Liste der häufigsten Ursachen für Fehler:

  • Ausstellerzertifikat kann nicht abgerufen werden: Das Ausstellerzertifikat des Clientzertifikats konnte nicht gefunden werden. Dieses Problem bedeutet normalerweise, dass die Zertifikatkette der vertrauenswürdigen Clientzertifizierungsstelle im Anwendungsgateway nicht abgeschlossen ist. Überprüfen Sie, ob die auf dem Application Gateway hochgeladene Zertifikatkette der vertrauenswürdigen Client-Zertifizierungsstelle vollständig ist.
  • Lokales Ausstellerzertifikat konnte nicht abgerufen werden: Dies ähnelt dem obigen Fall, in dem das Ausstellerzertifikat nicht abgerufen werden konnte und das Ausstellerzertifikat des Clientzertifikats nicht gefunden wurde. Dieses Problem bedeutet normalerweise, dass die Zertifikatkette der vertrauenswürdigen Clientzertifizierungsstelle im Anwendungsgateway nicht abgeschlossen ist. Überprüfen Sie, ob die im Application Gateway hochgeladene Zertifikatkette der vertrauenswürdigen Clientzertifizierungsstelle vollständig ist.
  • Das erste Zertifikat kann nicht überprüft werden: Das Clientzertifikat kann nicht überprüft werden. Dieser Fehler tritt insbesondere auf, wenn der Client nur das Blattzertifikat darstellt, dessen Aussteller nicht vertrauenswürdig ist. Überprüfen Sie, ob die von der vertrauenswürdigen Client-Zertifizierungsstelle hochgeladene Zertifikatskette auf dem Anwendungsgateway vollständig ist.
  • Der Clientzertifikatherausgeber kann nicht überprüft werden: Dieser Fehler tritt auf, wenn die Konfiguration VerifyClientCertIssuerDN auf "true" festgelegt ist. Dieser Fehler tritt in der Regel auf, wenn der Aussteller-DN des Clientzertifikats nicht mit dem ClientCertificateIssuerDN übereinstimmt, der aus der vom Kunden hochgeladenen Zertifikatkette der vertrauenswürdigen Clientzertifizierungsstelle extrahiert wurde. Weitere Informationen dazu, wie das Anwendungsgateway den ClientCertificateIssuerDN extrahiert, finden Sie unter Application Gateway extracting issuer DN. Stellen Sie als bewährte Methode sicher, dass Sie eine Zertifikatkette pro Datei in das Anwendungsgateway hochladen.
  • Nicht unterstützter Zertifikatzweck: Stellen Sie sicher, dass das Clientzertifikat die erweiterte Schlüsselverwendung für die Clientauthentifizierung bestimmt (1.3.6.1.5.5.7.3.2). Weitere Details zur Definition der erweiterten Schlüsselverwendung und der Objektbezeichner für die Clientauthentifizierung finden Sie in RFC 3280 und RFC 5280.

Weitere Informationen zum Extrahieren der gesamten vertrauenswürdigen ZS-Clientzertifikatkette für den Upload auf die Application Gateway-Instanz finden Sie unter Exportieren einer vertrauenswürdigen ZS-Clientzertifikatkette für die Clientauthentifizierung.

Fehlercode-Problembehandlung

Die folgenden Fehlercodes werden beim Konfigurieren der gegenseitigen Authentifizierung angezeigt. Jeder Fehler enthält die wahrscheinliche Ursache und empfohlene Lösung.

Fehlercode: ApplicationGatewayTrustedClientCertificateMustSpecifyData

Ursache

Die hochgeladene Zertifikatdatei enthält keine Zertifikatdaten oder enthält eine leere Datei ohne gültigen Zertifikatinhalt.

Lösung

Stellen Sie sicher, dass die Zertifikatdatei gültige Zertifikatdaten im richtigen Format (PEM) enthält. Verwenden Sie einen Text-Editor, um zu bestätigen, dass die Datei zwischen den Trennzeichen -----BEGIN CERTIFICATE----- und -----END CERTIFICATE----- Zertifikatinhalt enthält.

Fehlercode: ApplicationGatewayTrustedClientCertificateMustNotHavePrivateKey

Ursache

Es gibt einen privaten Schlüssel in der Zertifikatkette. Es sollte kein privater Schlüssel in der Zertifikatkette vorhanden sein.

Lösung

Überprüfen Sie die zertifikatskette, die hochgeladen wurde, und entfernen Sie den privaten Schlüssel, der Teil der Kette war. Laden Sie die Kette ohne den privaten Schlüssel erneut.

Fehlercode: ApplicationGatewayTrustedClientCertificateInvalidData

Ursache

Für diesen Fehler gibt es zwei mögliche Ursachen:

  • Analysefehler: Die Zertifikatkette weist nicht das richtige Format auf. Das Anwendungsgateway erwartet Zertifikatketten im PEM-Format mit ordnungsgemäß getrennten einzelnen Zertifikaten.
  • Leerer Inhalt: Die hochgeladene Datei enthält nur Trennzeichen ohne tatsächliche Zertifikatdaten dazwischen.

Lösung

Wenden Sie basierend auf der spezifischen Ursache eine der folgenden Lösungen an:

  • Formatproblem: Stellen Sie sicher, dass die Zertifikatkette im PEM-Format ist, wobei jedes Zertifikat ordnungsgemäß durch -----BEGIN CERTIFICATE----- und -----END CERTIFICATE----- Markierungen getrennt ist. Jedes Zertifikat sollte in separaten Zeilen innerhalb dieser Trennzeichen stehen.
  • Fehlende Daten: Stellen Sie sicher, dass die Zertifikatdatei tatsächliche Zertifikatdaten zwischen den Trennzeichen enthält, nicht nur leere Trennzeichen.

Fehlercode: ApplicationGatewayTrustedClientCertificate enthält kein CA-Zertifikat.

Ursache

Das hochgeladene Zertifikat hat nur ein untergeordnetes Zertifikat ohne Zertifikat der Zertifizierungsstelle enthalten. Das Hochladen einer Zertifikatkette mit Zertifizierungsstellenzertifikaten und einem untergeordneten Zertifikat ist akzeptabel, da das untergeordnete Zertifikat einfach ignoriert wird. Ein Zertifikat muss aber über eine Zertifizierungsstelle verfügen.

Lösung

Stellen Sie sicher, dass die Zertifikatkette mindestens ein CA-Zertifikat mit der korrekten BasicConstraintsOid-Erweiterung (OID: 2.5.29.19) enthält, wobei das CA-Flag auf TRUE gesetzt ist. Diese Erweiterung gibt an, dass der Antragsteller des Zertifikats als Zertifizierungsstelle fungieren kann.

Um den Zertifizierungsstellenstatus eines Zertifikats zu überprüfen, verwenden Sie Folgendes:

openssl x509 -in certificate.pem -text -noout | grep -A 2 "Basic Constraints"

Die Ausgabe sollte "CA:TRUE" für gültige CA-Zertifikate anzeigen.

Fehlercode: ApplicationGatewayOnlyOneRootCAAllowedInTrustedClientCertificate

Ursache

Die Zertifikatkette hat mehrere Zertifikate der Stammzertifizierungsstelle oder keine Zertifikate der Stammzertifizierungsstelle enthalten.

Lösung

Hochgeladene Zertifikate müssen genau ein Zertifikat der Stammzertifizierungsstelle (und bei Bedarf viele Zertifikate der Zwischenzertifizierungsstelle) enthalten.