Как неправильные системные часы ломают TLS и проверку лицензии
Почему сбитые часы ломают TLS и все проверки лицензии, как работает синхронизация времени в Windows, какими командами запустить её принудительно и откуда сдвиг часов при двух ОС.
Коротко
Если локальные часы выходят за пределы срока действия сертификата, TLS отклоняет действительный сертификат, и любая проверка лицензии по HTTPS не проходит. Сначала исправьте часы командой w32tm /resync, а уже потом создавайте новые ключи, переустанавливайте лоадер или меняйте правила брандмауэра.
На странице8
- Почему сертификат зависит от ваших часов?
- Почему сбитые часы выглядят как проблема с лицензией
- Как работает синхронизация времени в Windows?
- Команды для проверки и исправления синхронизации времени
- Как принудительно синхронизировать время
- Почему после каждой перезагрузки часы сбиваются на целые часы
- Проблемы из-за неправильных часов
- Частые вопросы о системных часах
Почему сертификат зависит от ваших часов?
В каждом TLS-сертификате есть две метки времени, not-before и not-after, и когда ваша машина открывает HTTPS-соединение, она сравнивает их со своими часами. Если локальное время выходит за пределы этого окна, сертификат отклоняется, и соединение обрывается ещё до обмена данными. Обойти это нельзя, потому что в этой проверке и заключается весь смысл срока действия. Машина, у которой на часах прошлый год, отклонит совершенно действительный сертификат — и машина, у которой на часах следующий год, тоже.
Почему сбитые часы выглядят как проблема с лицензией
Трафик лицензирования и активации идёт по HTTPS, поэтому при неправильных часах TLS-рукопожатие не проходит. Приложение в ответ выдаёт то, что заложено в его обработке ошибок: неверный ключ, ошибка аутентификации, не удалось связаться с сервером или неожиданный ответ. Ни одно из этих сообщений не упоминает часы, поэтому люди тратят вечер на перевыпуск ключей и переустановку лоадера, чтобы решить двухминутную проблему. Некоторые сервисы ещё и подписывают запросы меткой времени и отклоняют всё, что выходит за допустимое окно, — и это ломается точно так же, даже когда сам TLS проходит успешно.
Как работает синхронизация времени в Windows?
Windows следит за временем с помощью службы Windows Time (w32time), которая по NTP обращается к настроенному источнику. Часы она не корректирует непрерывно: служба просыпается через заданный интервал, запрашивает у сервера времени текущее время и подстраивается. На практике её ломают три вещи. Служба может быть остановлена или переведена на ручной запуск — тогда синхронизация не происходит вообще. Настроенный источник может быть недоступен, что часто бывает в сети с ограничениями или за агрессивным брандмауэром. Или часы могут уйти настолько далеко, что Windows сочтёт поправку неправдоподобной и откажется от большого скачка. Все три случая выглядят одинаково: переключатель в Параметрах вроде бы выставлен правильно, а часы всё равно врут.
Команды для проверки и исправления синхронизации времени
Выполните их в командной строке от имени администратора в этом порядке. Запрос статуса идёт первым, потому что показывает, в чём проблема: в службе, в источнике или в величине расхождения.
w32tm /query /status
w32tm /query /source
w32tm /query /configuration
net start w32time
w32tm /resync
w32tm /resync /rediscover
w32tm /stripchart /computer:time.windows.com /samples:5 /dataonly
w32tm /config /manualpeerlist:"time.windows.com,0x8" /syncfromflags:MANUAL /update
sc config w32time start= autoКак принудительно синхронизировать время
Начните со второго ПК, потому что аутентификация проходит именно там, а затем повторите на игровом ПК, если этого требует заметка к продукту.
- Откройте Settings → Time & language → Date & time (Параметры → Время и язык → Дата и время) и проверьте часовой пояс: правильное время в неправильном поясе — это всё равно неправильные часы
- Выключите Set time automatically (Установить время автоматически), снова включите, затем нажмите Sync now (Синхронизировать)
- Если ничего не изменилось, откройте командную строку от имени администратора
- Выполните w32tm /query /status и посмотрите строки Last Successful Sync Time (Время последней успешной синхронизации) и Source (Источник)
- Если служба не запущена, выполните net start w32time, а затем переведите её на автоматический запуск через sc config
- Выполните w32tm /resync и прочитайте результат: там будет либо сообщение об успехе, либо причина сбоя
- Если источник недоступен, задайте конкретный источник командой config и снова выполните синхронизацию
- Сверьте часы с любым другим устройством, затем повторите проверку лицензии, прежде чем менять что-то ещё
Внимание
Почему после каждой перезагрузки часы сбиваются на целые часы
Эта проблема выглядит как аппаратная неисправность, но это не так. Windows хранит аппаратные часы в местном времени, а Linux и macOS по соглашению хранят их в UTC. На машине с двойной загрузкой каждая ОС корректирует общие аппаратные часы по своему соглашению, поэтому каждая перезагрузка сдвигает время на ваше смещение от UTC. То же самое бывает с виртуальной машиной, у которой хост и гостевая система не согласованы, или когда гостевые дополнения синхронизируются с хостом, у которого часы сами неправильные. Симптом — часы, которые расходятся ровно на целое число часов, сбрасываются после каждой загрузки и будто игнорируют успешную синхронизацию. Исправляйте соглашение или хост, а не часы.
Проблемы из-за неправильных часов
Проверьте часы, прежде чем браться за любые долгие исправления: проверка занимает тридцать секунд и ничего не стоит.
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Лицензия недействительна, ключ отклонён или ошибка аутентификации при действительном ключе | Проверка TLS не прошла, потому что локальные часы вне срока действия сертификата | Выполните w32tm /query /status, затем w32tm /resync, проверьте часы и часовой пояс и повторите попытку, прежде чем что-либо перевыпускать |
| Ошибки сертификатов в браузере на той же машине | Это подтверждение того, что причина в часах, а не в приложении | Сначала исправьте часы: если даже браузер не может открыть обычный HTTPS-сайт, ни одно приложение на этой машине не пройдёт аутентификацию |
| Sync now ничего не делает, и часы остаются неправильными | Служба Windows Time остановлена или переведена на ручной запуск | Выполните net start w32time, переведите службу на автоматический запуск через sc config, затем синхронизируйте время |
| Resync сообщает, что источник недоступен | Настроенный сервер времени в этой сети заблокирован или его имя не резолвится | Задайте конкретный доступный источник командой manualpeerlist и синхронизируйте время, затем убедитесь, что политика роутера не блокирует исходящий NTP |
| Часы расходятся ровно на один или несколько целых часов и сбрасываются при каждой загрузке | Несовпадение соглашений UTC и местного времени при двойной загрузке или в виртуальной машине | Добейтесь, чтобы обе системы использовали одно соглашение для аппаратных часов, или исправьте часы самого хоста: коррекция только гостевой системы долго не продержится |
| Часы сильно уходят на машине, которая часто бывает офлайн | Нет возможности синхронизироваться, а на старом железе — ещё и слабая батарейка | Подключайтесь к сети и синхронизируйте время перед каждой сессией, а если машина к тому же забывает дату, пока выключена, замените батарейку на плате |
Частые вопросы о системных часах
Насколько должны сбиться часы, чтобы всё сломалось?
Для TLS — настолько, чтобы выйти за срок действия сертификата, а это могут быть дни. При подписи запросов некоторые сервисы отклоняют расхождение всего в несколько минут, так что всё, что больше примерно минуты, стоит исправить.
На каком ПК важны часы?
На том, который проходит аутентификацию, — обычно это второй ПК, поэтому синхронизируйте его первым. Игровой ПК тоже синхронизируйте, если этого требует заметка к продукту или если отказывают его собственные онлайн-сервисы.
Достаточно ли выставить время вручную?
Ручная установка сразу снимает блокировку, но часы снова уйдут, поэтому наладьте синхронизацию, чтобы они оставались точными. Проверяйте не только отображаемое время, но и часовой пояс.
Могут ли неправильные часы вызывать ошибки чтения или ошибки DTB?
Нет. Часы влияют на TLS, лицензирование и всё, что подписывает метку времени. Ошибки чтения и ошибки DTB относятся к другому уровню: USB, карте памяти (MMAP) или сборке Windows.
Меняет ли смена часового пояса сами часы?
Она меняет отображаемое местное время, а не сам момент времени, поэтому машина может показывать неправильное местное время при идеально синхронизированных часах. Это всё равно ломает всё, что сравнивает локальные метки времени, так что пояс тоже выставьте правильно.
Источники
Ни один из проверенных источников не описывает проверку часов в TLS или синхронизацию времени в Windows, поэтому материал опирается на обычное администрирование Windows и собственные тикеты магазина по лицензиям.
Читать дальше
Не получилось? Откройте тикет в Discord
Все гайды