Ошибка OpenVPN: VERIFY ERROR certificate has expired — как исправить
Симптомы ошибки истечения срока сертификата
Внезапно все или отдельные сотрудники теряют доступ к VPN. При попытке подключения значок горит желтым, а в логе клиента появляется критическая ошибка:
TLS_ERROR: BIO read tls_read_plaintext error
TLS Error: TLS object -> incoming plaintext read error
VERIFY ERROR: depth=0, error=certificate has expired: C=RU, ST=MSK, O=ITSTM, CN=client_alex
TLS_ERROR: TLS handshake failed| Тип просроченного сертификата | Масштаб проблемы | Что произошло |
|---|---|---|
| Client Certificate (CN=client_name) | Не может подключиться только один конкретный человек | Истек 2- или 3-летний срок действия персонального ключа сотрудника |
| Server Certificate (CN=server) | Не могут подключиться все сотрудники компании | Истек срок действия основного сертификата сервера OpenVPN |
| CA Certificate (CN=Easy-RSA CA) | Полный отказ всей инфраструктуры VPN | Истек срок действия корневого удостоверяющего центра (обычно 10 лет) |
Шаг 1. Первым делом проверьте системные часы (Дата и Время)!
Частая глупая ошибка: Сертификаты привязаны к точному мировому времени UTC. Если на роутере села батарейка BIOS (RTC) и время сбросилось на 1970 или 2000 год, система посчитает абсолютно любые сертификаты недействительными!
# Проверяем точное время на сервере Linux:
date
# Если время неверное, синхронизируем через NTP:
sudo timedatectl set-ntp true
sudo timedatectlШаг 2. Как узнать точную дату окончания сертификата
Проверьте срок годности файла сертификата через утилиту openssl:
openssl x509 -in client_alex.crt -noout -datesВ выводе строка notAfter=Feb 23 12:00:00 2025 GMT покажет точный дедлайн.
Шаг 3. Перевыпуск просроченного клиентского сертификата (Easy-RSA 3)
- Зайдите на сервер OpenVPN в папку центра сертификации:
cd /etc/openvpn/easy-rsa/ - Сделайте отзыв старого ключа и удалите старую запись:
./easyrsa revoke client_alex
# Генерируем новый сертификат на новый срок:
./easyrsa build-client-full client_alex nopass- Заберите новый сгенерированный файл
client_alex.crtиз папкиpki/issued/и замените его в конфигурации.ovpnу пользователя.
Шаг 4. Если истек сертификат сервера (Server Certificate)
cd /etc/openvpn/easy-rsa/
# Перевыпускаем серверный сертификат:
./easyrsa build-server-full server nopass
# Копируем новый сертификат в рабочую папку OpenVPN:
sudo cp pki/issued/server.crt /etc/openvpn/
sudo cp pki/private/server.key /etc/openvpn/
# Перезапускаем службу OpenVPN:
sudo systemctl restart openvpn@server Частые вопросы (FAQ)
Нужно ли перевыпускать ключи всем сотрудникам, если обновился сертификат сервера?
Нет! Если корневой сертификат CA (ca.crt) остался прежним, перевыпускать клиентские ключи не нужно: клиенты автоматически примут новый серверный сертификат, подписанный доверенным CA.
Что делать, если истек корневой сертификат CA (ca.crt)?
Это самый тяжелый случай: придется заново инициализировать PKI (easyrsa init-pki), выпускать новый корневой CA, новый серверный сертификат и заново перевыпускать и раздавать файлы всем без исключения клиентам.
Как продлить срок действия сертификатов при выпуске до 10 лет?
Перед генерацией откройте файл easy-rsa vars и пропишите: set_var EASYRSA_CERT_EXPIRE 3650 (число дней действия клиентских ключей).
Почему после перевыпуска серверного ключа служба OpenVPN не запускается?
Проверьте права на созданные файлы: sudo chown -R root:root /etc/openvpn/ и права на закрытый ключ: sudo chmod 600 /etc/openvpn/server.key.