Перейти к содержимому

6.2.2 JaCarta PKI для OpenVPN Linux

USB-токены и смарт-карты JaCartaИнтеграцииUSB-токены и смарт-карты JaCarta

Данное руководство описывает процесс конфигурирования OpenVPN для возможности использования носителей JaCarta® PKI в качестве средства двухфакторной аутентификации. Руководство подразумевает, что существует работающая клиент-серверная инфраструктура, для которой настраивается поддержка JaCarta PKI. В руководстве не рассматриваются прочие настройки, косвенно связанных с работой OpenVPN, как например, сетевые настройки, настройки таблиц маршрутизации или файервола.

Linux-система с установленными пакетами:

  1. xca

  2. openssl

  3. libccid

  4. pcscd

  5. Единый Клиент JaCarta 3.1 или выше (jacarauc-3.1.xxx)

Linux-система с установленными пакетами:

  1. openvpn

  2. openssl

Linux-система с установленными пакетами:

  1. openvpn

  2. openssl

  3. Единый Клиент JaCarta 1 или выше (jacarauc-3.1.xxx)

  4. libpkcs11-helper версии 1.26 или выше - http://ftp.de.debian.org/debian/pool/main/p/pkcs11-helper/libpkcs11-helper1_1.27-1_amd64.deb

  1. Запустите xca и создайте новую базу данных, задайте пароль.

image-2025-11-18_19-8-43.png

  1. Создайте ключ центра сертификации RSA 2048.

image-2025-11-18_19-8-56.png

  1. Создайте новый самоподписанный корневой сертификат центра сертификации. Для этого перейдите на вкладку “Сертификаты” и выберите “Новый”. Задайте шаблон нового сертификата CA, укажите данные владельца сертификата, где commonName определяет название центра сертификации. В области применения ключа выберите Digital Signature (электронная подпись), Certificate Sign (подпись сертификатов), CRL Sign (подписание списка отзыва сертификатов).

image-2025-11-18_19-10-35.png

image-2025-11-18_19-11-5.png

  1. Создайте новый ключ сервера RSA 2048 и сертификат сервера.

  2. Перейдите на вкладку “Сертификаты” и выберите “Новый”. Установите шаблон нового сертификата HTTPS_server, а также выберите сертификат подписанта — созданный сертификат центра сертификации. Укажите данные владельца сертификата, где commonName должен совпадать с именем OpenVPN-сервера. В области применения ключа укажите Digital Signature (электронная подпись), Key Agreement (согласование ключей), Key Encipherment (шифрование ключей), а в поле расширенного использования ключа — TLS Web Server Authentication.

image-2025-11-18_19-11-17.png

image-2025-11-18_19-11-31.png

  1. В настройках программы XCA выберите PKCS#11 Provider и добавьте библиотеку libjcPKCS11-2.so. Данная библиотека поставляется вместе с драйверами Единый Клиент JaCarta, и располагается в стандартной директории размещения общих библиотек, например /usr/lib/libjcPKCS11-2.so. Создайте новый ключ пользователя RSA 2048, выбрав в списке подключенный токен JaCarta PKI, введите запрашиваемый ПИН-код пользователя.

image-2025-11-18_19-11-48.png

  1. Создайте сертификат клиента. Перейдите на вкладку “Сертификаты” и выберите “Новый”. Установите шаблон нового сертификата HTTPS_client, а также выберите сертификат подписанта — созданный сертификат центра сертификации. Укажите данные владельца сертификата, где commonName должен совпадать с именем OpenVPN-клиента. В области применения ключа укажите Digital Signature (электронная подпись), Key Agreement (согласование ключей), а в поле расширенного использования ключа — TLS Web Client Authentication. Подтвердите запись сертификата на токен и введите ПИН-код.

image-2025-11-18_19-11-59.png

image-2025-11-18_19-12-9.png

Альтернативным способом создания клиентских ключей и сертификатов может быть способ, аналогичный созданию ключей и сертификатов сервера (без подключения токена), с последующим экспортом в формат *.p12 (или *.pfx) и записью на токен через ПК “Единый Клиент JaCarta”. 8. Экспортируйте сертификат центра сертификации в файл CA.crt, а ключи и сертификат сервера в server_key.pem и server.crt.

image-2025-11-18_19-12-28.png

  1. Создайте каталог для хранения ключей и сертификатов. Скопируйте в него сертификат центра сертификации, сертификат сервера, а также ключ сервера. В этом же каталоге создайте ключ Диффи-Хэллмана командой: $ openssl dhparam -out dh2048.pem 2048

  2. Создайте файл конфигурации. Например /etc/openvpn/openvpn.conf

  3. Задайте конфигурацию сервера. Укажите пути к сертификатам центра сертификации, а также ключу сервера и параметрам Диффи-Хэллмана. В данном руководстве конфигурация приводится в качестве примера.

image-2025-11-18_19-12-59.png

  1. Запустите OpenVPN-север командой:

$ openvpn —config /etc/openvpn/openvpn.conf [путь к файлу конфигурации]

  1. Создайте каталог для хранения сертификата центра сертификации и скопируйте в него сертификат центра сертификации.
  2. Создайте файл конфигурации. Например /etc/openvpn/openvpn.conf
  3. Задайте конфигурацию клиента. Укажите путь к сертификату центра сертификации. Дополнительно задайте путь до библиотеки libjcPKCS11-2.so, поставляемого вместе с драйвером Единый Клиент JaCarta, параметром pkcs11-providers. Также необходимо указать id в параметре pkcs11-id. ID представляет из себя Serialized id строку, получаемую выполнением команды: $ openvpn —show-pkcs11-ids /usr/lib/libjcPKCS11-2.so [путь до библиотеки libjcPKCS11-2.so]

image-2025-11-18_19-13-35.png

В данном руководстве конфигурация приводится в качестве примера.

image-2025-11-18_19-13-44.png

  1. Запустите OpenVPN-клиент командой:

$ openvpn —config /etc/openvpn/openvpn.conf [путь к файлу конфигурации]

  1. Если настройка выполнена без ошибок, появится запрос ПИН-кода от JaCarta PKI. После введения ПИН-кода, соединение будет установлено.