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

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 Before — Not 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 также заблокирует все подключения с ошибкой валидации.

Telegram Telegram Max Max Позвонить Позвонить E-mail E-mail