Отваряте клиента, избирате профила, който ползвате от месеци, и той спира с „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 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

Ако часовникът изостава, синхронизирайте отново и повторете проверката, преди да променяте какъвто и да е материал за сертификати. Устройство, което е с минути или часове назад, отхвърля всеки наскоро издаден сертификат, който срещне, не само една услуга, така че обяснението с една услуга обикновено е грешното. Ако часовникът е верен и синхронизиран, спрете да гледате устройството: прозорецът принадлежи на издателя и никаква локална настройка не бива да се променя, за да мине.

Тази таблица е цялото решение. Преместването на часовника към това, което сертификатът очаква, не е ремонт, а изключването на проверките за време също не е, защото и двете скриват условието, породило грешката.

Защо веригата се проваля, докато листът изглежда наред

Подновените листове и заместващите междинни сертификати обикновено се доставят заедно и не винаги кацат в един и същи момент. Услуга може да изпрати нов лист, подписан от междинен, чийто собствен прозорец започва по-късно, или да продължи да обслужва по-стар междинен под свеж лист. И в двата случая веригата се проваля, докато собствените дати на листа изглеждат разумни.

Балансираните крайни точки превръщат това от счупено в непоследователно. Ако повторен опит успее или една мрежа работи, а друга не, запишете кой партньор е отговорил и каква верига е изпратил, преди да променяте настройки. openssl s_client отпечатва свързания адрес, така че няколко опита показват дали всеки възел обслужва същата верига.

Пътища за ремонт, които запазват проверката

Проблем с часовника се поправя на устройството, при включена проверка. Проблем със сертификат се поправя от оператора с материал, издаден за прозорец, който вече включва сегашния момент. Никаква клиентска настройка не прави още невалиден сертификат валиден; флаговете, които пропускат проверките за време, съществуват, за да потвърдите диагноза, а не за да ги въвеждате в употреба.

Когато сертификатът е подготвен за планирано активиране, следвайте плана за преминаване. Инсталирайте го, когато прозорецът му се отвори, или използвайте процедурата за застъпване, която доставчикът документира, вместо да инсталирате рано и да учите потребителите да прескачат предупреждения. Предупрежденията, които хората се научават да пренебрегват, струват повече от кратко закъснение.

Накрая повторете проверката по начина, по който е възникнал отказът: нова сесия, същият клиент, ресурсът, който наистина ви трябва. TLS библиотеките могат да кешират проверена верига за целия живот на връзката и възобновена сесия не е задължително да я провери отново, така че стара сесия може да продължи да се проваля след поправката или да работи след регресия. Файл, който се отваря в програма за преглед, доказва само, че файлът е четим; завършено ръкостискане доказва, че веригата се валидира.

Преди да затворите заявката, потвърдете четири неща: UTC времето и състоянието на синхронизация на устройството с отказа, notBefore и notAfter на всеки сертификат в представената верига, същата верига от втори клиент и името, което грешката дава на сертификата. Ако часовникът е верен и прозорецът не се е отворил, останалото е работа на оператора и правилният ход от ваша страна е да изчакате прозореца, вместо да отслабите проверката.

Подобни статии