Я запускаю OpenVPN на аппаратном маршрутизаторе, на котором запущен OpenWRT. Каждый раз, когда клиент подключается, я получаю следующую ошибку в журналах:
ПРОВЕРЬТЕ ПРЕДУПРЕЖДЕНИЕ: глубина = 0, невозможно получить CRL сертификата
У меня двухуровневый ЦС с обоими уровнями, публикующими списки отзыва сертификатов, и доступным объединенным списком отзыва сертификатов. на маршрутизаторе и OpenVPN, используя его.
Я не понимаю, почему OpenVPN пытается получить CRL на глубине 0, который является сертификатом клиента. Это не Я жалуюсь на глубины 1 и 2, что означает, что мой файл CRL в порядке ...
Похоже, что более поздние версии OpenVPN не понимают несколько закодированных PEM CRL в одном файле.
Если вы отредактируете свой CRL-файл так, чтобы он содержал только CRL выдавшего клиентский сертификат CA, вы увидите, что вы не получите ошибок для depth = 0
, а вместо этого получите ошибку для depth = 1
.Вероятно, вы получите те же результаты, если поменяете порядок списков отзыва сертификатов в текущем файле.
Чтобы решить эту проблему в более поздних версиях OpenVPN, вы должны использовать - capath
:
- -capath dir
Каталог, содержащий доверенные сертификаты (CA и CRL). Недоступно с mbed TLS.
Поместите все ваши сертификаты CA и CRL, сгенерированные вашими CA, в каталог, на который указывает параметр - capath
. Не забудьте удалить опцию - ca
.
Запустите c_rehash <путь к сертификатам и CRL>
, чтобы сгенерировать хэш сертификатов и их списков отзыва сертификатов.
Перезапустите OpenVPN и вы должны обнаружить, что в ваших журналах нет предупреждений CRL.
Примечание: Вы никогда не должны получать предупреждение CRL для depth = 2
(ваш корневой ЦС), поскольку это будет самозаверяющий сертификат. и CRL для одного из них бессмысленен, потому что он будет подписан сам по себе. Но кажется, что если вы опустите CRL корневого CA, он покажет предупреждение проверки для себя ( depth = 2
), а также выданный им сертификат (промежуточный CA на depth = 1
]). Он должен показывать предупреждение только для последнего.