Поднимаем VPN на VPS. Часть 6. Отзыв пользовательских сертификатов

Поднимаем 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"

Часть 1. Введение

Часть 2. Выбор хостинга и аренда VPS

Часть 3. Настройка SSH (вход по сертификату)

Часть 4. Настройка OpenVPN

Часть 5. Настройка клиентов

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


Больше информации об анонимности и безопасности личных данных в сети на канале Шифропанк