JaCarta PKI и OpenVPN для Windows +8


В настоящей статье описывается процесс настройки двухфакторной аутентификации по смарт-картам и USB-токенам JaCarta PKI на основе цифровых сертификатов X.509 в OpenVPN.

Данное решение позволяет отказаться от парольной аутентификации пользователя. Внедрение настоящего решения — это кардинальное снижение влияния человеческого фактора на безопасность системы.

Об OpenVPN


OpenVPN — свободная реализация технологии Виртуальной Частной Сети (VPN) с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами. Она позволяет устанавливать соединения между компьютерами, находящимися за NAT-firewall, без необходимости изменения их настроек.

О JaCarta PKI


JaCarta PKI — это линейка PKI-токенов производства компании «Аладдин Р.Д.» для строгой аутентификации пользователей в корпоративных системах, безопасного хранения ключевых контейнеров программных СКЗИ и цифровых сертификатов.


Ход настройки


Описание демо-стенда


  • Сервер — Microsoft Windows Server 2012, OpenVPN.
  • Клиент — Microsoft Windows 8.1 с установленным драйвером «Единый Клиент JaCarta» версии 2.9 или выше, OpenVPN.

Настоящая инструкция описывает процесс настройки простейшего сценария VPN-соединения между клиентом и сервером. Построение сложных сетей в данной инструкции не рассматривается.

ПО «Единый Клиент JaCarta» — программный комплекс, предназначенный для работы со всеми моделями токенов и смарт-карт JaCarta и eToken.

Настройка сервера


Для возможности аутентификации в OpenVPN по цифровому сертификату необходимо, чтобы клиент и сервер имели цифровые сертификаты, выданные доверенным центром сертификации. Клиент должен доверять сертификату сервера, а сервер – сертификату клиента.

Нарушение доверия к сертификату сервера или клиента приведет к невозможности установки VPN-соединения.

Рассмотрим процесс выпуска ключей и сертификатов с использованием средств, предлагаемых самим OpenVPN.

Перейдите в каталог easy-rsa, который находится в установочной директории OpenVPN и запустите init-config.bat. В результате работы создастся файл vars.bat, который необходимо отредактировать для адаптации к вашему окружению:

set HOME=%ProgramFiles%\OpenVPN\easy-rsa – задайте рабочий каталог
set KEY_CONFIG=openssl-1.0.0.cnf – задайте конфигурационный файл Openssl
set KEY_DIR=keys – задайте каталог для хранения ключей
set KEY_SIZE=1024 – установите размер ключа
set KEY_COUNTRY=US – укажите страну
set KEY_PROVINCE=CA – укажите область
set KEY_CITY=SanFrancisco – укажите город
set KEY_ORG=OpenVPN – укажите название организации
set KEY_EMAIL=mail@host.domain – укажите e-mail
set KEY_CN=changeme – укажите общее имя (common name)
set KEY_NAME=changeme – укажите имя
set KEY_OU=changeme – укажите подразделение организации

Следующие секции оставьте без изменений:

set PKCS11_MODULE_PATH=changeme – путь к модулю pkcs#11
set PKCS11_PIN=1234 – ПИН-код к смарт-карте

Необходимо сгенерировать ключи для TLS. Создайте пустые файлы для хранения индексов и серийных номеров. Для этого запустите (выполняется один раз):

  • vars.bat;
  • clean-all.bat.

Сгенерируйте ключ Удостоверяющего центра (выполняется один раз). Запустите:

  • vars.bat;
  • build-ca.bat.

В диалоге укажите имя желаемого Удостоверяющего центра.

Сгенерируйте файл для ключей Диффи-Хэллмана (только для сервера, выполняется один раз).

Запустите:

  • vars.bat;
  • build-dh.bat.

Сгенерируйте приватный ключ и сертификат сервера.

Запустите:

  • vars.bat;
  • build-key-server.bat <имя машины>.

В результате будут сгенерированы ключ и сертификат с именем машины (сервера).

Теперь необходимо создать ключи и сертификаты для клиентских машин. Сгенерируйте файл PKCS#12 для каждой клиентской машины.

Для этого запустите:

  • vars.bat;
  • build-key-pkcs12.bat <имя машины>.

В результате будет сгенерирован файл PKCS#12 с именем клиентской машины. Это нужно будет сгенерировать для каждой машины.

Отредактируйте ваш файл конфигурации сервера, задайте правильные сетевые настройки.

Обратите внимание на то, что необходимо правильно указать пути к файлам ключей и сертификатов. Выдержка из конфигурационного файла:

# Any X509 key management system can be used.
# OpenVPN can also use a PKCS #12 formatted key file
# (see «pkcs12» directive in man page).
ca C:\ПУТЬ_К_СЕРТИФИКАТУ_УДОСТОВЕРЯЮЩЕГО_ЦЕНТРА\ca.crt
cert C:\ПУТЬ_К_СЕРТИФИКАТУ_СЕРВЕРА\server.crt
key C:\ПУТЬ_К_КЛЮЧУ_СЕРВЕРА\server.key

# Diffie hellman parameters.
# Generate your own with:
# openssl dhparam -out dh2048.pem 2048
dh C:\ПУТ_К_ФАЙЛУ_ДИФФИ-ХЭЛЛМАНА\dh1024.pem

Настройка Клиента


Установите ПО «Единый Клиент JaCarta» и «JaCarta SecurLogon» с официального сайта компании «Аладдин Р.Д.».

«JaCarta SecurLogon» — программное решение, обеспечивающее простой и быстрый переход от обычных паролей к двухфакторной аутентификации при входе в ОС Microsoft Windows и доступе к сетевым ресурсам по токену JaCarta.

Выберете вкладку «PKI» и проинициализируйте токен.

Инициализация ключа приведет к удалению всех данных на нем. Если на ключе есть необходимая вам информация, в том числе ключи и сертификаты для других систем, не проводите инициализацию ключа.

С помощью ПК «Единый Клиент JaCarta» импортируйте на токен файл PKCS#12, ранее сгенерированный для клиента. На токене появятся ключи и сертификат, их можно увидеть в окне «Единый Клиент JaCarta». Установите сертификат с токена в личное хранилище компьютера.

Скопируйте sha1 отпечаток личного сертификата, он потребуется для дальнейшей настройки.



Также потребуется сертификат Удостоверяющего центра, полученный в ходе настройки сервера. Установите сертификат в хранилище доверенных корневых центров сертификации, а также сохраните локально.

Отредактируйте ваш файл конфигурации клиента, задайте правильные сетевые настройки.

В поле cryptoapicert укажите отпечаток сертификата пользователя.

В поле ca укажите путь к сертификату Удостоверяющего центра.

Выдержка из конфигурационного файла:

# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
cryptoapicert «THUMB:81 0d d6 b7 …. ОТПЕЧАТОК КЛИЕНТСКОГО СЕРТИФИКАТА»
ca C:\ПУТЬ К СЕРТИФИКАТУ УДОСТОВЕРЯЮЩЕГО ЦЕНТРА\ca.crt

Проверка


Запустите OpenVPN на сервере и клиенте.

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

Другие способы получения ключей и сертификатов


Наиболее популярным способом генерации ключей и выпуска сертификатов является использование Удостоверяющего центра, например, на базе Microsoft Certification Authority. Для настройки OpenVPN этот способ генерации ключей и выпуска сертификата также подойдет.

Для сервера сгенерируйте на Удостоверяющем центре ключи и сертификат проверки подлинности сервера, экспортируйте их в файл PKCS#12.

В настройках серверной части OpenVPN вместо cert и key необходимо указать pkcs12:

ca C:\ПУТЬ_К_СЕРТИФИКАТУ_УДОСТОВЕРЯЮЩЕГО_ЦЕНТРА\ca.crt
pkcs12 C:\ПУТЬ_К_СЕРТИФИКАТУ_СЕРВЕРА\server.p12

Корневым сертификатом ca должен быть сертификат Удостоверяющего центра.

Настройка шаблонов для выпуска ключей и сертификатов на токен описана в инструкции к «Единому Клиенту JaCarta» и «JaCarta SecurLogon». Для клиента сгенерируйте на Удостоверяющем центре ключи и сертификат проверки подлинности клиента. При этом импортировать на токен файл pkcs#12 не потребуется. Остальные настройки клиентской части выполняются аналогично.
-->


К сожалению, не доступен сервер mySQL