Freigeben über


Behandlung von Fehlern der gegenseitigen Authentifizierung im Anwendungsgateway

Zusammenfassung

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 Root-CA-Zertifikat
  • Hochladen einer Zertifikatkette mit mehreren Root-CA-Zertifikaten
  • Hochladen einer Zertifikatkette, die nur ein Blattzertifikat ohne Zertifizierungsstellenzertifikat enthält
  • Fehler bei der Zertifikatüberprüfung aufgrund eines Aussteller Distinguished Name (DN) Fehlers.
  • 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 hochgeladene Clientzertifikat ist ein selbstsigniertes Zertifikat und führt zu dem Fehlercode 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. Detaillierte Anweisungen zum Generieren von selbstsignierten Clientzertifikaten finden Sie unter dem Exportieren einer vertrauenswürdigen Clientzertifizierungsstellen-Zertifikatkette zur Verwendung bei der Clientauthentifizierung.

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 ist auf NONE eingestellt.

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:

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

Weitere Informationen zur Verwendung des OpenSSL-Befehls 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 Anwendungsgateway hochgeladene Zertifikatkette der vertrauenswürdigen Clientzertifizierungsstelle vollständig ist.
  • Lokales Ausstellerzertifikat kann nicht abgerufen werden: Ähnlich wie beim Problem, das Ausstellerzertifikat nicht abrufen zu können, konnte das Ausstellerzertifikat des Clientzertifikats 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 Anwendungsgateway 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 auf dem Anwendungsgateway hochgeladene Zertifikatkette der vertrauenswürdigen Clientzertifizierungsstelle 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 darüber, wie das Application Gateway das ClientCertificateIssuerDN extrahiert, finden Sie unter "Application Gateway - Extrahieren des 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 darüber, wie man die gesamte Zertifikatkette der vertrauenswürdigen Clientzertifizierungsstelle extrahiert, um sie im Application Gateway hochzuladen, finden Sie unter dem Thema "Extrahieren von Zertifikatketten der vertrauenswürdigen Clientzertifizierungsstelle".

Problembehandlung bei Fehlercodes

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 den Zertifikatinhalt zwischen den und Trennzeichen 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 vorhanden ist, wobei jedes Zertifikat ordnungsgemäß durch 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: ApplicationGatewayVertrauteClientzertifikatEnthältKeinCAZertifikat

Ursache

Das hochgeladene Zertifikat enthielt nur ein Blattzertifikat ohne Zertifizierungsstellenzertifikat. Das Hochladen einer Zertifikatkette mit Zertifizierungsstellenzertifikaten und einem Blattzertifikat ist akzeptabel, da das Blattzertifikat nur ignoriert wird, aber ein Zertifikat muss über eine Zertifizierungsstelle verfügen.

Lösung

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

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

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: ApplicationGatewayNurEineRootCAErlaubtImVertrauenswürdigenClientZertifikat

Ursache

Die Zertifikatkette enthielt mehrere Stammzertifikate oder keine Stammzertifikate.

Lösung

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