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.
Omówienie
Po skonfigurowaniu wzajemnego uwierzytelniania w usłudze Application Gateway może wystąpić wiele błędów występujących podczas próby użycia wzajemnego uwierzytelniania. Oto niektóre typowe przyczyny błędów:
- Przekazano certyfikat lub łańcuch certyfikatów bez certyfikatu głównego urzędu certyfikacji
- Przekazano łańcuch certyfikatów z wieloma certyfikatami głównego urzędu certyfikacji
- Przekazano łańcuch certyfikatów, który zawierał tylko certyfikat liścia bez certyfikatu urzędu certyfikacji
- Błędy walidacji spowodowane niezgodnością nazwy wyróżniającej wystawcy
Omówimy różne scenariusze, w których można napotkać problemy i jak rozwiązywać problemy z tymi scenariuszami. Następnie zajmiemy się kodami błędów i wyjaśnimy prawdopodobne przyczyny niektórych kodów błędów, które mogą być widoczne z wzajemnym uwierzytelnianiem. Wszystkie błędy uwierzytelniania certyfikatu klienta powinny spowodować kod błędu HTTP 400.
Rozwiązywanie problemów ze scenariuszem — problemy z konfiguracją
Istnieje kilka scenariuszy, które mogą wystąpić podczas próby skonfigurowania wzajemnego uwierzytelniania. Omówimy sposób rozwiązywania problemów z niektórymi z najczęstszych pułapek.
Certyfikat z podpisem własnym
Problem
Przekazany certyfikat klienta jest certyfikatem z podpisem własnym i powoduje wystąpienie błędu ApplicationGatewayTrustedClientCertificateDoesNotContainAnyCACertificate.
Rozwiązanie
Sprawdź dokładnie, czy używany certyfikat z podpisem własnym ma rozszerzenie BasicConstraintsOid = "2.5.29.19", który wskazuje, że podmiot może działać jako urząd certyfikacji. Zapewni to, że używany certyfikat jest certyfikatem urzędu certyfikacji. Aby uzyskać więcej informacji na temat generowania certyfikatów klienta z podpisem własnym, zapoznaj się z zaufanymi certyfikatami klienta.
Rozwiązywanie problemów ze scenariuszem — problemy z łącznością
Być może udało Ci się 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 to NONE
Problem
Właściwość sslClientVerify jest wyświetlana jako "NONE" w dziennikach dostępu.
Rozwiązanie
Jest tak, gdy klient nie wysyła certyfikatu klienta podczas wysyłania żądania do usługi Application Gateway. Może się tak zdarzyć, jeśli klient wysyłający żądanie do usługi Application Gateway nie jest poprawnie skonfigurowany do korzystania z certyfikatów klienta. Jednym ze sposobów sprawdzenia, czy konfiguracja uwierzytelniania klienta w usłudze Application Gateway działa zgodnie z oczekiwaniami, jest następujące polecenie OpenSSL:
openssl s_client -connect <hostname:port> -cert <path-to-certificate> -key <client-private-key-file>
Flaga -cert
to certyfikat liścia, flaga -key
to plik klucza prywatnego klienta.
Aby uzyskać więcej informacji na temat korzystania z polecenia OpenSSL s_client
, zapoznaj się z ich ręczną stroną.
SslClientVerify nie powiodło się
Problem
Właściwość sslClientVerify jest wyświetlana jako "FAILED" w dziennikach dostępu.
Rozwiązanie
Istnieje wiele potencjalnych przyczyn błędów w dziennikach dostępu. Poniżej znajduje się lista typowych przyczyn niepowodzenia:
- Nie można pobrać certyfikatu wystawcy: nie można odnaleźć certyfikatu wystawcy certyfikatu klienta. Zwykle oznacza to, że łańcuch certyfikatów urzędu certyfikacji zaufanego 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 został ukończony.
- Nie można pobrać certyfikatu wystawcy lokalnego: nie można pobrać certyfikatu wystawcy, nie można odnaleźć certyfikatu wystawcy certyfikatu klienta. Zwykle oznacza to, że łańcuch certyfikatów urzędu certyfikacji zaufanego 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 został ukończony.
- Nie można zweryfikować pierwszego certyfikatu: Nie można zweryfikować certyfikatu klienta. Ten błąd występuje konkretnie w przypadku, 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 został ukończony.
- Nie można zweryfikować wystawcy certyfikatu klienta: ten błąd występuje, gdy konfiguracja VerifyClientCertIssuerDN jest ustawiona na true. Dzieje się tak zwykle, gdy nazwa wyróżniająca wystawcy certyfikatu klienta jest niezgodna z nazwą ClientCertificateIssuerDN wyodrębniona z łańcucha certyfikatów zaufanego urzędu certyfikacji klienta przekazanego przez klienta. Aby uzyskać więcej informacji na temat sposobu wyodrębniania przez usługę Application Gateway klasy ClientCertificateIssuerDN, zapoznaj się z tematem Application Gateway wyodrębniającym nazwę wyróżniającą wystawcy. Najlepszym rozwiązaniem jest przekazanie jednego łańcucha certyfikatów na plik do usługi Application Gateway.
- Cel nieobsługiwanego 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
Jeśli widzisz dowolny z poniższych kodów błędów, mamy kilka zalecanych rozwiązań, które pomogą rozwiązać problem, z którym możesz się zmierzyć.
Kod błędu: ApplicationGatewayTrustedClientCertificateMustSpecifyData
Przyczyna
Brakuje danych certyfikatu. Przekazany certyfikat mógł być pustym plikiem bez żadnych danych certyfikatu.
Rozwiązanie
Sprawdź, czy przekazany plik certyfikatu nie ma żadnych brakujących danych.
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 kodu błędu.
- Analizowanie nie powiodło się, ponieważ łańcuch nie jest prezentowany w odpowiednim formacie. Usługa Application Gateway oczekuje, że łańcuch certyfikatów będzie w formacie PEM, a także oczekuje, że poszczególne dane certyfikatów zostaną rozdzielone.
- Analizator nie znalazł nic do przeanalizowana. Przekazany plik mógł potencjalnie mieć ograniczniki, ale nie ma żadnych danych certyfikatu.
Rozwiązanie
W zależności od przyczyny tego błędu istnieją dwa potencjalne rozwiązania.
- Sprawdź, czy przekazany łańcuch certyfikatów był w odpowiednim formacie (PEM) i czy dane certyfikatu zostały prawidłowo rozdzielone.
- Sprawdź, czy przekazany plik certyfikatu zawierał dane certyfikatu oprócz ograniczników.
Kod błędu: ApplicationGatewayTrustedClientCertificateDoesNotContainAnyCACertificate
Przyczyna
Przekazany certyfikat zawierał tylko certyfikat liścia bez certyfikatu urzędu certyfikacji. Przekazywanie łańcucha certyfikatów z certyfikatami urzędu certyfikacji i certyfikat liścia jest akceptowalne, ponieważ certyfikat liścia będzie po prostu ignorowany, ale certyfikat musi mieć urząd certyfikacji.
Rozwiązanie
Dokładnie sprawdź, czy przekazany łańcuch certyfikatów zawierał więcej niż tylko certyfikat liścia. Rozszerzenie BasicConstraintsOid = "2.5.29.19" powinno być obecne i wskazuje, że podmiot może działać jako urząd 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 (a jednak wiele certyfikatów pośredniego urzędu certyfikacji zgodnie z potrzebami).