JaCarta PKI и OpenVPN для Windows

    В настоящей статье описывается процесс настройки двухфакторной аутентификации по смарт-картам и 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 не потребуется. Остальные настройки клиентской части выполняются аналогично.
    Аладдин Р.Д. 91,19
    Информационная безопасность
    Поделиться публикацией
    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое