Введение
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
Запустим XCA:
Меню "Пуск" → Утилиты → Цифровые сертификаты XCA
Настройка
Создание новой базы данных
Файл→ Новая база данных (Ctrl+N) и сохраняем ее в удобном для Вас месте
Создание ключа УЦ
Создаем ключ УЦ: Раздел "Закрытые ключи"→ "Новый ключ", назовем его CAkey, Keytype выбираем RSA, Keysize 2048 bit.
Создание сертификата УЦ
Создаем сертификат УЦ: раздел "Сертификаты" → "Новый сертификат" согласно нижеуказанным скриншотам: