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

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

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

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

Развертывание Центра Сертификации (Easy-RSA 3) для корпоративной PKI и VPN

Обновлено: 25.08.2026 · Официальная документация ↗
  • Истечение срока действия корневого сертификата CA или клиентских сертификатов, приводящее к остановке VPN-шлюзов.
  • Ошибки валидации: VERIFY ERROR: depth=0, error=certificate has expired или self-signed certificate in chain.
  • Невозможность оперативно отозвать скомпрометированный сертификат уволенного сотрудника.
  • Хранение приватного ключа корневого CA на публичном интернет-сервере (угроза компрометации всей сети).

1. Изоляция инфраструктуры открытых ключей (PKI)

Корневой удостоверяющий центр (Root CA) должен быть развернут на изолированном от сети хосте (Offline CA). На рабочий VPN-сервер копируются только публичный сертификат ca.crt, список отозванных сертификатов crl.pem и сгенерированные серверные ключи.

2. Инициализация PKI и создание Корневого CA

# Установка утилиты
apt-get install -y easy-rsa
make-cadir /opt/vpn-ca
cd /opt/vpn-ca

# 1. Настройка переменных в файле vars
cat << 'EOF' > vars
set_var EASYRSA_ALGO          "ec"
set_var EASYRSA_CURVE         "prime256v1"
set_var EASYRSA_CA_EXPIRE     3650
set_var EASYRSA_CERT_EXPIRE   825
set_var EASYRSA_CRL_DAYS      180
EOF

# 2. Инициализация чистого PKI хранилища
./easyrsa init-pki

# 3. Выпуск корневого сертификата CA (с запросом пароля)
./easyrsa build-ca

3. Выпуск сертификата для VPN-сервера

# Генерация запроса и ключа без пароля (nopass)
./easyrsa gen-req vpn-server-hq nopass

# Подпись серверного сертификата
./easyrsa sign-req server vpn-server-hq

4. Выпуск клиентского сертификата пользователя

# Генерация запроса для сотрудника
./easyrsa gen-req ivan_petrov nopass

# Подпись сертификата с ролью 'client'
./easyrsa sign-req client ivan_petrov

5. Процедура отзыва сертификата (Revocation) и генерация CRL

# 1. Отзыв скомпрометированного сертификата
./easyrsa revoke ivan_petrov

# 2. Генерация обновленного списка отзыва (Certificate Revocation List)
./easyrsa gen-crl

# 3. Копирование crl.pem на рабочий VPN сервер
scp /opt/vpn-ca/pki/crl.pem root@vpn.corp.ru:/etc/openvpn/crl.pem

6. Подключение проверки CRL в OpenVPN

# В server.conf добавьте директиву:
crl-verify /etc/openvpn/crl.pem
💡 Практика специалистов: Никогда не храните приватный ключ ca.key на самом VPN-сервере. Держите его на защищенной рабочей станции администратора или внешнем зашифрованном носителе.

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

Почему рекомендуется использовать криптографию на эллиптических кривых (ECDSA)?

Сертификаты на базе эллиптических кривых (например, prime256v1) обеспечивают ту же криптостойкость, что и RSA 3072-bit, но имеют меньший размер ключа, что в разы ускоряет рукопожатие IKE/TLS и снижает оверхед.

Что произойдет, если истечет срок действия файла crl.pem?

Если срок действия CRL (параметр EASYRSA_CRL_DAYS) истечет, сервер OpenVPN из соображений безопасности начнет отклонять подключения ВСЕХ клиентов с ошибкой 'CRL has expired'.

Как автоматизировать обновление CRL на боевых серверах?

Настройте systemd-таймер или cron, который еженедельно запускает ./easyrsa gen-crl на CA и безопасно синхронизирует файл crl.pem на VPN-шлюзы через rsync/SSH.

Зачем нужны флаги назначения сертификата (server / client)?

Расширение X509 Extended Key Usage строго разграничивает назначение ключей (Server Auth / Client Auth), предотвращая атаку 'человек посередине', если клиент попытается выдать свой ключ за серверный.

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