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

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

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

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

Ошибка OpenVPN: VERIFY_ERROR: depth=0, error=self signed certificate in cert chain

Обновлено: 24.08.2026 · Официальная документация ↗
  • Клиент или сервер прерывает TLS-рукопожатие с фатальной ошибкой: TLS_ERROR: BIO read tls_read_plain_content: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed.
  • В журнале OpenVPN регистрируется запись VERIFY ERROR: depth=0, error=self signed certificate in certificate chain: /CN=server.
  • Соединение сбрасывается сразу после отправки Control Channel: Initialized TLS v1.3.
  • Клиентские устройства не могут завершить авторизацию и уходят в бесконечный цикл реконнекта.

1. Проверка цепочки доверия и файла CA

Ошибка возникает, когда представленный сертификат подписан сам собой или не доверен корневым CA, указанным в директиве ca.

# Проверка соответствия клиентского сертификата корневому CA
openssl verify -CAfile /etc/openvpn/ca.crt /etc/openvpn/client.crt

# Проверка соответствия открытого ключа сертификата и приватного ключа
openssl x509 -noout -modulus -in /etc/openvpn/client.crt | openssl md5
openssl rsa -noout -modulus -in /etc/openvpn/client.key | openssl md5

Хэши MD5 должны быть строго идентичны.

2. Проверка и исправление параметров в конфиге клиента (.ovpn)

Убедитесь, что в конфигурационном файле клиента указан корректный корневой сертификат Удостоверяющего Центра (CA), а не сам сертификат сервера:

client
dev tun
proto udp
remote vpn.company.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun

# Проверьте правильность секций
<ca>
-----BEGIN CERTIFICATE-----
# Вставьте содержимое ca.crt (Root CA), выпустившего server.crt
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
# Сертификат конкретного клиента
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
# Приватный ключ клиента
-----END PRIVATE KEY-----
</key>

3. Настройка валидации имени сервера

Если сертификат выпущен корректно, добавьте явную валидацию Common Name:

remote-cert-tls server
verify-x509-name 'server_common_name' name
💡 Практика специалистов: Частая ошибка при ручной генерации PKI через Easy-RSA — копирование файла server.crt вместо ca.crt в поле клиентского профиля. Удостоверьтесь, что в блоке находится именно Root CA (Basic Constraints: CA:TRUE).

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

Что означает depth=0 в тексте ошибки?

Depth=0 указывает, что ошибка валидации произошла на уровне самого конечного сертификата (сервера или клиента), а не вышестоящего промежуточного или корневого CA (depth=1, 2).

Можно ли временно отключить проверку сертификата для тестов?

В OpenVPN нет безопасного способа отключить валидацию сертификата CA в боевом режиме TLS, однако директива tls-cert-profile insecure может разрешить устаревшие алгоритмы хеширования.

Почему ошибка появляется после перевыпуска сертификата сервера?

Если новый серверный сертификат был перевыпущен с новым Root CA, старые клиенты с прежним блоком <ca> не смогут его верифицировать до обновления конфигурационного файла.

Как проверить дату истечения срока действия сертификата через CLI?

Выполните команду: openssl x509 -enddate -noout -in /etc/openvpn/server.crt.

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