OpenVPN - пытается проверить CRL на сертификате клиента

Я использую OpenVPN на аппаратном маршрутизаторе под управлением OpenWRT. Каждый раз, когда клиент подключается, я получаю следующую ошибку в журналах:

VERIFY WARNING: depth=0, unable to get certificate CRL

У меня есть двухуровневый CA с обоими уровнями, публикующими CRL, и объединенный CRL, доступный на маршрутизаторе, и OpenVPN, использующий его.

Я запутался, почему OpenVPN пытается получить CRL на глубине 0, который является сертификатом клиента. Он не жалуется на глубину 1 и 2, что указывает на то, что мой файл CRL в порядке...

1 ответ

Решение

Кажется, что более поздние версии OpenVPN не понимают несколько CRL, закодированных PEM в одном файле.

Если вы отредактируете свой CRL-файл так, чтобы он содержал только CRL клиентского сертификата, выдавшего CA, вы увидите, что вы не получите ошибок для depth=0 и вместо этого получит ошибку для depth=1, Вы, вероятно, получите те же результаты, если поменяете порядок CRL в вашем текущем файле.

Чтобы решить эту проблему в более поздних версиях OpenVPN, вы должны использовать --capath:

--capath dir

Каталог, содержащий доверенные сертификаты (CA и CRL). Недоступно с mbed TLS.

Поместите все ваши сертификаты CA и CRL, сгенерированные вашими CA, в каталог, указанный --capath вариант. Не забудьте удалить --ca option,

Бежать c_rehash <path to certs and CRLs> генерировать хэш сертификатов и их CRL.

Перезапустите OpenVPN, и вы увидите, что в ваших журналах отсутствуют предупреждения CRL.

Примечание. Вы никогда не должны получать предупреждение CRL для depth=2 (ваш корневой CA), так как это будет самозаверяющий сертификат, а CRL для одного из них бессмыслен, потому что он будет подписан сам по себе. Но кажется, что если вы пропустите CRL корневого ЦС, он покажет предупреждение проверки для себя (depth=2) а также сертификат, который он выдал (промежуточный ЦС в depth=1). Следует только показать предупреждение для последнего.

Другие вопросы по тегам