Генерация ключей на OpenVPN
openvpn
vpn
build-key
Сервер крутится на ВМ c ip-адресом 192.168.96.216
Ключи клиента создаются на сервере в каталоге /etc/openvpn/easy-rsa/2.0
Создаем ключ клиента
В данном примере название ключа - andy (совпадает с именем клиента). Каждый ключ должен быть со своим именем.
Для защиты ключа паролем другая команда
Далее надо копировать ключи (ca.crt, andy.crt, andy.key, ta.key) на клиента OpenVPN, и создать файл с конфигурацией, например omega-andy.ovpnclient
dev tun
proto tcp
remote vpn.gkomega.ru 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert andy/andy.crt
key andy/andy.key
ns-cert-type server
comp-lzo
verb 3
Маршрутизация
Для прокладки маршрутов к нужным сетям необходимо создать файл с именем клиента (ключа) в папке /etc/openvpn/ccd/andy
# client LAN access route
push "route 192.168.0.0 255.255.255.0"
push "route 192.168.96.0 255.255.255.0"
push "route 192.168.100.0 255.255.255.0"
push "route 192.168.102.0 255.255.255.0"
push "route 192.168.103.0 255.255.255.0"
push "route 192.168.104.0 255.255.255.0"
push "route 192.168.105.0 255.255.255.0"
push "route 10.0.2.0 255.255.255.0"
push "route 10.0.10.0 255.255.255.0"
Отзыв сертификата
Последовательность действий при отзыве сертификата:
В результате видим примерно следующее:
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=andy/emailAddress=andy@gkomega.ru
error 23 at 0 depth lookup:certificate revoked
“error 23” в последней строке, указывающую на неудавшуюся попытку проверки отозванного сертификата.
Скрипт revoke-full как раз и создает CRL (certificate revocation list) - crl.pem. Этот файл (не является секретным) должен быть скопирован в каталог, видимый OpenVPN сервером, а путь к нему прописан в конфиге server.conf.
Теперь при подключении, все клиентские сертификаты будут проверяться на наличие в CRL, и если таковое будет найдено, в соединении будет отказано.
При использовании crl-verify в OpenVPN, CRL-файл перечитывается по умолчанию каждый час.
Таким образом, если в момент добавления сертификата в исключения, клиент уже установил связь, то он будет продолжать работу.
Чтобы изменения применились наверняка перезапустите демон OpenVPN сервера.
При отзыве сертификата бывает ещё ошибка такого вида:
Решается комментированием следующих строчек в 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
Возможно сгенерировать новую пару сертификат/ключ с тем же именем, как у отозванного ранее сертификата.
Например в случае, когда пользователь забыл свой пароль на предыдущий сертификат, и его отозвали по этой причине.
Просмотр отозванных сертификатов: