Otvoríte klienta, vyberiete profil, ktorý používate mesiace, a on sa zastaví s hláškou „certificate is not yet valid“. Na vašom prihlásení sa nič nezmenilo a úložisko dôvery je pravdepodobne v poriadku: certifikát predložený pri handshake nesie okno platnosti, ktoré začína neskôr ako okamih, ktorý používa overovateľ. Presne túto správu vytvárajú tri rôzne situácie a vyžadujú rôzne kroky. Poradie nižšie vám povie, ktorú z nich máte, skôr než sa dotknete hodín alebo súboru certifikátu.

Ktorú z troch príčin vidíte

Prvá príčina je miestna: zariadenie, ktoré kontrolu vykonáva, má hodiny skoršie ako dátum začiatku certifikátu. Vidíte to na hardvéri s mŕtvou batériou CMOS, na virtuálnych strojoch obnovených zo starého snímku, na zariadeniach, ktoré boli vypnuté dosť dlho na to, aby stratili čas, a v sieťach, kde je odchádzajúci NTP blokovaný a nikto si to nevšimol. Certifikát môže byť úplne platný a napriek tomu takto zlyhať.

Druhá príčina patrí vydavateľovi, pretože certifikát skutočne začína v budúcnosti: vydaný skoro, vygenerovaný s explicitným časom začiatku alebo podpísaný ako súčasť aktivačného kroku, ktorý ešte neprebehol. Tretia príčina stráca najviac času, pretože koncový certifikát je aktuálny, zatiaľ čo iný certifikát v predloženom reťazci nie, takže chyba pomenúva materiál, ktorý ste nikdy nenainštalovali.

Oddeľuje ich jedna otázka. Sleduje zlyhanie zariadenie alebo službu? Dva stroje v tej istej sieti, ktoré sa správajú rozdielne, ukazujú na hodiny. Keď zlyháva každý klient rovnako, ukazuje to na okno certifikátu a reťaz za ním.

Prečítajte okno z certifikátu, ktorý bol skutočne predložený

Neprehliadajte súbor PEM zostal z predchádzajúceho nasadenia; požiadajte službu o reťaz, ktorú posiela teraz. openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts vypíše každý certifikát v reťazci. Uložte blok, ktorý vás zaujíma, a spustite openssl x509 -noout -subject -issuer -dates; posledný vypíše notBefore a notAfter, a to sú dve hodnoty, ktoré rozhodujú. Vo Windows dialóg certifikátu pre pripojenie a certutil -dump na exportovanom súbore zobrazujú rovnaké polia.

Čítajte oba konce okna, nielen začiatok. Certifikát, ktorý sa otvára o dve hodiny, a ten, ktorý sa o dve hodiny zatvára, zlyhávajú s rôznymi správami a zapájajú rôzne tímy. Poznamenajte, ktorý certifikát chyba pomenúva — koncový, sprostredkujúci alebo koreňový —, pretože to rozhoduje, či sa na strane klienta dá vôbec niečo opraviť.

Okno môžete otestovať aj bez čakania. Overovanie prijíma explicitný čas: openssl verify -attime 1793600000 -CAfile ca.pem -untrusted intermediate.pem leaf.pem vyhodnotí reťaz k tomuto časovému razítku. Spustite ho s aktuálnym časom, aby ste zlyhanie reprodukovali, a potom s časom začiatku certifikátu, aby ste potvrdili, že ten istý reťaz prejde, keď sa okno otvorí. RFC 5280 definuje pole platnosti a pravidlo, že certifikát sa mimo neho nesmie používať, a presne toto pravidlo váš klient práve uplatnil.

Vaše hodiny alebo ich

Porovnajte hodiny zariadenia so začiatkom certifikátu v UTC, zo zdroja, ktorému dôverujete. date -u dáva okamih a timedatectl status na hostiteľovi so systemd tiež hlási, či sú hodiny synchronizované. Vo Windows w32tm /query /status zobrazuje aktuálny zdroj a poslednú úspešnú synchronizáciu. Časové pásmo v oznamovacej oblasti je voľba zobrazenia, nie nesprávne hodiny; overovateľ porovnáva okamihy UTC.

What you seeMost likely readingNext step
Clock behind, one device affectedLocal time faultResync time, keep validation on, retest
Clock correct, window opens soonCertificate staged earlyWait for the window or follow the cutover plan
Clock correct, intermediate not yet validChain material mismatchOperator replaces the intermediate
Some peers pass, others do notInconsistent nodesRecord each peer's chain before changing anything

Ak hodiny meškajú, resynchronizujte a znova otestujte, skôr než zmeníte akýkoľvek materiál certifikátu. Zariadenie, ktoré je o minúty alebo hodiny vedľa, odmieta každý nedávno vydaný certifikát, na ktorý natrafí, nielen jednu službu, takže vysvetlenie jednou službou je zvyčajne to nesprávne. Ak sú hodiny správne a synchronizované, prestaňte sa pozerať na zariadenie: okno patrí vydavateľovi a žiadne miestne nastavenie sa nemá upravovať, aby prešlo.

Tá tabuľka je celé rozhodnutie. Posunúť hodiny na to, čo certifikát očakáva, nie je oprava, a vypnutie časových kontrol tiež nie, pretože oboje skrýva stav, ktorý chybu spôsobil.

Prečo reťaz zlyháva, keď koncový certifikát vyzerá dobre

Obnovené koncové certifikáty a náhradné sprostredkujúce certifikáty sa zvyčajne dodávajú spolu a nie vždy pristanú v rovnakom okamihu. Služba môže poslať nový koncový certifikát podpísaný sprostredkujúcim, ktorého vlastné okno začína neskôr, alebo ďalej obsluhovať starší sprostredkujúci pod čerstvým koncovým certifikátom. V oboch prípadoch reťaz zlyháva, zatiaľ čo vlastné dátumy koncového certifikátu vyzerajú rozumne.

Koncové body s vyrovnávaním záťaže menia toto zo zlomeného na nekonzistentné. Ak opakovanie uspeje alebo jedna sieť funguje a iná nie, poznamenajte, ktorý peer odpovedal a ktorý reťaz poslal, skôr než zmeníte nastavenia. openssl s_client vypíše pripojenú adresu, takže niekoľko pokusov ukáže, či každý uzol obsluhuje ten istý reťaz.

Cesty opravy, ktoré zachovajú overovanie

Problém s hodinami sa opraví na zariadení a overovanie zostane zapnuté. Problém s certifikátom opraví operátor materiálom vydaným pre okno, ktoré už zahŕňa teraz. Žiadne nastavenie klienta neurobí zatiaľ neplatný certifikát platným; príznaky, ktoré preskakujú časové kontroly, existujú na potvrdenie diagnózy, nie na nasadenie.

Keď je certifikát pripravený na plánovanú aktiváciu, postupujte podľa plánu prechodu. Nainštalujte ho, keď sa jeho okno otvorí, alebo použite postup prekrytia, ktorý dodávateľ dokumentuje, namiesto toho, aby ste ho nainštalovali skoro a učili používateľov preklikať varovania. Varovania, ktoré sa ľudia naučia ignorovať, stoja viac ako krátke oneskorenie.

Nakoniec otestujte znova tak, ako zlyhanie vzniklo: nová relácia, ten istý klient, zdroj, ktorý skutočne potrebujete. Knižnice TLS môžu ukladať overený reťaz po celý život spojenia a obnovená relácia ho nemusí znova kontrolovať, takže stará relácia môže po oprave ďalej zlyhávať alebo po regresii ďalej fungovať. Súbor, ktorý sa otvorí v prehliadači, dokazuje len to, že je čitateľný; dokončený handshake dokazuje, že reťaz sa overuje.

Skôr než zatvoríte tiket, potvrďte štyri veci: čas UTC a stav synchronizácie zlyhávajúceho zariadenia, notBefore a notAfter každého certifikátu v predloženom reťazci, ten istý reťaz z druhého klienta a názov, ktorý chyba certifikátu dáva. Ak sú hodiny správne a okno sa ešte neotvorilo, zvyšok je práca operátora a správny krok na vašej strane je počkať na okno, namiesto oslabenia kontroly.

Súvisiace články