IPsec Error: INVALID_CERTIFICATE — Недоверенный центр сертификации (Untrusted CA)
Архитектура валидации цепочки доверия X.509 и отказ INVALID_CERTIFICATE
При проверке подлинности удаленного пира в фазе IKE_AUTH устройство выполняет криптографическую валидацию предоставленного сертификата узла (End-Entity / Peer Certificate). Ошибка IKE_NOTIFY: INVALID_CERTIFICATE (код ошибки 28) или внутренняя ошибка стека Untrusted Certificate Authority / Certificate Verification Failed фиксируется в следующих случаях:
- Отсутствие корневого сертификата (Root CA): В локальном доверенном хранилище шлюза (Truststore) нет сертификата CA, подписавшего сертификат удаленного пира.
- Разрыв промежуточной цепочки (Intermediate CA missing): Удаленный пир не передал в пакете
CERT Payloadцепочку промежуточных сертификатов. - Несоответствие назначения ключа (Extended Key Usage, EKU): Сертификат не содержит расширений
IPsec IKE Intermediate(OID1.3.6.1.5.5.8.2.2),Server Authentication(OID1.3.6.1.5.5.7.3.1) илиClient Authentication(OID1.3.6.1.5.5.7.3.2). - Истекший срок действия: Дата проверки находится вне диапазона
NotBefore – NotAfter.
Бизнес-риски
Полная блокировка безопасного межфилиального взаимодействия; невозможность авторизации сотрудников через корпоративный Remote Access VPN (Cisco AnyConnect, strongSwan Client, IKEv2 Mobile).
Пошаговый регламент восстановления цепочки доверия сертификатов
Сценарий 1: Установка и назначение доверия корневым сертификатам (Trust Root CA)
Импортируйте открытый сертификат корневого удостоверяющего центра (Root CA) на все шлюзы сети и пометьте его как доверенный:
# Импорт сертификата Root CA на MikroTik RouterOS v7
/certificate import file-name=CorporateRootCA.crt
# Проверка наличия флага 'T' (Trusted) в хранилище сертификатов
/certificate print where name~"CorporateRootCA"
/certificate set [find name~"CorporateRootCA"] trusted=yesСценарий 2: Проверка и генерация сертификата с корректными EKU расширениями
Убедитесь, что конфигурационный файл OpenSSL содержит необходимые флаги для IPsec IKEv2:
# Фрагмент openssl.cnf для выпуска IPsec-сертификатов
[ v3_ipsec ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment, keyAgreement
extendedKeyUsage = serverAuth, clientAuth, 1.3.6.1.5.5.8.2.2
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = vpn.company.com
IP.1 = 198.51.100.1
# Проверка EKU готового сертификата через OpenSSL
openssl x509 -in gateway_cert.pem -noout -text | grep -A 2 "Extended Key Usage"Сценарий 3: Сборка полной цепочки (Full Chain Bundle) на Linux strongSwan
# Объединение сертификата шлюза и промежуточного CA в единый файл
cat /etc/swanctl/x509/gateway_cert.pem /etc/swanctl/x509/intermediate_ca.pem > /etc/swanctl/x509/fullchain.pem
# Копирование Root CA в каталог доверенных центров
sudo cp /tmp/RootCA.pem /etc/swanctl/x509ca/
sudo swanctl --load-credsТиповые ошибки администраторов
- Использование самоподписанного сертификата без импорта на противоположный шлюз: Самоподписанный сертификат обязан быть явно добавлен в список Trusted CA на стороне принимающего узла.
- Несовпадение Subject Alternative Name (SAN / CN) с IKE Remote ID: Если в сертификате прописан SAN
vpn.corp.com, а шлюз передает в заголовках IP-адрес, валидация имени сертификата завершится сбоем.
Эксперты ITSTM развернут отказоустойчивый CA на базе Linux Easy-RSA / Vault / Microsoft CA и автоматизируют выпуск сертификатов по SCEP/EST.
Частые вопросы (FAQ)
Почему OpenSSL проверяет сертификат успешно, а маршрутизатор выдает INVALID_CERTIFICATE?
Встроенные в микрокод роутеров криптографические библиотеки строго проверяют расширения Key Usage и Basic Constraints. Если флаг digitalSignature отсутствует, роутер отвергает сертификат.
Что делать, если системное время шлюза сбросилось на 1970 год?
Сертификат станет недействительным, так как текущая дата окажется меньше даты начала действия (NotBefore). Настройте автосинхронизацию по NTP до старта службы IPsec.
Обязательно ли указывать IP-адрес шлюза в поле Subject Alternative Name (SAN)?
Да, если удаленный пир идентифицирует ваш шлюз по IP-адресу. Если пир обращается по доменному имени, в SAN должно присутствовать соответствующее значение DNS Name.
Можно ли использовать бесплатные сертификаты Let's Encrypt для IPsec VPN?
Да, но только для протокола IKEv2 с аутентификацией по доменным именам (FQDN ID). Let's Encrypt не выдает сертификаты на сырые IP-адреса и требует ротации каждые 90 дней.