VPN сертификатът още не е валиден: три причини, един ред за проверка
„Още не е валиден“ означава, че часовникът на устройството изостава, прозорецът наистина започва по-късно или междинен сертификат още не се е отворил. Проверявайте ги в този ред.
Отваряте клиента, избирате профила, който ползвате от месеци, и той спира с „certificate is not yet valid“. Във влизането ви не се е променило нищо и хранилището за доверие вероятно е наред: сертификатът, представен при ръкостискането, носи прозорец за валидност, който започва по-късно от момента, който използва проверяващият. Три различни ситуации дават точно това съобщение и изискват различни действия. Редът по-долу ви казва коя от тях имате, преди да пипнете часовник или файл със сертификат.
Коя от трите причини виждате
Първата причина е локална: устройството, което извършва проверката, има часовник по-ранен от началната дата на сертификата. Виждате го при хардуер с изтощена CMOS батерия, при виртуални машини, възстановени от стар снимка, при устройства, стояли изключени достатъчно дълго, за да загубят време, и в мрежи, където изходящият NTP е блокиран и никой не е забелязал. Сертификатът може да е напълно валиден и пак да се провали по този начин.
Втората причина принадлежи на издателя, защото сертификатът наистина започва в бъдещето: издаден рано, генериран с явно начално време или подписан като част от стъпка за активиране, която още не е изпълнена. Третата причина губи най-много време, защото листовият сертификат е актуален, а друг сертификат в представената верига не е, така че грешката назовава материал, който никога не сте инсталирали.
Един въпрос ги разделя. Следва ли отказът устройството или услугата? Две машини в една и съща мрежа, които се държат различно, сочат към часовници. Всеки клиент, който се проваля по един и същ начин, сочи към прозореца на сертификата и веригата зад него.
Прочетете прозореца от сертификата, който действително е бил представен
Не проверявайте PEM файл, останал от предишно разгръщане; попитайте услугата за веригата, която изпраща в момента. openssl s_client -connect vpn.example.com:443 -servername vpn.example.com -showcerts отпечатва всеки сертификат във веригата. Запазете блока, който ви интересува, и изпълнете openssl x509 -noout -subject -issuer -dates; последният отпечатва notBefore и notAfter и точно тези две стойности решават въпроса. В Windows диалогът за сертификата на връзката и certutil -dump върху експортиран файл показват същите полета.
Прочетете двата края на прозореца, не само началото. Сертификат, който се отваря след два часа, и такъв, който се затваря след два часа, се провалят с различни съобщения и включват различни екипи. Отбележете кой сертификат назовава грешката — листов, междинен или коренов, — защото това решава дали нещо от страна на клиента може да се поправи изобщо.
Можете да проверите прозореца и без да го чакате. Проверката приема явно време: openssl verify -attime 1793600000 -CAfile ca.pem -untrusted intermediate.pem leaf.pem оценява веригата към този времеви отпечатък. Изпълнете го с текущото време, за да възпроизведете отказа, после с началното време на сертификата, за да потвърдите, че същата верига минава, щом прозорецът се отвори. RFC 5280 дефинира полето за валидност и правилото сертификат да не се използва извън него, а точно това правило току-що наложи вашият клиент.
Вашият часовник или техният
Сравнете часовника на устройството с началото на сертификата в UTC от източник, на който вярвате. date -u дава момента, а timedatectl status на systemd хост съобщава също дали часовникът е синхронизиран. В Windows w32tm /query /status показва текущия източник и последната успешна синхронизация. Часовият пояс в системния трей е избор за показване, а не грешен часовник; проверяващият сравнява моменти в UTC.
| What you see | Most likely reading | Next step |
|---|---|---|
| Clock behind, one device affected | Local time fault | Resync time, keep validation on, retest |
| Clock correct, window opens soon | Certificate staged early | Wait for the window or follow the cutover plan |
| Clock correct, intermediate not yet valid | Chain material mismatch | Operator replaces the intermediate |
| Some peers pass, others do not | Inconsistent nodes | Record each peer's chain before changing anything |
Ако часовникът изостава, синхронизирайте отново и повторете проверката, преди да променяте какъвто и да е материал за сертификати. Устройство, което е с минути или часове назад, отхвърля всеки наскоро издаден сертификат, който срещне, не само една услуга, така че обяснението с една услуга обикновено е грешното. Ако часовникът е верен и синхронизиран, спрете да гледате устройството: прозорецът принадлежи на издателя и никаква локална настройка не бива да се променя, за да мине.
Тази таблица е цялото решение. Преместването на часовника към това, което сертификатът очаква, не е ремонт, а изключването на проверките за време също не е, защото и двете скриват условието, породило грешката.
Защо веригата се проваля, докато листът изглежда наред
Подновените листове и заместващите междинни сертификати обикновено се доставят заедно и не винаги кацат в един и същи момент. Услуга може да изпрати нов лист, подписан от междинен, чийто собствен прозорец започва по-късно, или да продължи да обслужва по-стар междинен под свеж лист. И в двата случая веригата се проваля, докато собствените дати на листа изглеждат разумни.
Балансираните крайни точки превръщат това от счупено в непоследователно. Ако повторен опит успее или една мрежа работи, а друга не, запишете кой партньор е отговорил и каква верига е изпратил, преди да променяте настройки. openssl s_client отпечатва свързания адрес, така че няколко опита показват дали всеки възел обслужва същата верига.
Пътища за ремонт, които запазват проверката
Проблем с часовника се поправя на устройството, при включена проверка. Проблем със сертификат се поправя от оператора с материал, издаден за прозорец, който вече включва сегашния момент. Никаква клиентска настройка не прави още невалиден сертификат валиден; флаговете, които пропускат проверките за време, съществуват, за да потвърдите диагноза, а не за да ги въвеждате в употреба.
Когато сертификатът е подготвен за планирано активиране, следвайте плана за преминаване. Инсталирайте го, когато прозорецът му се отвори, или използвайте процедурата за застъпване, която доставчикът документира, вместо да инсталирате рано и да учите потребителите да прескачат предупреждения. Предупрежденията, които хората се научават да пренебрегват, струват повече от кратко закъснение.
Накрая повторете проверката по начина, по който е възникнал отказът: нова сесия, същият клиент, ресурсът, който наистина ви трябва. TLS библиотеките могат да кешират проверена верига за целия живот на връзката и възобновена сесия не е задължително да я провери отново, така че стара сесия може да продължи да се проваля след поправката или да работи след регресия. Файл, който се отваря в програма за преглед, доказва само, че файлът е четим; завършено ръкостискане доказва, че веригата се валидира.
Преди да затворите заявката, потвърдете четири неща: UTC времето и състоянието на синхронизация на устройството с отказа, notBefore и notAfter на всеки сертификат в представената верига, същата верига от втори клиент и името, което грешката дава на сертификата. Ако часовникът е верен и прозорецът не се е отворил, останалото е работа на оператора и правилният ход от ваша страна е да изчакате прозореца, вместо да отслабите проверката.