Введение
OpenVPN — кроссплатформенное, гибкое и удобное решение для организации VPN.
Для допуска в виртуальную сеть, построенную на базе OpenVPN, клиент должен авторизоваться. В OpenVPN это можно сделать 3 способами:
- по логину и паролю
- по ключу и сертификату в файлах ( См. Управление сертификатами и ключами для клиентов OpenVPN)
- по ключу и сертификату на «борту» криптографического USB-токена или смарт-карты
В статье будет описана авторизация в OpenVPN с помощью криптографического USB-токена Рутокен ЭЦП. Рутокен ЭЦП надежно защищен PIN-кодом от несанкционированного доступа и блокируется при исчерпании попыток ввода PIN-кода, поэтому злоумышленник не попадет в VPN даже в случае кражи токена. Кроме того, в Рутокен ЭЦП аппаратно реализованы алгоритмы ГОСТ и RSA, поэтому аутентификация производится «на борту» токена. Благодаря этому закрытый ключ никогда не покидает токен и его невозможно украсть из оперативной памяти компьютера с помощью троянов.
В статье будет показано, как развернуть тестовый VPN, а также корпоративный УЦ на базе приложения XCA. С помощью УЦ будет создан ключ и сертификат сервера OpenVPN и произведена инициализация токена клиента. Затем настроим клиент OpenVPN таким образом, чтобы пользователь мог авторизоваться в OpenVPN с помощью Рутокен ЭЦП.
За основу взята статья http://habrahabr.ru/company/aktiv-company/blog/137306/
Стенд с сервером OpenVPN и XCA поднят на Astralinux Smolensk 1.6 update 2
Установка и настройка удостоверяющего центра
Установка
Для начала установим системные компоненты и утилиты, необходимые для работы Рутокен ЭЦП и XCA:
sudo apt-get install libccid libpcsclite1 pcscd xca
Для установки библиотеки librtpkcs11ecp.so следует перейти по указанной ссылке и скачать необходимую версию:
https://www.rutoken.ru/support/download/pkcs/
sudo dpkg -i librtpkcs11ecp_1.8.2.0-1_amd64.deb
Запустим XCA:
Меню "Пуск" → Утилиты → Цифровые сертификаты XCA
Настройка
Создание новой базы данных
Файл→ Новая база данных (Ctrl+N) и сохраняем ее в удобном для Вас месте
Создание ключа УЦ
Создадим ключ УЦ: Раздел "Закрытые ключи"→ "Новый ключ", назовем его CAkey, Keytype выбираем RSA, Keysize 2048 bit.
Создание сертификата УЦ
Создадим сертификат УЦ: раздел "Сертификаты" → "Новый сертификат" согласно нижеуказанным скриншотам:
Создание сертификата сервера OpenVPN
Создадим ключ сервера OpenVPN: раздел "Закрытые ключи" → "Новый ключ", назовем его Openvpnkey, Keytype - RSA, Keysize - 2048 bit.
Создадим сертификат сервера: раздел "Сертификаты"→ "Сертификаты" согласно представленным скриншотам.
Создание сертификата клиента на Рутокен ЭЦП
Подключение библиотеки pkcs#11
Для работы с Рутокен ЭЦП, утилите XCA нужно указать библиотеку PKCS#11 АктивСофта.
Для этого указываем путь к ней: Файл → Опции → PKCS#11 provider → "Добавить" и указываем путь до библиотеки pkcs11(/opt/aktivco/rutokenecp/x86_64/librtpkcs11ecp.so)
Генерация ключей на Рутокен ЭЦП
Далее подключаем Рутокен ЭЦП и создаем ключ «на борту» Рутокен ЭЦП: раздел "Закрытые ключи" → "Новый ключ" → назовем его Clientkey, Keytype - RSA(!) на рутокене, Keysize - 2048 bit.
По запросу вводим PIN-код.
Создание сертификата клиента
Когда XCA предложит сохранить сертфикат на токен, нажимаем «Да» и вводим PIN-код.
Далее экспортируем сертификат УЦ в файл CA.crt, сертификат сервера в файл Openvpn.crt и ключ сервера в файл openvpn.pem (Закрытые ключи→ Экспорт, Сертификаты → Экспорт) и сохраним их к примеру в своей домашней директории.
Установка и настройка OpenVPN
Устанавливаем OpenVPN:
|
6. Создаем файл с параметрами алгоритма Диффи-Хелмана:
|
7. Создаем конфигурационный файл сервера OpenVPN:
|
У нас, например, он выглядит так:
|
8. Запускаем сервер OpenVPN:
|