В качестве примера, отзовём сертификат пользователя 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
Напоследок замечу, что возможно сгенерировать новую пару сертификат/ключ с тем же именем, как у отозванного ранее сертификата. Например в случае, когда пользователь забыл свой пароль на предыдущий сертификат, и его отозвали по этой причине.
Комментариев нет:
Отправить комментарий