Аннотация
Данное руководство описывает процесс конфигурирования OpenVPN для возможности использования носителей JaCarta PKI в качестве средства двухфакторной аутентификации. Руководство подразумевает, что существует работающая клиент-серверная инфраструктура, для которой настраивается поддержка JaCarta PKI. В руководстве не рассматриваются прочие настройки, косвенно связанных с работой OpenVPN, как например, сетевые настройки, настройки таблиц маршрутизации или файервола.
Описание демо-стенда
Центр сертификации
Linux-система с установленными пакетами:
xca
openssl
libccid
pcscd
Единый Клиент JaCarta 3.1 или выше (jacarauc-3.1.xxx)
Сервер OpenVPN
Linux-система с установленными пакетами:
openvpn
openssl
Клиент OpenVPN
Linux-система с установленными пакетами:
openvpn
openssl
Единый Клиент JaCarta 1 или выше (jacarauc-3.1.xxx)
libpkcs11-helper версии 1.26 или выше - http://ftp.de.debian.org/debian/pool/main/p/pkcs11-helper/libpkcs11-helper1_1.27-1_amd64.deb
Настройка центра сертификации
- Запустите xca и создайте новую базу данных, задайте пароль.
2. Создайте ключ центра сертификации RSA 2048.
3. Создайте новый самоподписанный корневой сертификат центра сертифкации. Для этого перейдите на вкладку сертификаты, и выберете «новый». Задайте шаблон нового сертификата CA, укажите данные владельца сертификата, где commonName указывает название центра сертификации. В области применения ключа выберете Digital Signature (электронная подпись), Certificate Sign (подпись сертификатов), CRL Sign (подписание списка отзыва сертификатов).
4. Создайте новый ключ сервера RSA 2048 и сертификат сервера.
5. Перейдите на вкладку сертификаты и выберете «новый». Установите шаблон нового сертификата HTTPS_server, а также выберите сертификат подписанта – созданный сертификат центра сертификации. Укажите данные владельца сертификата, где commonName должен совпадать с именем OpenVPN-сервера. В области применения ключа укажите Digital Signature (электронная подпись), Key Agreement (согласование ключей), Key Encipherment (шифрование ключей), укажите TLS Web Server Authentication в поле расширенного использования ключа.
6. В настройках программы XCA выберите PKCS#11 Provider и добавьте библиотеку libjcPKCS11-2.so. Данная библиотека поставляется вместе с драйверами Единый Клиент JaCarta, и располагается в стандартной директории размещения общих библиотек, например /usr/lib/libjcPKCS11-2.so. Создайте новый ключ пользователя RSA 2048, выбрав в списке подключенный токен JaCarta PKI, введите запрашиваемый ПИН-код пользователя.
7. Создайте сертификат клиента. Перейдите на вкладку сертификаты и выберете «новый». Установите шаблон нового сертификата HTTPS_client, а также выберите сертификат подписанта – созданный сертификат центра сертификации. Укажите данные владельца сертификата, где commonName должен совпадать с именем OpenVPN-клиента.В области применения ключа укажите Digital Signature (электронная подпись), Key Agreement (согласование ключей), укажите TLS Web Client Authentication в поле расширенного использования ключа. Согласитесь записать сертификат на токен, введите ПИН-код.
8. Экспортируйте сертификат центра сертификации в файл CA.crt, а ключи и сертификат сервера в server_key.pem и server.crt.
Настройка сервера OpenVPN
- Создайте каталог для хранения ключей и сертификатов. Скопируйте в него сертификат центра сертификации, сертификат сервера, а также ключ сервера. В этом же каталоге создайте ключ Диффи-Хэллмана командой:
$ openssl dhparam -out dh2048.pem2048 - Создайте файл конфигурации. Например /etc/openvpn/openvpn.conf
- Задайте конфигурацию сервера. Укажите пути к сертификатам центра сертификации, а также ключу сервера и параметрам Диффи-Хэллмана. В данном руководстве конфигурация приводится в качестве примера.
4. Запустите OpenVPN-север командой:
Настройка клиента OpenVPN
- Создайте каталог для хранения сертификата центра сертификации и скопируйте в него сертификат центра сертификации.
- Создайте файл конфигурации. Например /etc/openvpn/openvpn.conf
- Задайте конфигурацию клиента. Укажите путь к сертификату центра сертификации. Дополнительно задайте путь до библиотеки libjcPKCS11-2.so, поставляемого вместе с драйвером Единый Клиент JaCarta, параметром pkcs11-providers. Также необходимо указать id в параметре pkcs11-id. ID представляет из себя Serialized id строку, получаемую выполнением команды:В данном руководстве конфигурация приводится в качестве примера.
$ openvpn --show-pkcs11-ids /usr/lib/libjcPKCS11-2.so [путь до библиотеки libjcPKCS11-2.so]
4. Запустите OpenVPN-клиент командой:
$ openvpn --config /etc/openvpn/openvpn.conf [путь к файлу конфигурации]5. Если настройка выполнена без ошибок, появится запрос ПИН-кода от JaCarta PKI. После введения ПИН-кода, соединение будет установлено.












