Отзыв пользовательских сертификатов OpenVPN

Декабрь, 09th 2009
Рубрика: *NIX
Подписаться на комментарии по RSS

В предыдущих статьях на тему OpenVPN я рассказывал как настроить openVPN сервер и клиентов для него с использованием личных сертификатов пользователей. Остался не раскрытым вопрос, что делать в случае если требуется отказать какому-либо клиенту в доступе по его сертификату. Причины могут разными - закрытый ключ, связанный с сертификатом скомпрометирован или украден, пользователь забыл пароль на ключ, либо просто хотите прекратить доступ данного человека в вашу сеть. Решением этой задачи является создание списка отзыва сертификатов (Certificate Revocation List - CRL), в котором перечисляются отозванные вами клиентские сертификаты и руководствуясь которым сервер будет отклонять запросы.

В качестве примера, отзовём сертификат пользователя client2. Пример будет для Linux/BSD/Unix.

cd /usr/local/etc/openvpn
. ./vars
./revoke-full client2

В результате видим примерно следующее:

Using configuration from /usr/local/etc/openvpn/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Revoking Certificate 04.
Data Base Updated

или

Using configuration from /usr/local/etc/openvpn/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
client2.crt: /C=RU/ST=NN/O=TEST/CN=client2/emailAddress=me@myhost.ru
error 23 at 0 depth lookup:certificate revoked

Обратите внимание на "Ошибку 23" в последней строке, указывающую на неудавшуюся попытку проверки отозванного сертификата. Скрипт revoke-full как раз и создает CRL (certificate revocation list) - crl.pem. Этот файл (не является секретным) должен быть скопирован в каталог, видимый OpenVPN сервером, а путь к нему прописан в конфиге server.conf.

crl-verify /usr/local/etc/openvpn/crl.pem

Теперь при подключении, все клиентские сертификаты будут проверяться на наличие в CRL, и если таковое будет найдено, в соединении будет отказано. При использовании crl-verify в OpenVPN, CRL-файл перечитывается по умолчанию каждый час. Таким образом, если в момент добавления сертификата в исключения, клиент уже установил связь, то он будет продолжать работу. Чтобы изменения применились наверняка перезапустите демон OpenVPN сервера.

При отзыве сертификата бывает ещё ошибка такого вида:

error on line 282 of config file '....openvpn/easy-rsa/openssl.cnf'

Решается комментированием следующих строчек в openssl.cnf:

#[ pkcs11_section ]
#engine_id = pkcs11
#dynamic_path = /usr/lib/engines/engine_pkcs11.so
#MODULE_PATH = $ENV::PKCS11_MODULE_PATH
#PIN = $ENV::PKCS11_PIN
#init = 0

Напоследок замечу, что возможно сгенерировать новую пару сертификат/ключ с тем же именем, как у отозванного ранее сертификата. Например в случае, когда пользователь забыл свой пароль на предыдущий сертификат, и его отозвали по этой причине.

Если вы считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

Комментариев: 1

  1. 2014-01-31 в 11:37:11 | Комментатор 50]]>avatar]]>

    Познавательно, а то как-то не очень вопрос этот раскрыт на других сайтах. Везде описано только как поднять сервер.

comments powered by HyperComments
Без регистрации
ваш комментарий будет опубликован после проверки
Регистрация на сайте

На указанный адрес будет отправлено письмо с кодом активации. Вы можете настроить собственный профиль и стать активным участником или автором.