У меня есть существующий PKI, в который я пытаюсь интегрировать сервер OpenVPN. Я включил Точки распространения CRL в каждый сертификат CA в моей цепочке, и я публикую CRL в месте, доступном с моего сервера OpenVPN.
Проблема в том, что сервер OpenVPN, кажется, полностью игнорирует Точки распространения CRL продление в пользу собственного --crl-verify
вариант. Если я отзову сертификат для пользователя и опубликую новый CRL, OpenVPN с радостью продолжит разрешать этому клиенту подключение. Я не понимаю, почему OpenVPN не читает эти расширения, учитывая, что они были добавлены именно для этой цели.
Я могу придумать только два альтернативных способа проверить свои CRL:
1) У меня может быть cronjob, который копирует CRL на сервер OpenVPN и использует --crl-verify
вариант. Но поскольку у меня есть цепочка центров сертификации, как мне собрать все списки отзыва сертификатов в один файл? Если я использую режим папки --crl-verify
, проблема в том, что каждый ЦС в цепочке имеет свою собственную схему серийных номеров?
2) Я старался избегать вызова каких-либо внешних скриптов в пользу использования только встроенных вещей, исходя из предположения, что чем больше я делаю вручную, тем больше вероятность того, что я введу слабые места в безопасности. Я ошибся? Правильный ли вариант - написание собственного сценария для проверки моих списков отзыва сертификатов?
Есть ли способ заставить OpenVPN проверить Точки распространения CRL включены в мою цепочку сертификатов, желательно с использованием механизма, встроенного в сам OpenVPN?
РЕДАКТИРОВАТЬ: Было бы также неплохо узнать, есть ли какие-либо способы сделать это и на стороне клиента (то есть, чтобы клиенты могли проверить действительность сертификата сервера OpenVPN). Было бы намного проще, если бы --crl-verify
взял URL.
Я считаю, что вы правы, что OpenVPN не имеет этой функции.
Что касается того, почему, у меня нет ответа, кроме общего мнения, что OpenVPN чаще всего настраивается с их собственными, довольно упрощенными easy-rsa для выделенной PKI.
Не похоже, что --crl-verify ...
будет хорошо работать с CRL для нескольких центров сертификации.
Однако, если вы используете --capath dir
скорее, чем --ca file
для настройки центров сертификации capath
опция ожидает как сертификат CA, так и CRL в этом каталоге. Я считаю, что это будет приемлемый вариант, если вы будете регулярно экспортировать CRL на сервер OpenVPN.
Другой вариант, и я согласен с тем, что вы должны быть осторожны с тем, как он реализован, - это подключить скрипт.
Вы можете использовать --tls-verify cmd
крючок в сочетании с --tls-export-cert directory
и peer_cert
переменная окружения.
Это позволит вашему настраиваемому сценарию с сертификатом однорангового узла сказать последнее слово о том, будет ли рукопожатие TLS успешно или нет.
(См. Вышеупомянутые параметры конфигурации в руководство для подробностей.)