Оглавление
- Введение
- Теоретическая часть
- Установка XCA и загрузка шаблонов
- Создание центра сертификации
- Создание сертификата сервера
- Создание сертификата клиента
- Экспорт сертификатов и ключей
- Генерация параметров Диффи — Хеллмана
- Заключение
Введение
Для работы 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_Клиент— для сертификата клиента.
После открытия базы шаблоны видны на вкладке Шаблоны.
Создание центра сертификации
Перейдите на вкладку Сертификаты (1) и нажмите кнопку Новый сертификат (2).
На вкладке Первоисточник задайте параметры подписи:
- в разделе Подписание выберите Создать самозаверенный сертификат;
- в поле Алгоритм подписи выберите
SHA256; - в разделе Шаблон для нового сертификата выберите
OpenVPN_ЦС(3); - нажмите кнопку Применить всё (4).
Перейдите на вкладку Субъект и заполните поля, описывающие владельца сертификата:
countryNamestateOrProvinceNamelocalityNameorganizationNameorganizationalUnitNamecommonNameemailAddress
Затем сгенерируйте новый ключ RSA длиной 2048 бит.
На вкладке Расширения при необходимости задайте срок действия сертификата. Учитывайте, что по истечении срока действия сертификата центра сертификации перестанут работать все выпущенные им сертификаты.
Создание сертификата сервера
Перейдите на вкладку Сертификаты и нажмите кнопку Новый сертификат.
На вкладке Первоисточник:
- в поле Использовать этот сертификат для подписи (1) выберите созданный ранее центр сертификации;
- в поле Алгоритм подписи выберите
SHA256; - в поле Шаблон для нового сертификата выберите
OpenVPN_Сервер(2); - нажмите кнопку Применить всё (3).
На вкладке Субъект заполните поля:
- Внутреннее имя — под ним сертификат будет отображаться в списке XCA;
countryNamestateOrProvinceNamelocalityNameorganizationNameorganizationalUnitNamecommonNameemailAddress
Затем сгенерируйте новый ключ RSA длиной 2048 бит.
Создание сертификата клиента
Перейдите на вкладку Сертификаты и нажмите кнопку Новый сертификат.
На вкладке Первоисточник:
- в поле Использовать этот сертификат для подписи (1) выберите созданный ранее центр сертификации;
- в поле Алгоритм подписи выберите
SHA256; - в поле Шаблон для нового сертификата выберите
OpenVPN_Клиент(2); - нажмите кнопку Применить всё (3).
На вкладке Субъект заполните поля:
- Внутреннее имя
countryNamestateOrProvinceNamelocalityNameorganizationNameorganizationalUnitNamecommonNameemailAddress
Затем сгенерируйте новый ключ RSA длиной 2048 бит.
commonName. Это позволит при необходимости отозвать доступ одному устройству, не переоформляя остальные.
Экспорт сертификатов и ключей
Экспорт сертификата
Перейдите на вкладку Сертификаты, выберите нужный сертификат и нажмите кнопку Экспорт (1).
В появившемся окне в поле Формат сертификата (2) выберите PEM (*.crt), укажите путь к файлу (3) и нажмите кнопку OK.
Повторите экспорт для сертификата центра сертификации, сертификата сервера и сертификата клиента.
Экспорт закрытого ключа
Перейдите на вкладку Закрытые ключи, выберите нужный ключ и нажмите кнопку Экспорт (1).
В появившемся окне в поле Формат сертификата (2) выберите Закрытый ключ PEM (*.pem), укажите путь к файлу (3) и нажмите кнопку OK.
Генерация параметров Диффи — Хеллмана
Перейдите в меню Дополнительно → Сгенерировать параметры Диффи — Хеллмана.
В появившемся окне выберите длину 2048 и нажмите кнопку OK.
Начнётся генерация, которая может занять несколько минут. По её окончании появится диалог с предложением сохранить файл dh2048.pem.
Заключение
В результате подготовлен полный комплект файлов для запуска OpenVPN: сертификат центра сертификации, сертификаты и закрытые ключи сервера и клиента, а также параметры Диффи — Хеллмана. Файлы сертификатов и параметров передаются на устройства в открытом виде, закрытые ключи — только по защищённому каналу и только тому устройству, для которого они выпущены.
База данных XCA хранит все выпущенные сертификаты и ключи, поэтому сохраните файл .xdb — он понадобится, чтобы выпустить сертификат для нового клиента или перевыпустить существующий.
Дальнейшая настройка выполняется в веб-интерфейсе конкретного устройства: