Общее описание 

EAP-TLS является протоколом взаимной аутентификации клиента и сервера с использованием сертификатов. Данный метод предусматривает, что для сервера и каждого клиента выпускается отдельный сертификат. За выпуск сертификатов отвечает центр сертификации (далее ЦС).

Для корректной работы EAP-TLS требуется выполнить следующие действия:

  1. Выпустить сертификат сервера.
  2. Преобразовать сертификат в требуемый формат и расположить его на сервере с NAICE.
  3. Указать необходимые настройки в переменных плейбука установки ansible.
  4. Выполнить плейбук ansible и включить использование сертификата сервера.
  5. Настроить авторизацию в NAICE с использованием сертификатов.
  6. Выпустить сертификат пользователя.
  7. Настроить на эндпоинте аутентификацию с помощью выпущенного сертификата пользователя.
  8. Проверить работу аутентификации.

Сертификат, используемый NAICE-RADIUS для выполнения EAP-TLS аутентификации, не изменяет сертификат, используемый для EAP-PEAP аутентификации.

Требования и ограничения

Общие требования

  1. Работа с сертификатами, использующими ГОСТ шифрование, не поддерживается.
  2. Eltex-NAICE не имеет встроенного средства управления сертификатами. Выпуск и управление жизненным циклом сертификатов возлагается на стороннее ПО (например, ЦС Windows Server или утилиту OpenSSL).

Пример создания запроса на выпуск сертификата и пример управления сертификатами с использованием утилиты OpenSSL приведены в разделе Приложения.

Требования к сертификату, используемому сервисом NAICE-RADIUS

  1. Сертификат, используемый сервисом, должен иметь формат PEM или CRT без включения ключа шифрования в сертификат сервера.
  2. Использование DER-кодировки не поддержано.
  3. Использование сертификатов в контейнере PKCS не поддержано.
  4. В пароле к приватному ключу не допускается использование символов: $, ', ", `, знаки скобок и пробел.
  5. Возможно использование только одного сертификата сервисом NAICE-RADIUS. 
  6. Сертификат, используемый NAICE-RADIUS, должен содержать атрибуты:
    1. Subject: CN;
    2. X509v3 Key Usage: Digital Signature, Key Encipherment;
    3. X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication.
  7. Сертификат, используемый пользователем, должен содержать атрибуты:
    1. Subject: CN;
    2. X509v3 Key Usage: Digital Signature, Key Encipherment;
    3. X509v3 Extended Key Usage: TLS Web Client Authentication.

Требования к OCSP-серверу

  1. Поддерживается реализация сервера OCSP MS Windows Server.
  2. Поддержан режим только HTTP (без TLS шифрования).

Установка сертификатов

Установка сертификата может быть выполнена плейбуком Ansible или же при необходимости вручную.

При установке NAICE через OVA-образ установка сертификатов выполняется по инструкции v1.0_3.3.5 Замена сертификатов EAP-TLS.

Установка сертификатов плейбуками Ansible

При выполнении установки плейбуками Ansible будет выполнен рестарт всех сервисов NAICE, что приведет к кратковременному перерыву связи!

Для корректной работы требуется файлы сертификатов расположить на хосте, с которого будет выполняться плейбук Ansible в папке ansible/roles/docker/files/eap-tls.

Требуется три файла:

Далее приведен пример с расположением файлов в на хосте выполнения плейбуков Ansible:

$ls -lh ansible/roles/docker/files/eap-tls
-rw-rw-r-- 1 root root 1,4K ноя 19 15:44 trusted_server.crt
-rw-rw-r-- 1 root root 1,4K ноя 22 05:20 trusted_server_chain.crt
-rw------- 1 root root 1,9K ноя 22 05:19 trusted_server.k

Файлы могут иметь произвольное наименование.

Настройка и установка параметров в файле переменных плейбука Ansible

После расположения файлов на хосте требуется в файле ansible/group_vars/all.yml указать значения переменных:

# параметры для авторизации по протоколу EAP-TLS
# параметры сертификатов
# для включения установки сертификатов протокола EAP-TLS необходимо расположить файлы сертификатов сервера в папке ansible/roles/docker/files/eap-tls
radius_eap_tls_cert_dir_copy: false   # включить копирование сертификатов из директории ansible/roles/docker/files/eap-tls
radius_eap_tls_certs_ca_cert_file: trusted_server.crt   # имя файла корневого (CA) сертификата
radius_eap_tls_certs_private_key_file: trusted_server.k   # имя файла приватного ключа сертификата сервера
radius_eap_tls_certs_private_key_password:  # пароль к файлу приватного ключа сертификата сервера, оставьте пустым, если файл приватного ключа не запаролен
radius_eap_tls_certs_certificate_file: trusted_server_chain.crt   # имя файла серверного сертификата

Указать при необходимости параметры взаимодействия с OCSP-сервером:

# настройки проверки статуса отозванных сертификатов по протоколу OCSP
radius_eap_tls_ocsp_enable: 'false' # Включение проверки статуса отзыва сертификата по протоколу OCSP
radius_eap_tls_ocsp_override_url: 'false' # Использовать URL сервиса OCSP из сертификата
radius_eap_tls_ocsp_url: 'http://127.0.0.1/ocsp' # URL для обращения к сервису OCSP
radius_eap_tls_ocsp_softfail: 'false' # Мягкая проверка доступа к серверу проверки OSCP, если сервер недоступен, процесс не завершится, а продолжится
radius_eap_tls_ocsp_timeout: 0 # Таймаут обращения к серверу OSCP
radius_eap_tls_ocsp_use_nonce: 'true' # Позволяет включить одноразовый код в запрос - nonce, который может быть включен в соответствующий ответ


Работа с OCSP-сервером поддержана только по протоколу HTTP с реализацией MS Windows Server!


Описание параметров:

ПараметрНазначение
radius_eap_tls_cert_dir_copyПеременная, отвечающая за копирование сертификатов из папки на целевой хост и использование их в сервисе nacie-radius. Значение по умолчанию false, в этом случае аутентификация по протоколу EAP-TLS считается неиспользуемой и работать не будет. Копирование файлов на целевой хост также выполняться не будет.
radius_eap_tls_certs_ca_cert_fileИмя файла корневого сертификата ЦС.
radius_eap_tls_certs_private_key_fileИмя файла приватного ключа сервера.
radius_eap_tls_certs_private_key_password

Пароль к файлу приватного ключа сервера. Если значение не указано, считается что пароль не используется. В пароле не допускается использовать символы: $, ', ", `, знаки скобок и пробел.

radius_eap_tls_certs_certificate_fileИмя файла сертификата сервера.
radius_eap_tls_ocsp_enableВключить проверку статуса отзыва сертификата по протоколу OCSP (false | true). По умолчанию false (проверка отключена).
radius_eap_tls_ocsp_override_urlОткуда брать URL OCSP-сервера: false - использовать URL из сертификата пользователя; true - использовать URL из настройки radius_eap_tls_ocsp_url. По умолчанию false.
radius_eap_tls_ocsp_urlURL для обращения к OCSP-серверу (разрешен только http-режим).
radius_eap_tls_ocsp_softfailПоведение в случае недоступности OCSP-сервера (false | true): false - прекратить аутентификацию, если не удается получить доступ; true - продолжить аутентификацию без проверки отзыва сертификата, если OCSP-сервер не доступен.
radius_eap_tls_ocsp_timeoutТаймаут обращения к серверу OCSP (секунды). По умолчанию 0.
radius_eap_tls_ocsp_use_nonceВключить одноразовый код nonce в запрос на проверку сертификата для предотвращения подмены запроса (false | true): false - не включать, true - включить. По умолчанию true.

Сохранить значения переменных и выполнить плейбук ansible.

Для однохостовой инсталяции:

ansible-playbook install-naice.yml -i hosts.yml 

Для инсталяции с резервированием:

ansible-playbook reservation-naice-services.yml -i hosts.yml 

Можно повторно выполнить плейбук, если ранее при установке NAICE сертификаты для работы EAP-TLS не были установлены.

Расположение сертификатов на целевом хосте

Сертификаты на целевой хост копируются в папку, которая указана в переменной naice_docker_path, в подпапку eap-tls. По умолчанию /etc/docker-naice/eap-tls.

Ручная установка сертификатов 

При выполнении установки сертификатов вручную будет выполнен рестарт сервиса naice-radius, что приведет к кратковременному перерыву связи!

Для корректной работы требуется файлы сертификатов расположить на хосте с NAICE в папке установки системы. По умолчанию это папка /etc/docker-naice/eap-tls.

Требуется три файла:

Далее приведен пример с расположением файлов в на сервере NAICE при использовании пути установки по умолчанию:

$ ls -ln /etc/docker-naice/eap-tls
total 12
-rw------- 1 0 0 1314 Aug 19 15:13 trusted_server.crt
-rw------- 1 0 0 1854 Aug 19 15:13 trusted_server.k
-rw------- 1 0 0 2130 Aug 19 15:13 trusted_server_chain.crt

Файлы могут иметь произвольное наименование, но рекомендуется не изменять без необходимости.

Последовательность действий (все примеры приведены исходя из того, что используется директория установки NAICE по умолчанию - /etc/docker-naice):

  1. На сервере с NAICE создать директорию, в которую необходимо поместить сертификаты (например, /директория-установки-NAICE/eap-tls):

    sudo mkdir /etc/docker-naice/eap-tls


  2. Перенести файлы сертификатов в созданную папку.
  3. Проверить и при необходимости назначить корректные права доступа и владельца файлов:

    sudo chown root:root /etc/docker-naice/eap-tls
    sudo chmod 600 /etc/docker-naice/eap-tls


  4. Пробросить папку с сертификатами в контейнер naice-radius с помощью volume, отредактировав файл docker-compose.yml в папке установки NAICE:

      naice-radius:
      [...]
        volumes:
          - ${RADIUS_LOG_PATH}:/opt/var/log/radius
          - ./eap-tls:/opt/etc/raddb/certs/eap-tls
      naice-radius:
        container_name: naice-radius
        image: ${RADIUS_HUB}/naice-radius:${RADIUS_VERSION_TAG}
        hostname: ${HOSTNAME}
        ports:
          - "${RADIUS_AUTH_PORT}:1812/udp"
          - "${RADIUS_ACCT_PORT}:1813/udp"
          - "${RADIUS_EXPORTER_PORT}:9812/tcp"
        env_file: .env
        deploy:
          resources:
            limits:
              memory: 512M
            reservations:
              memory: 256M
          restart_policy:
            condition: always
        healthcheck:
            test: "curl http://127.0.0.1:9812/metrics | grep 'freeradius_up 1' || exit 1"
            interval: 10s
            timeout: 5s
            retries: 10
        volumes:
          - ${RADIUS_LOG_PATH}:/opt/var/log/radius
          - ./eap-tls:/opt/etc/raddb/certs/eap-tls
    
    


  5. Указать названия новых файлов (если были изменены) и пароль к ключу  trusted_server.k (если он установлен) в переменных окружения .env, в папке установки NAICE:

    RADIUS_EAP_TLS_CERTS_CA_CERT_FILE: trusted_server.crt           # Имя файла корневого (CA) сертификата УЦ.
    RADIUS_EAP_TLS_CERTS_PRIVATE_KEY_FILE: trusted_server.k         # Имя файла приватного ключа сертификата RADIUS.
    RADIUS_EAP_TLS_CERTS_PRIVATE_KEY_PASSWORD: password             # Пароль к файлу приватного ключа сертификата RADIUS; оставить пустым, если файл приватного ключа не защищен паролем.
    RADIUS_EAP_TLS_CERTS_CERTIFICATE_FILE: trusted_server_chain.crt # Имя файла сертификата RADIUS.


  6. Указать параметры взаимодействия с OCSP-сервером, если используется:
    RADIUS_EAP_TLS_OCSP_ENABLE: false              # Включить проверку статуса отзыва сертификата по протоколу OCSP (false | true). По умолчанию false (проверка отключена).
    RADIUS_EAP_TLS_OCSP_OVERRIDE_URL: false        # Откуда брать URL OCSP-сервера: false - использовать URL из сертификата пользователя; true - использовать URL из настройки radius_eap_tls_ocsp_url. По умолчанию false.
    RADIUS_EAP_TLS_OCSP_URL: http://127.0.0.1/ocsp # URL для обращения к OCSP-серверу (разрешен только http-режим).
    RADIUS_EAP_TLS_OCSP_SOFTFAIL: false            # Поведение в случае недоступности OCSP-сервера (false | true): false - прекратить аутентификацию, если не удается получить доступ; true - продолжить аутентификацию без проверки отзыва сертификата, если OCSP-сервер не доступен.
    RADIUS_EAP_TLS_OCSP_TIMEOUT: 0                 # Таймаут обращения к серверу OCSP (секунды). По умолчанию 0.
    RADIUS_EAP_TLS_OCSP_USE_NONCE: true            # Включить одноразовый код nonce в запрос на проверку сертификата для предотвращения подмены запроса (false | true): false - не включать, true - включить. По умолчанию true.
  7. Примените внесенные настройки с помощью рестарта контейнера naice-radius:

    sudo docker compose down naice-radius && sudo docker compose up -d naice-radius


  8. Проверить что контейнер с naice-radius запущен успешно:

    $ sudo docker compose ps -a naice-radius
    NAME                COMMAND                  SERVICE             STATUS              PORTS
    naice-radius        "/docker-entrypoint.…"   naice-radius        running (healthy)   0.0.0.0:1812-1813->1812-1813/udp, 0.0.0.0:9812->9812/tcp, :::1812-1813->1812-1813/udp, :::9812->9812/tcp


  9. Если контейнер не запущен, надо просмотреть логи на предмет ошибок командой:

    $ sudo docker compose logs naice-radius


Замена сертификата

Замену сертификатов можно выполнить двумя путями:

  1. Заменить файлы сертификата на сервере на новые с тем же самым именем, перейти в папку установки NAICE и выполнить рестарт сервиса NAICE-RADIUS:

    sudo docker compose stop naice-radius && sudo docker compose up -d naice-radius


  2. Скопировать новые файлы сертификата и сервера ЦС. Если были изменены имена файлов, необходимо в плейбуке ansible исправить значения переменных и выполнить повторный запуск плейбука:

    ansible-playbook install-naice.yml -i hosts.yml 


    При обновлении переменная naice_docker_path должна соответствовать ранее используемой папки установки (по умолчанию -/etc/docker-naice). В противном случае произойдет установка нового экземпляра NAICE в новую папку, что приведет к неработоспособности системы!


Настройка NAICE

Общее описание

Настройка сетевых устройств, политик аутентификации и авторизации, внешних источников идентификации не имеет особенностей и далее в приведенной инструкции не рассматривается. Предполагается, что эти сущности уже настроены. Пример настроек можно посмотреть в v1.0_4. Быстрый запуск (Quickstart).

Авторизация пользователей с использованием протокола EAP-TLS имеет следующие особенности:

Работа с OCSP-сервером поддержана только по протоколу HTTP с реализацией MS Windows Server!

Настройка используемого атрибута сертификата в цепочке идентификаций

Настройка выполняется в разделе Администрирование → Управление идентификацией → Цепочки идентификаций при создании или редактировании цепочки идентификаций:

Необходимо включить настройку , после этого станет доступен выбор атрибутов:

Сравнение значения выбранного атрибута выполняется для источников типа ACTIVE DIRECTORY или LDAP со значением атрибута, выбранного в поле Subject Name Attribute.

Для внутреннего источника идентификации (Internal DB) сравнение выполняется со значением указанным в поле Логин пользователя. Значение в поле должно соответствовать значению в выбранном атрибуте для успешной проверки аутентификации.

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


Аутентификация пользователя без проверки соответствия имени пользователя или выбранного атрибута сертификата только по факту валидности сертификата невозможна!

Далее приведен пример настройки проверки сертификата по атрибуту Subject - Common Name с использованием ранее настроенного источника данных AD:

Управление в службе доступных протоколов

Настройка возможности использовать протокол EAP-TLS выполняется в разделе Политики → Элементы → Разрешенные протоколы. В списке разрешенных протоколов по умолчанию Default protocols поддержка протокола уже включена. Если создается новый список доступных протоколов, необходимо включить поддержку EAP-TLS:

Пример настройки набора политик

Пример успешной авторизации в разделе Мониторинг →  RADIUS:

Пример, отображаемый при нажатии иконки в столбце Подробнее для пользователя:

Настройка подключения на клиентском устройстве

Windows 10

Выпуск и распространение сертификатов может выполняться средствами центра сертификации ОС Windows Server. В данной статье этот способ не рассматривается, рекомендуется обратиться к документации производителя.

Далее будет рассмотрено управление сертификатами на компьютере с ОС Windows 10.


Если запрос на выпуск сертификата не был создан на компьютере, на который выполняется импорт сертификата под той же УЗ, потребуется сформировать один файл, содержащий сертификат и ключ (например контейнер PFX).

Файл сертификата пользователя, а также сертификат ЦС требуется передать на клиентский компьютер. Для добавления сертификатов потребуются права администратора. Добавление сертификатов выполняется через консоль MMC.

Открытие консоли управления сертификатами

В меню Пуск → Выполнить (WIN + R), ввести mmc и нажать Enter:

В появившемся окне Контроль учетных записей подтвердить (нажать кнопку Да) для доступа к консоли управления MMC.

В открывшемся окне управления оснасткой в меню Файл → Добавить или удалить оснастку выбрать Сертификаты:

Нажать Добавить. В открывшемся окне выбрать моей учетной записи пользователя:

Нажать Готово, затем нажать ОК.

Откроется консоль Сертификаты - текущий пользователь.

Добавление корневого сертификата ЦС

Если импорт сертификата ЦС, который отвечает за выпуск сертификатов пользователей был выполнен ранее, данное действие выполнять не требуется.

Раскрыть список хранилищ сертификатов и правой кнопкой мыши выбрать Доверенные корневые центры сертификации. В открывшемся меню выбрать Все задачи → Импорт...:

После нажатия на Импорт... откроется окно выбора сертификатов. Выбрать сертификат ЦС:

Нажать Далее и убедиться, что импорт сертификата ЦС выполняется в хранилище Доверенные корневые центры сертификации:

Нажать кнопку Далее и в следующем окне нажать Готово. Появится окно с предупреждением системы безопасности, что является нормальным при импорте самоподписного сертификата корневого центра сертификации:

Последовательно друг за другом нажать Да и нажать ОK после появления сообщения об успешном импорте сертификата.

Добавление сертификата пользователя

При импорте сертификат пользователя должен содержать в одном файле сертификат и его ключ. Или же запрос на выпуск импортируемого сертификата должен быть выполнен на данном компьютере под той же УЗ, под которой выполняется импорт сертификата.

В списке хранилищ сертификатов выбрать Личное и нажать на правую кнопку мыши. В открывшемся меню выбрать Все задачи → Импорт..., выбрать сертификат пользователя:

Нажать Далее. Откроется окно, в котором потребуется ввести пароль от ключа сертификата:

Ввести пароль и нажать Далее, в следующем окне Далее.

В окне завершения импорта убедиться, что сертификат импортируется в хранилище Личное:

Нажать Готово → ОК в сообщении об успешном импорте сертификатов.

Перейти в папку Личное → Сертификаты. Выбрать ранее импортированный сертификат и дважды нажать на него. Откроется окно со сведениями о сертификате:

Убедиться, что сертификат пользователя корректен и есть надпись внизу: Есть закрытый ключ для этого сертификата.

Нажать ОK и закрыть консоль управления сертификатами, на предложении сохранить ответить Нет - это не повлияет на установленные сертификаты. Можно сохранить оснастку, чтобы в дальнейшем легко получить доступ к ней.

Настройка сетевого подключения

Для настройки сетевого подключения потребуется перейти Пуск → Параметры → Сеть и Интернет → Ethernet → Настройка параметров адаптера. В открывшемся окне выбрать адаптер, дважды нажать на него левой кнопкой мыши и перейти в окно свойств. Перейти во вкладку Проверка подлинности:

Нажать кнопку Параметры справа от метода проверки подлинности, в открывшемся окне:

Нажать ОK.

На вкладке Проверка подлинности нажать в нижней части на кнопку Дополнительные параметры, в открывшемся окне:

Повторно в двух окнах подряд нажать ОК, закрыв вкладку свойств подключения.

После выполнения данных действий подключить компьютер к сети и убедиться в возможности авторизации с использованием сертификата.

Если на компьютере под одной УЗ есть несколько личных сертификатов, то будет предложено выбрать один из них.

Включение возможности выбрать логин при выполнении подключения

По умолчанию в качестве имени пользователя при выполнении аутентификации по протоколу EAP-TLS используется поле Common Name (CN) сертификата. Чтобы выбрать произвольное имя пользователя, необходимо открыть настройки сетевого подключения: потребуется перейти Пуск → Параметры → Сеть и Интернет → Ethernet → Настройка параметров адаптера. В открывшемся окне выбрать адаптер, дважды нажать на него левой кнопкой мыши и перейти в окно свойств. Перейти во вкладку Проверка подлинности:

Нажать кнопку Параметры справа от метода проверки подлинности, в открывшемся окне:

Включить галочку Использовать для подключения другое имя пользователя. Другие настройки надо выполнить в соответствии с инструкцией выше.

Выполнить подключение к сети.

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

Откроется окно Выбор сертификата:

Нажать ОK.

Новое имя пользователя будет сохранено только после успешной попытки аутентификации!

Ubuntu 22.04

Для настройки подключения потребуется три файла: файл сертификата пользователя, файл ключа сертификата пользователя, файл сертификата ЦС, выпустившего сертификат.

Перенести файлы на компьютер в отдельную папку.

Перейти в раздел Настройки → Сеть:

Нажать справа от сетевого подключения, откроется окно настройки, перейти во вкладку Безопасность:

Нажать Apply.

После выполнения данных действий подключить компьютер к сети и убедиться в возможности авторизации с использованием сертификата.

Приложения

Создание запроса на сертификат

При необходимости можно создать запрос на выпуск сертификата RADIUS для работы EAP-TLS непосредственно на сервере NAICE или хосте, с которого выполняется запуск плейбуков ansible, с помощью входящий в состав дистрибутивов Linux утилиты openssl:

openssl req -newkey rsa:2048 -nodes -keyout trusted_server.k -out naice.crs -subj "/CN=naice.test.loc" -addext "keyUsage = digitalSignature, keyEncipherment" -addext "extendedKeyUsage = serverAuth, clientAuth"

В результате будет создано два файла:

Используя файл запроса на сертификат необходимо выпустить сертификат RADIUS-сервера через УЦ, который используется в организации (например, на базе Windows Server) с именем trusted_server_chain.crt или другим требуемым именем.

Если выпускающий УЦ одновременно является корневым, то достаточно одного сертификата RADIUS. Если же выпускающий УЦ является подчинённым другого УЦ, то требуется сформировать цепочку сертификатов из сертификатов УЦ, начиная с корневого, + сертификата RADIUS, и положить их в один файл.

Выпуск сертификатов с использованием OpenSSL

Приведенные примеры команд используют для выпуска сертификатов OpenSSL версии 3.0.13.

Выпуск корневого сертификата ЦС

Выпустить корневой сертификат ЦС:

openssl req -x509 -new -newkey rsa:2048 -keyout ca.key -out ca.crt -days 3650 -subj "/C=RU/ST=Russia/L=Test/O=Test ORG/OU=QA/CN=ca.test.loc" -addext "keyUsage = digitalSignature, keyEncipherment, keyCertSign"

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

$openssl req -x509 -new -newkey rsa:2048 -keyout ca.key -out ca.crt -days 3650 -subj "/C=RU/ST=Russia/L=Test/O=Test ORG/OU=QA/CN=ca.test.loc" -addext "keyUsage = digitalSignature, keyEncipherment, keyCertSign"

Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----

Если пароль к ключу сертификата не требуется, необходимо добавить опцию -nodes при генерации ключа сертификата:

openssl req -x509 -new -newkey rsa:2048 -nodes -keyout ca.key -out ca.crt -days 3650 -subj "/C=RU/ST=Russia/L=Test/O=Test ORG/OU=QA/CN=ca.test.loc" -addext "keyUsage = digitalSignature, keyEncipherment, keyCertSign"

В результате будет создано два файла ca.pem и ca.key.

Подготовка файлов для выпуска сертификатов сервера и пользователей

Выпуск сертификата для NAICE-RADIUS

Создать файл конфигурации server.cnf, который будет отвечать за подпись запроса на сертификат для сервера:

[ signing_req ]
keyUsage               = digitalSignature, keyEncipherment
extendedKeyUsage       = serverAuth, clientAuth

Создать запрос на сертификат для RADIUS-сервера:

openssl req -new -newkey rsa:2048 -keyout radius.key -out radius.csr -subj "/C=RU/ST=Russia/L=Test City/O=Tester's ORG/OU=QA/CN=radius.test.loc"

Выпустить сертификат на основе ранее созданного запроса с использованием файла конфигурации server.cnf:

openssl x509 -req -in radius.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile server.cnf -extensions signing_req -out radius.crt

В итоге получится два файла, которые потребуются в настройках NAICE-RADIUS: radius.crt и radius.key.

Выпуск сертификата пользователя

Создать файл конфигурации clients.cnf, который будет отвечать за подпись запроса на сертификат для сервера:

[ signing_req ]
keyUsage               = digitalSignature, keyEncipherment
extendedKeyUsage       = clientAuth

Создать запрос на сертификат для RADIUS-сервера:

openssl req -new -newkey rsa:2048 -keyout client1.key -out client1.csr -subj "/C=RU/ST=Russia/L=Test City/O=Tester's ORG/OU=QA/CN=client.test.loc"

Выпустить сертификат на основе ранее созданного запроса с использованием файла конфигурации server.cnf:

openssl x509 -req -in client1.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile clients.cnf -extensions signing_req -out client1.crt

В итоге будет создано два файла, которые потребуются в настройках пользователя: client1.crt и client1.key.

Преобразование сертификатов

Сертификаты, создаваемые ЦС Windows Server, могут быть сформированы в DER-кодировке. Такой сертификат требует преобразования перед использованием в NAICE-RADIUS или пользователем с ОС Linux. Конвертация может быть выполнена утилитой OpenSSL:

openssl x509 -inform der -in client1.cer -out client1.crt

Для использования сертификата в ОС Windows его требуется преобразовать в формат контейнера сертификата. Конвертация может быть выполнена утилитой OpenSSL (потребуется ввести пароль от ключа сертификата и задать пароль контейнера):

openssl pkcs12 -export -out client1.pfx -inkey client1.key -in client1.crt

Извлечение сертификатов из контейнера (потребуется ввести пароль контейнера):

openssl pkcs12 -in client1.pfx -nokeys -out client1.pem

Следует иметь ввиду, что в случае, если в контейнере содержаться несколько сертификатов, все они будут извлечены и записаны в один файл.

Извлечение ключа сертификата из контейнера (потребуется ввести пароль контейнера и задать пароль закрытого ключа):

openssl pkcs12 -in client1.pfx -nocerts -aes256 -out client1.key

Извлечение ключа сертификата PEM, если в один файл записаны ключ и сертификаты (потребуется ввести и повторно задать пароль ключа):

openssl rsa -aes128 -in client1.pem -out client1.key