Niezgodność nazwy w certyfikacie - dlaczego kłódka nie działa
Niezgodność nazwy hosta oznacza, że certyfikat jest ważny, ale wystawiony na inny adres. Zwykle winne jest brakujące www, nowa subdomena albo CDN podający swój certyfikat.
Niezgodność nazwy to jedna z bardziej mylących awarii TLS, bo z samym certyfikatem nie ma nic złego. Jest prawdziwy, w terminie i podpisany przez zaufany urząd. Po prostu nie został wystawiony na nazwę hosta, którą wpisał odwiedzający, a przeglądarki traktują to jako błąd krytyczny.
Jak ustalana jest zgodność
Przeglądarka porównuje nazwę hosta z paska adresu z nazwami zapisanymi w certyfikacie: listą Subject Alternative Name, która jest wiążąca, oraz historycznie polem Common Name. Jeśli nazwy hosta nie ma na tej liście, połączenie zostaje odrzucone.
Wildcard obejmuje dokładnie jeden poziom. Certyfikat na *.example.com pokrywa www.example.com i sklep.example.com, ale nie pokrywa samego example.com ani a.b.example.com. Ta jedna zasada odpowiada za sporą część realnych niezgodności.
Cztery typowe przyczyny
- Brakuje domeny głównej. Certyfikat obejmuje www.example.com, a odwiedzający wpisał example.com, albo odwrotnie. Obie nazwy muszą być w certyfikacie.
- Dodano nową subdomenę bez ponownego wystawienia certyfikatu. Rekord DNS istnieje, usługa działa, a certyfikat nigdy się o niej nie dowiedział.
- CDN albo load balancer podaje swój domyślny certyfikat. Serwer źródłowy jest skonfigurowany poprawnie, ale brzeg sieci prezentuje coś zupełnie innego, często własną nazwę dostawcy.
- Odpowiada niewłaściwy host wirtualny. Na serwerze z wieloma witrynami żądanie niepasujące do żadnej skonfigurowanej nazwy trafia na certyfikat pierwszej z nich.
Jak to naprawić
Wystaw certyfikat ponownie ze wszystkimi nazwami, które mają być obsługiwane - domeną główną i www, plus każdą używaną subdomeną. Jeśli korzystasz z wildcarda, pamiętaj, że nie obejmuje on domeny głównej, więc trzeba ją wypisać osobno obok niego. Potem przeładuj serwer WWW i potwierdź z zewnątrz, że serwowany certyfikat faktycznie zawiera nowe nazwy.
Jeśli certyfikat jest poprawny, a niezgodność nadal występuje, problem jest przed Twoim serwerem. Sprawdź, co podaje CDN albo load balancer, bo poprawny certyfikat na serwerze źródłowym jest dla odwiedzających niewidoczny, gdy brzeg sieci nigdy go nie używa.
Dlaczego to wraca
Niezgodności powstają przy zwykłej pracy: uruchomieniu subdomeny, przejściu na CDN, wydzieleniu usługi. Certyfikat rzadko bywa częścią tej listy kontrolnej, więc luka pojawia się przy wdrożeniu, a odkrywa ją klient. Kontrola, która czyta certyfikat tak jak przeglądarka i pokazuje objęte nazwy hostów, zamienia to w coś, co znajdujesz sam, zamiast dowiadywać się od innych.