Я использовал easy-rsa/2.0
программы для создания сертификатов сервера и клиента для OpenVPN. Копировал клиентские клиентам вместе с ca.crt
. Все хорошо.
Теперь мне нужно отозвать клиентский сертификат с украденного ноутбука. В /usr/share/doc/openvpn/examples/easy-rsa/2.0
есть сценарий отзыва. Я запустил это успешно, и он говорит: «База данных обновлена». Он создал несколько файлов в подкаталоге папки examples / doc.
Я скопировал созданный crl.pem
к /etc/openvpn/crl.pem
и я добавил crl-verify /etc/openvpn/crl.pem
к server.conf
.
Есть ли способ проверить, что я поступил правильно и что он действительно заблокирует доступ?
Кроме того, мне непонятно, где хранится эта «База данных» или к чему она относится? Есть ли способ проверить эту базу данных?
В каталоге easy-rsa есть файл revoke-full. Когда вы запускаете этот скрипт с вашим пользователем / ключом в качестве параметра, файл index.txt в каталоге easy-rsa / keys будет обновлен.
Вы увидите букву «R» (отозвано) в первом столбце слева для вашего пользователя.
На моем сервере у меня не было сценариев easy-rsa, но вы можете отозвать клиентские сертификаты OpenVPN без easy-rsa вручную, используя openssl
.
Много информации взято из этот полезный ресурс но если ваш сервер OpenVPN настроен так же, как мой, центр сертификации настраивается вместе с настройками сервера OpenVPN с клиентскими сертификатами, сгенерированными на сервере (я использую Ansible + Sovereign для настройки сертификатов для нескольких пользователей одновременно).
# as root in /etc/openvpn
openssl ca -config openssl-server-certificate.cnf -revoke /path/to/client.crt
Это отменит сертификат и обновит базу данных, но вам все равно нужно убедиться, что OpenVPN проверяет список отзыва сертификатов, поэтому отредактируйте server.conf
и проверьте наличие строки, начинающейся с crl-verify
. Если вы его не нашли, добавьте его:
crl-verify /usr/share/openvpn/openssl-server.crl
(Вы можете использовать любой путь по своему усмотрению, но большинство серверов OpenVPN настроены для работы как nobody:nobody
поэтому вам понадобится путь, который является исполняемым файлом всего мира, а не /etc/openvpn
)
И, наконец, скажите OpenSSL восстановить список отзыва
openssl ca -config openssl-server-certificate.cnf -gencrl -out /usr/share/openvpn/openssl-server.crl
(или там, где находится ваш список отзыва). Перезапустите службу OpenVPN, и она должна внести изменения в конфигурацию и использовать CRL при проверке запросов на соединение - если сертификат отозван, соединение будет разорвано.
Использовать
./list-crl
из каталога easy-rsa для отображения серийных номеров отозванных сертификатов.
Также проверьте журналы openvpn на наличие сообщения «CRL CHECK FAILED».