Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

CERTIFICATE_EXPIRED Сетевое оборудование и VPN

OpenVPN TLS Error: Certificate verify failed (certificate has expired) — решение

Обновлено: 24.08.2026 · Официальная документация ↗

Клиент не может подключиться к OpenVPN серверу, в логах появляется ошибка:

  • Сообщение: TLS Error: TLS signature verification failed или VERIFY ERROR: depth=0, error=certificate has expired.
  • Клиенты отключаются после планового наступления даты окончания сертификата CA или Server/Client cert.
  • Ошибка возникает внезапно на всех клиентах одновременно или только на конкретном пользователе.

1. Архитектура PKI (Public Key Infrastructure) в OpenVPN

OpenVPN проверяет цепочку доверия X.509: Сертификат удостоверяющего центра (CA) -> Сертификат сервера / Сертификат клиента. Если текущее системное время на шлюзе или клиенте выходит за рамки интервала Not BeforeNot After любого из сертификатов цепочки, OpenSSL немедленно прерывает рукопожатие со статусом certificate has expired.

2. Проверка срока действия сертификатов утилитой OpenSSL

# Проверка даты окончания клиентского сертификата
openssl x509 -in client.crt -noout -dates

# Проверка сертификата сервера
openssl x509 -in server.crt -noout -dates

# Проверка корневого сертификата CA
openssl x509 -in ca.crt -noout -dates

Пример вывода:

notBefore=May  1 10:00:00 2023 GMT
notAfter=May  1 10:00:00 2024 GMT

3. Проверка системного времени и NTP

Часто сертификат валиден, но на сервере или клиенте сбились системные часы:

# Проверка времени и синхронизации NTP
timedatectl status

# Принудительная синхронизация
chronyc makestep || ntpdate pool.ntp.org

4. Перевыпуск клиентского сертификата через Easy-RSA

# Переход в директорию Easy-RSA на сервере управления PKI
cd /etc/openvpn/easy-rsa

# Выпуск нового сертификата взамен истекшего
./easyrsa build-client-full client_username nopass

# Экспорт нового сертификата и приватного ключа клиенту

5. Продление сертификата Certificate Authority (CA)

Если истек корневой CA, все выданные сертификаты становятся недействительными:

# Перевыпуск CA в Easy-RSA с увеличенным сроком действия
./easyrsa build-ca

# Обновление ca.crt на сервере и у ВСЕХ клиентов
💡 Практика специалистов: Всегда обращайте внимание на срок действия файла crl.pem (Certificate Revocation List). По умолчанию в Easy-RSA срок действия CRL составляет всего 180 дней. Если его не обновлять, сервер перестанет пускать всех пользователей с ошибкой CRL has expired.

Частые вопросы (FAQ)

Почему при валидном сертификате в логе все равно пишется 'certificate has expired'?

Проверьте всю цепочку сертификатов. Ошибка возникает, если истек не сам клиентский сертификат, а промежуточный или корневой сертификат ca.crt.

Можно ли продлить сертификат без смены приватного ключа?

Да, с помощью команды openssl x509 можно подписать старый CSR-запрос тем же ключом CA, сохранив приватный ключ клиента неизменным.

Как настроить предупреждение об истечении сертификатов заранее?

Используйте скрипты мониторинга Prometheus (node_exporter + x509-certificate-exporter) или Zabbix, отслеживающие метрику дней до истечения сертификата.

Как влияет список отзыва сертификатов (CRL) на проверку?

Если в конфигурации включена директива 'crl-verify crl.pem', то при истечении срока действия самого файла crl.pem OpenVPN также заблокирует все подключения с ошибкой валидации.

Полезные материалы
Рекомендуем