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
). Следует только показать предупреждение для последнего.