Создание сертификатов OpenVPN с помощью xca

Создание сертификатов OpenVPN с помощью xca

← Все разделы FAQ

Разделы FAQ:

Оглавление

Введение

Для работы OpenVPN-сервера и подключающихся к нему клиентов нужен набор сертификатов и ключей. Выпустить их можно в бесплатной программе XCA — это графический менеджер сертификатов для Windows, Linux и macOS, который заменяет работу с OpenSSL в командной строке.

Инструкция применима к любому оборудованию TELEOFIS с поддержкой OpenVPN — роутерам серий LT7x, LT40/LT5x, RTUx68 и GTX. Все действия выполняются на компьютере, поэтому от модели устройства и версии его прошивки они не зависят.

По шагам будут созданы центр сертификации, сертификат сервера, сертификат клиента, а затем всё необходимое будет выгружено в файлы и подготовлены параметры Диффи — Хеллмана.


Теоретическая часть

OpenVPN использует взаимную проверку подлинности: сервер и клиент предъявляют друг другу сертификаты, подписанные одним центром сертификации. Если подпись не совпадает, соединение не устанавливается. Поэтому выпустить нужно три вещи, и именно в таком порядке:

  • Сертификат центра сертификации (ЦС) — самозаверенный корневой сертификат. Им подписываются все остальные, и по нему стороны проверяют друг друга.
  • Сертификат сервера — подписывается центром сертификации, устанавливается на сторону, которая принимает подключения.
  • Сертификат клиента — подписывается тем же центром сертификации, устанавливается на подключающееся устройство. Для каждого клиента выпускается свой сертификат.

Дополнительно серверу нужны параметры Диффи — Хеллмана — набор чисел, по которым стороны согласуют сеансовый ключ шифрования. Они не являются секретом и создаются один раз.

В итоге на сервер потребуется четыре файла: сертификат ЦС, сертификат сервера, закрытый ключ сервера и параметры Диффи — Хеллмана. На клиент — три: сертификат ЦС, сертификат клиента и закрытый ключ клиента.


Установка XCA и загрузка шаблонов

Скачайте и установите программу XCA со страницы разработчика: https://hohnstaedt.de/xca/index.php/download

Чтобы не заполнять параметры сертификатов вручную, скачайте подготовленную базу данных OpenVPN.xdb и откройте её в XCA. В базе уже есть три шаблона:

  • OpenVPN_ЦС — для центра сертификации;
  • OpenVPN_Сервер — для сертификата сервера;
  • OpenVPN_Клиент — для сертификата клиента.

После открытия базы шаблоны видны на вкладке Шаблоны.

Список шаблонов OpenVPN в базе данных XCA


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

Перейдите на вкладку Сертификаты (1) и нажмите кнопку Новый сертификат (2).

На вкладке Первоисточник задайте параметры подписи:

  • в разделе Подписание выберите Создать самозаверенный сертификат;
  • в поле Алгоритм подписи выберите SHA256;
  • в разделе Шаблон для нового сертификата выберите OpenVPN_ЦС (3);
  • нажмите кнопку Применить всё (4).

Вкладка «Первоисточник» при создании центра сертификации

Перейдите на вкладку Субъект и заполните поля, описывающие владельца сертификата:

  • countryName
  • stateOrProvinceName
  • localityName
  • organizationName
  • organizationalUnitName
  • commonName
  • emailAddress

Затем сгенерируйте новый ключ RSA длиной 2048 бит.

Вкладка «Субъект» и генерация ключа RSA 2048 бит для центра сертификации

На вкладке Расширения при необходимости задайте срок действия сертификата. Учитывайте, что по истечении срока действия сертификата центра сертификации перестанут работать все выпущенные им сертификаты.


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

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

На вкладке Первоисточник:

  • в поле Использовать этот сертификат для подписи (1) выберите созданный ранее центр сертификации;
  • в поле Алгоритм подписи выберите SHA256;
  • в поле Шаблон для нового сертификата выберите OpenVPN_Сервер (2);
  • нажмите кнопку Применить всё (3).

Выбор центра сертификации и шаблона при создании сертификата сервера

На вкладке Субъект заполните поля:

  • Внутреннее имя — под ним сертификат будет отображаться в списке XCA;
  • countryName
  • stateOrProvinceName
  • localityName
  • organizationName
  • organizationalUnitName
  • commonName
  • emailAddress

Затем сгенерируйте новый ключ RSA длиной 2048 бит.

Вкладка «Субъект» и генерация ключа для сертификата сервера


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

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

На вкладке Первоисточник:

  • в поле Использовать этот сертификат для подписи (1) выберите созданный ранее центр сертификации;
  • в поле Алгоритм подписи выберите SHA256;
  • в поле Шаблон для нового сертификата выберите OpenVPN_Клиент (2);
  • нажмите кнопку Применить всё (3).

Выбор центра сертификации и шаблона при создании сертификата клиента

На вкладке Субъект заполните поля:

  • Внутреннее имя
  • countryName
  • stateOrProvinceName
  • localityName
  • organizationName
  • organizationalUnitName
  • commonName
  • emailAddress

Затем сгенерируйте новый ключ RSA длиной 2048 бит.

Вкладка «Субъект» и генерация ключа для сертификата клиента

Примечание: для каждого клиента выпускайте отдельный сертификат со своим значением commonName. Это позволит при необходимости отозвать доступ одному устройству, не переоформляя остальные.

Экспорт сертификатов и ключей

Экспорт сертификата

Перейдите на вкладку Сертификаты, выберите нужный сертификат и нажмите кнопку Экспорт (1).

В появившемся окне в поле Формат сертификата (2) выберите PEM (*.crt), укажите путь к файлу (3) и нажмите кнопку OK.

Повторите экспорт для сертификата центра сертификации, сертификата сервера и сертификата клиента.

Окно экспорта сертификата в формате PEM

Экспорт закрытого ключа

Перейдите на вкладку Закрытые ключи, выберите нужный ключ и нажмите кнопку Экспорт (1).

В появившемся окне в поле Формат сертификата (2) выберите Закрытый ключ PEM (*.pem), укажите путь к файлу (3) и нажмите кнопку OK.

Окно экспорта закрытого ключа в формате PEM

Примечание: не защищайте закрытый ключ паролем — иначе OpenVPN-сервер может не запуститься, так как при старте он не сможет запросить ввод пароля.

Генерация параметров Диффи — Хеллмана

Перейдите в меню Дополнительно → Сгенерировать параметры Диффи — Хеллмана.

В появившемся окне выберите длину 2048 и нажмите кнопку OK.

Выбор длины параметров Диффи — Хеллмана в XCA

Начнётся генерация, которая может занять несколько минут. По её окончании появится диалог с предложением сохранить файл dh2048.pem.


Заключение

В результате подготовлен полный комплект файлов для запуска OpenVPN: сертификат центра сертификации, сертификаты и закрытые ключи сервера и клиента, а также параметры Диффи — Хеллмана. Файлы сертификатов и параметров передаются на устройства в открытом виде, закрытые ключи — только по защищённому каналу и только тому устройству, для которого они выпущены.

База данных XCA хранит все выпущенные сертификаты и ключи, поэтому сохраните файл .xdb — он понадобится, чтобы выпустить сертификат для нового клиента или перевыпустить существующий.

Дальнейшая настройка выполняется в веб-интерфейсе конкретного устройства: