Поднимаем VPN на VPS. Часть 6. Отзыв пользовательских сертификатов
ШифропанкВ предыдущих статьях на тему OpenVPN я рассказывал как настроить openVPN сервер и клиентов для него с использованием личных сертификатов пользователей. Но так и не затронул тему, что делать в случае если требуется отказать какому-либо клиенту в доступе по его сертификату. Для решения этой задачи создадим список отзыва сертификатов (Certificate Revocation List - CRL) руководствуясь которым сервер будет отклонять запросы отозванных нами сертификатов.
В качестве примера, отзовём сертификат пользователя client1.
Переходим в директорию:
cd /etc/openvpn/easy-rsa
И пробуем отозвать сертификат пользователя client1
./vars
./revoke-full client1
Должно выдать примерно следующее:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
DEBUG[load_index]: unique_subject = "yes"
Revoking Certificate 04.
Data Base Updated
или
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
client1.crt: C = US, ST = LA, L = SanFrancisco, O = Fort-Funston, OU = MyOrganizationalUnit, CN = client1, name = server, emailAddress = me@myhost.mydomain
error 23 at 0 depth lookup:certificate revoked
Ошибка 23 указывает на неудавшуюся попытку проверки отозванного сертификата. Скрипт revoke-full как раз и создает CRL (certificate revocation list) - crl.pem. Этот файл должен быть скопирован в каталог с OpenVPN сервером, а путь к нему прописан в конфиге server.conf.
crl-verify /etc/openvpn/crl.pem
Теперь при подключении, всем клиентские сертификатам указаных в файле crl.pem, в соединении будет отказано. При использовании 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
Замечу, что после того как мы отозвали какой-либо сертификат, мы можем создать новый с тем же именем.
Весь цикл статей "Поднимаем VPN на VPS"
Часть 2. Выбор хостинга и аренда VPS
Часть 3. Настройка SSH (вход по сертификату)
Часть 6. Отзыв пользовательских сертификатов
Больше информации об анонимности и безопасности личных данных в сети на канале Шифропанк
Поддержать канал
Bitcoin: bc1qx07rnee8n78k3tac0ra690309ujyjg7hnkeu0v
Ethereum: 0xf9FCac64C6510A7DB29706f903d38FB532dfbDc0
Litecoin: LPdVENDq5ataHCqRrQnEEemVqFQmJ7aUqJ
DASH: XeLtyRNnMET2nF1gRApzBWzFoN15C2tWgj
Zcash: t1acDtEboR4oPPmAPKADNQ3tyoU11KdpqEZ
Monero: 487g4zkuCVE5n4a9pDeHLSdNCwp3nCMhp4Ki1T5UkBpWG1mVcB9ghmoUmjGXisSNaKiLhpVqZSNhvGsv3trszHhnSpW6nR5