Udostępnij przez


Rozwiązywanie problemów z błędami wzajemnego uwierzytelniania w usłudze Application Gateway

Dowiedz się, jak rozwiązywać problemy z uwierzytelnianiem wzajemnym podczas korzystania z usługi Application Gateway.

Przegląd

W przypadku wzajemnego uwierzytelniania w usłudze Application Gateway różne błędy mogą wystąpić podczas weryfikacji certyfikatu klienta po skonfigurowaniu. Typowe przyczyny tych błędów to:

  • Prześlij certyfikat lub łańcuch certyfikatów bez certyfikatu głównego CA
  • Prześlij łańcuch certyfikatów z wieloma certyfikatami głównego urzędu certyfikacji
  • Prześlij łańcuch certyfikatów zawierający tylko certyfikat końcowy bez certyfikatu urzędu certyfikacji
  • Błędy weryfikacji certyfikatu spowodowane niezgodnością nazwy wyróżniającej wystawcy
  • Brakujące lub nieprawidłowe atrybuty rozszerzonego użycia klucza (EKU)

W tym przewodniku opisano różne scenariusze, które można napotkać, i przedstawiono kroki rozwiązywania problemów dla każdego z nich. Rozwiązaliśmy również konkretne kody błędów i wyjaśniliśmy ich prawdopodobne przyczyny w scenariuszach wzajemnego uwierzytelniania. Wszystkie błędy uwierzytelniania certyfikatu klienta powodują zwrócenie kodu stanu HTTP 400 (nieprawidłowe żądanie) do klienta.

Rozwiązywanie problemów ze scenariuszem — problemy z konfiguracją

Poniższe scenariusze dotyczą typowych problemów z konfiguracją, które mogą wystąpić podczas konfigurowania wzajemnego uwierzytelniania. Każdy scenariusz zawiera opis problemu i zalecane rozwiązanie.

Certyfikat z podpisem własnym

Problem

Przekazany certyfikat klienta jest certyfikatem samopodpisanym, co skutkuje błędem ApplicationGatewayTrustedClientCertificateDoesNotContainAnyCACertificate.

Rozwiązanie

Sprawdź, czy używany certyfikat z podpisem własnym zawiera rozszerzenie BasicConstraintsOid z wartością "2.5.29.19" i flagą urzędu certyfikacji ustawioną na true. To rozszerzenie wskazuje, że podmiot certyfikatu może działać jako urząd certyfikacji.

Aby sprawdzić właściwości certyfikatu, możesz użyć następującego polecenia OpenSSL:

openssl x509 -in certificate.pem -text -noout

Wyszukaj sekcję "Podstawowe ograniczenia" w danych wyjściowych, która powinna zawierać wartość "CA:TRUE" dla prawidłowego certyfikatu urzędu certyfikacji. Aby uzyskać szczegółowe wskazówki dotyczące generowania certyfikatów klienta z podpisem własnym, zobacz zaufane certyfikaty klienta.

Rozwiązywanie problemów w scenariuszu — problemy z łącznością

Możesz skonfigurować wzajemne uwierzytelnianie bez żadnych problemów, ale występują problemy podczas wysyłania żądań do usługi Application Gateway. Rozwiązaliśmy niektóre typowe problemy i rozwiązania w poniższej sekcji. Właściwość sslClientVerify można znaleźć w dziennikach dostępu usługi Application Gateway.

SslClientVerify jest NONE

Problem

Właściwość sslClientVerify jest wyświetlana jako "NONE" w dziennikach dostępu wskazująca, że podczas uzgadniania protokołu TLS nie został przedstawiony żaden certyfikat klienta.

Rozwiązanie

Ten problem występuje, gdy klient nie wysyła certyfikatu klienta w żądaniu uzgadniania protokołu TLS do usługi Application Gateway. Ten problem może wystąpić, gdy:

  • Aplikacja kliencka nie jest skonfigurowana do używania certyfikatów klienta
  • Certyfikat klienta nie jest poprawnie zainstalowany ani dostępny
  • Klient nie ufa certyfikatowi serwera usługi Application Gateway

Aby sprawdzić, czy uwierzytelnianie klienta jest poprawnie skonfigurowane w usłudze Application Gateway, użyj następującego polecenia OpenSSL:

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

Gdzie:

  • -cert określa ścieżkę do certyfikatu klienta (certyfikat liścia)
  • -key określa ścieżkę do pliku klucza prywatnego klienta
  • -verify_return_error gwarantuje, że polecenie zakończy się niepowodzeniem, jeśli weryfikacja certyfikatu zakończy się niepowodzeniem

Aby uzyskać więcej informacji na temat korzystania z polecenia OpenSSL s_client , zobacz stronę ręczną biblioteki OpenSSL.

SslClientVerify zakończyła się niepowodzeniem

Problem

Właściwość sslClientVerify jest wyświetlana jako "FAILED" w dziennikach dostępu, co oznacza, że walidacja certyfikatu klienta nie powiodła się podczas uzgadniania protokołu TLS.

Rozwiązanie

Istnieje wiele potencjalnych przyczyn błędów w dziennikach dostępu. Oto lista typowych przyczyn niepowodzenia:

  • Nie można pobrać certyfikatu wystawcy: Nie można odnaleźć certyfikatu wystawcy certyfikatu klienta. Ten problem zwykle oznacza, że łańcuch certyfikatów zaufanego urzędu certyfikacji klienta nie jest kompletny w usłudze Application Gateway. Sprawdź, czy łańcuch certyfikatów zaufanego urzędu certyfikacji klienta przekazany w usłudze Application Gateway jest kompletny.
  • Nie można pobrać certyfikatu wystawcy lokalnego: Podobnie jak w przypadku braku możliwości pobrania certyfikatu wystawcy, nie można odnaleźć certyfikatu wystawcy certyfikatu klienta. Ten problem zwykle oznacza, że łańcuch certyfikatów zaufanego urzędu certyfikacji klienta nie jest kompletny w usłudze Application Gateway. Sprawdź, czy łańcuch certyfikatów zaufanego urzędu certyfikacji klienta przekazany w usłudze Application Gateway jest kompletny.
  • Nie można zweryfikować pierwszego certyfikatu: Nie można zweryfikować certyfikatu klienta. Ten błąd występuje w szczególności, gdy klient przedstawia tylko certyfikat liścia, którego wystawca nie jest zaufany. Sprawdź, czy łańcuch certyfikatów zaufanego urzędu certyfikacji klienta przekazany w usłudze Application Gateway jest kompletny.
  • Nie można zweryfikować wystawcy certyfikatu klienta: Ten błąd występuje, gdy konfiguracja VerifyClientCertIssuerDN jest ustawiona na true. Ten błąd zwykle występuje, gdy nazwa wyróżniająca (DN) wystawcy certyfikatu klienta nie jest zgodna z nazwą ClientCertificateIssuerDN wyodrębnioną z łańcucha certyfikatów zaufanego urzędu certyfikacji (CA) przesłanego przez użytkownika. Aby uzyskać więcej informacji na temat sposobu, w jaki usługa Application Gateway wyodrębnia ClientCertificateIssuerDN, zapoznaj się z tematem Application Gateway wyodrębnia DN wystawcy. Najlepszym rozwiązaniem jest przekazanie jednego łańcucha certyfikatów na plik do usługi Application Gateway.
  • Nieobsługiwany cel certyfikatu: Upewnij się, że certyfikat klienta wyznacza rozszerzone użycie klucza na potrzeby uwierzytelniania klienta (1.3.6.1.5.5.7.3.2). Więcej szczegółowych informacji na temat definicji rozszerzonego użycia klucza i identyfikatora obiektu na potrzeby uwierzytelniania klienta można znaleźć w dokumentach RFC 3280 i RFC 5280.

Aby uzyskać więcej informacji na temat wyodrębniania całego łańcucha certyfikatów zaufanego urzędu certyfikacji klienta w celu przekazania do usługi Application Gateway, zapoznaj się ze sposobem wyodrębniania łańcuchów certyfikatów zaufanego urzędu certyfikacji klienta.

Rozwiązywanie problemów z kodem błędu

Podczas konfigurowania wzajemnego uwierzytelniania są wyświetlane następujące kody błędów. Każdy błąd zawiera prawdopodobną przyczynę i zalecane rozwiązanie.

Kod błędu: ApplicationGatewayTrustedClientCertificateMustSpecifyData

Przyczyna

Przekazany plik certyfikatu nie zawiera danych certyfikatu lub zawiera pusty plik bez prawidłowej zawartości certyfikatu.

Rozwiązanie

Sprawdź, czy plik certyfikatu zawiera prawidłowe dane certyfikatu w poprawnym formacie (PEM). Użyj edytora tekstów, aby potwierdzić, że plik zawiera zawartość certyfikatu między ogranicznikami -----BEGIN CERTIFICATE----- i -----END CERTIFICATE----- .

Kod błędu: ApplicationGatewayTrustedClientCertificateMustNotHavePrivateKey

Przyczyna

W łańcuchu certyfikatów znajduje się klucz prywatny. W łańcuchu certyfikatów nie powinien istnieć klucz prywatny.

Rozwiązanie

Dokładnie sprawdź przekazany łańcuch certyfikatów i usuń klucz prywatny, który był częścią łańcucha. Załaduj ponownie łańcuch bez klucza prywatnego.

Kod błędu: ApplicationGatewayTrustedClientCertificateInvalidData

Przyczyna

Istnieją dwie potencjalne przyczyny tego błędu:

  • Niepowodzenie analizowania: Łańcuch certyfikatów nie ma poprawnego formatu. Usługa Application Gateway oczekuje łańcuchów certyfikatów w formacie PEM z prawidłowo rozdzielanymi poszczególnymi certyfikatami.
  • Pusta zawartość: Przekazany plik zawiera tylko separatory bez prawdziwych danych certyfikatu między nimi.

Rozwiązanie

Na podstawie określonej przyczyny zastosuj jedno z następujących rozwiązań:

  • Problem z formatem: Upewnij się, że łańcuch certyfikatów jest w formacie PEM z każdym certyfikatem prawidłowo rozdzielonym znacznikami -----BEGIN CERTIFICATE----- i -----END CERTIFICATE----- . Każdy certyfikat powinien być na oddzielnych liniach wewnątrz tych ograniczników.
  • Brakujące dane: Sprawdź, czy plik certyfikatu zawiera rzeczywiste dane certyfikatu między ogranicznikami, a nie tylko pustymi ogranicznikami.

Kod błędu: ApplicationGatewayZaufanyCertyfikatKlientaNieZawieraŻadnegoCertyfikatuCA

Przyczyna

Przekazany certyfikat zawierał tylko certyfikat liścia bez certyfikatu urzędu certyfikacji. Przekazywanie łańcucha certyfikatów z certyfikatami urzędu certyfikacji i certyfikatem końcowym jest akceptowalne, ponieważ certyfikat końcowy będzie po prostu ignorowany, ale certyfikat musi pochodzić z urzędu certyfikacji.

Rozwiązanie

Upewnij się, że łańcuch certyfikatów zawiera co najmniej jeden certyfikat urzędu certyfikacji z odpowiednim rozszerzeniem BasicConstraintsOid (identyfikator OID: 2.5.29.19), gdzie flaga urzędu certyfikacji jest ustawiona na true. To rozszerzenie wskazuje, że podmiot certyfikatu może działać jako urząd certyfikacji.

Aby sprawdzić status centrum certyfikacji certyfikatu, użyj:

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

Dane wyjściowe powinny zawierać wartość "CA:TRUE" dla prawidłowych certyfikatów urzędu certyfikacji.

Kod błędu: ApplicationGatewayOnlyOneRootCAAllowedInTrustedClientCertificate

Przyczyna

Łańcuch certyfikatów zawierał wiele certyfikatów głównego urzędu certyfikacji lub zawierał zero certyfikatów głównego urzędu certyfikacji.

Rozwiązanie

Przekazane certyfikaty muszą zawierać dokładnie jeden certyfikat głównego urzędu certyfikacji oraz tyle certyfikatów pośredniego urzędu certyfikacji, ile jest potrzebne.