Udostępnij za pośrednictwem


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

Podsumowanie

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:

  • Przekazywanie certyfikatu lub łańcucha certyfikatów bez certyfikatu głównego urzędu certyfikacji
  • Prześlij łańcuch certyfikatów z wieloma certyfikatami głównego urzędu certyfikacji
  • Przesyłanie łańcucha certyfikatów, który zawiera tylko certyfikat końcowy, bez certyfikatu organizacji certyfikującej
  • 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

Przesłany certyfikat klienta jest samopodpisanym certyfikatem, 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 Eksportowanie łańcucha certyfikatów zaufanego urzędu certyfikacji klienta do użycia z uwierzytelnianiem klienta.

Rozwiązywanie problemów scenariuszy — 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> 

Where:

  • określa ścieżkę do certyfikatu klienta (certyfikat liścia)
  • określa ścieżkę do pliku klucza prywatnego klienta
  • 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, zobacz stronę podręcznika OpenSSL.

SslClientVerify zakończyło 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 ramach usługi Application Gateway. Sprawdź, czy łańcuch certyfikatów zaufanego urzędu certyfikacji klienta przekazany w usłudze Application Gateway jest kompletny.
  • Nie można uzyskać lokalnego certyfikatu wystawcy: Podobnie jak w przypadku problemu z uzyskaniem certyfikatu wystawcy, nie można odnaleźć certyfikatu wystawcy dla 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 urzędu certyfikacji zaufanego klienta załadowany 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 urzędu certyfikacji zaufanego klienta załadowany 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 DN wystawcy certyfikatu klienta nie jest zgodne z ClientCertificateIssuerDN, które jest wyodrębnione z łańcucha certyfikatów CA zaufanego klienta przekazanego przez klienta. Aby uzyskać więcej informacji na temat sposobu wyodrębniania przez Application Gateway klasy ClientCertificateIssuerDN, zapoznaj się z tematem Application Gateway extracting issuer DN. 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, zobacz jak wyodrębnić łańcuchy 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 i .

Kod błędu: ApplicationGatewayTrustedClientCertificateNiepowinienMiećKluczaPrywatnego

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 żadnych 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 i . Każdy certyfikat powinien znajdować się w osobnych wierszach w tych ogranicznikach.
  • Brakujące dane: Sprawdź, czy plik certyfikatu zawiera rzeczywiste dane certyfikatu między ogranicznikami, a nie tylko pustymi ogranicznikami.

Kod błędu: CertyfikatZaufanegoKlientaBramyAplikacjiNieZawieraŻadnegoCertyfikatuCA

Przyczyna

Przesłany certyfikat zawierał tylko certyfikat końcowy bez certyfikatu urzędu certyfikacji. Przekazywanie łańcucha certyfikatów zawierającego certyfikaty urzędu certyfikacji oraz certyfikat końcowy jest akceptowalne, ponieważ certyfikat końcowy będzie po prostu ignorowany, ale certyfikat musi być wystawiony przez urząd 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 CA 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średnich urzędów certyfikacji, ile jest potrzebne).