Техническая поддержка
Чем мы можем вам сегодня помочь?
OpenVPN режим мультиклиента: Часть 1 — Создание ключей и сертификатов Печать
Изменено: Чт, 13 Авг, 2020 at 1:19 PM
В роутерах серии RTU есть возможность использования защищенного соединения через частную виртуальную сеть, под названием OpenVPN
Процесс настройки и конфигурирования данного пакета для рядового пользователя может сопровождаться достаточно большими трудностями из-за отсутствия необходимых знаний.
Практически всю часть конфигурирования можно произвести через WEB интерфейс, но некоторые элементы все же придется произвести через консоль!
Что такое OpenVPN и для чего он необходим можно ознакомиться в статье: OpenVPN
В данной статье мы ознакомимся с подготовительной частью, это генерация сертификатов и ключей шифрования для защиты нашего канала передачи.
1. Генерация сертификатов и ключей на Windows
Для генерации сертификатов и ключей шифрования на ОС Windows необходимо установить само приложение OpenVPN.
Скачать последнюю версию OpenVPN для ОС Windows можно по ссылке: https://openvpn.net/community-downloads/.
После скачивания и установки в указанную Вами папку в ней будет список файлов, по умолчанию OpenVPN устанавливается в директорию C:\Program Files\OpenVPN .
Для генерации ключей будем использовать easy-rsa . Необходимо запустить командную строку от имени администратора и перейти в директорию с папкой easy-rsa. В примере используем команду для перехода в папку по умолчанию, у Вас данный путь может отличаться.
cd C:\Program Files\OpenVPN\easy-rsa
1.1 Запускаем файл init-config.bat
C:\Program Files\OpenVPN\easy-rsa>init-config.bat
C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
Скопировано файлов: 1.
В папке появится файл vars.bat, открываем его текстовым редактором, нас интересуют строчки в самом конце, их нужно заполнить.
Мы подставили свои параметры, у Вас данные параметры будут другие.
Там где написано server, не трогаем. Сохраняем файл.
1.2 Редактируем файл openssl-1.0.0.cnf
От имени администратора открываем блокнот, нам необходимо отредактировать файл openssl-1.0.0.cnf. По умолчанию данный файл находится в директории C:\Program Files\OpenVPN\easy-rsa, у Вас данный путь также может отличаться.
Нам необходимо найти строчку:
Далее необходимо заменить значение 365 на 3650, в более новых версиях OpenVPN значение 3650 может быть уже установлено по умолчанию.
1.3 Генерируем ключи и сертификаты
Подаем последовательно в консоль команды:
В ответ должно прийти
Скопировано файлов: 1.
Скопировано файлов: 1.
Если, мы это видим, значит все хорошо, продолжаем.
1.4 Создаем центр сертификации CA
На данном моменте в некоторых случаях может возникнуть ошибка:
Для устранения ошибки открываем файл vars.bat от имени администратора и ищем строку
Удаляем rem, после чего данная строка должна принять вид:
Сохраняем, далее снова подаем последовательно команды
В ответ должно прийти
Скопировано файлов: 1.
Скопировано файлов: 1.
При генерации основного сертификата в консоли будут отображаться вопросы. Просто нажимаем Enter , т.к. все эти параметры мы ввели в файле vars.bat
Нажимаем Enter до тех пор, пока не отобразиться строка приглашения
1.5 Создаем ключ Диффи-Хелмана
Данный шаг не является обязательным, ключ Диффи-Хелмана необходим для реализации одноименного протокола
позволяющего использовать небезопасный канал для получения общего секретного ключа. Этот ключ будет в дальнейшем использоваться для защищенного обмена данными с помощью алгоритмов симметричного шифрования.
В применении к OpenVPN файл Диффи-Хелмана нужен для обеспечения защиты трафика от расшифровки, если ключи были похищены. Здесь имеется в виду тот трафик, который был записан и сохранен еще до похищения ключей.
Файл Диффи-Хелмана создается на сервере OpenVPN.
Для создания ключа необходимо подать команду:
1.6 Создаем сертификат и ключ сервера
На вопросы нажимаем Enter , но не торопимся, в самом конце будет задано два вопроса
Sign the certificate?
1 out of 1 certificate requests certified, commit?
На оба эти вопроса отвечаем Y
1.7 Создаем сертификат и ключ клиента
Также не торопимся с ответами, как только увидим строку » Common Name (eg, your name or your server’s hostname)» нужно ответить client.
В самом конце также будут два вопроса, отвечаем также Y
Причем: для каждого клиента, нужно будет создать отдельные ключи и называть их client1, client2 или как-то иначе, все зависит от Вашего воображения.
На этом создание файлов сертификатов и ключей завершено.
Все файлы будут лежать в папке C:\Program Files\OpenVPN\easy-rsa\keys\
2. Генерация сертификатов и ключей на Linux
Генерация сертификатов и ключей будет осуществляться на ОС Ubuntu Linux 20.04.
Для других систем на базе Linux, некоторые команды могут отличаться!
Первоначально необходимо обновить все пакеты ОС Linux, подаем в консоль команду:
sudo apt-get update
sudo apt-get upgrade
Установим пакет zip, если он не был установлен ранее:
sudo apt install zip
2.1 Установка утилиты Easy-RSA
Создадим нового пользователя ca и переведем его в домашний каталог:
sudo adduser ca
В ответ система выведет информацию и попросит ввести пароль:
Вводим пароль, затем еще раз его повторяем, если все хорошо, система выведет следующую информацию:
Нажимаем Y, пользователь успешно создан.
Делаем loging под пользователя ca:
Далее необходимо загрузить дистрибутив программы утилитой wget:
2.2 Создаем инфраструктуру публичных PKI, создание центра сертификации СА:
Создадим инфраструктуру публичных ключей (Public Key Infrastructure, PKI):
В ответ система оповестит, что PKI создан успешно:
Далее создаем удостоверяющий центр сертификации:
В ответ система выдаст сообщение следующего вида:
Пароль будет защищать приватный ключ центра сертификации. Этот пароль потребуется каждый раз, когда Вы будете подписывать сертификаты для серверов и клиентов OpenVPN.
В конечном итоге у нас создадутся в системе два файла, которые нам в дальнейшем пригодятся: ca.crt и ca.key. Данные файлы находятся в директориях:
Файл ca.key является секретным, его нельзя передавать на другие узлы Вашей сети.
Файл ca.crt открытый, его необходимо передавать на узлы серверов и клиентов сети OpenVPN.
2.3 Создаем список отзывов сертификатов
Если сотрудник уволился из компании и у него есть доступ в сети VPN компании, нам необходимо закрыть этот доступ путем отзыва сертификата CRL. Для создания сертификата проделаем следующее:
cd /home/ca/easy-rsa-master/easyrsa3
$ ./easyrsa gen-crl
Система запросит пароль для доступа к закрытому ключу ca.key. Список отзыва сертификатов будет доступен в файле crl.pem:
Данный сертификат передается OpenVPN серверу. Также в конфиге сервера должен быть прописан путь до crl.pem, как правило данное правило прописывается в server.conf.
Для блокировки доступа пользователю, заблокируем ранее выданный сертификат, используя команду:
$ ./easyrsa revoke test
В таблице ниже описана структура каталога PKI:
2.4 Установка OpenVPN, создание каталога для конфигурации клиентов
Процесс создания сервера OpenVPN включает в себя установку пакета OpenVPN, создание сертификатов и ключей, а также подготовку рабочей конфигурации.
Установим пакет OpenVPN:
$ sudo apt-get install openvpn
Первоначально необходимо подготовить файлы конфигурации openssl.cnf и server.conf. Первый файл определяет конфигурацию OpenSSL, второй файл определяет конфигурацию сервера OpenVPN.
В комплекте с утилитой Easy-RSA поставляется пример файла конфигурации OpenSSL. Если Вы делали все действия по данному гайду, данный файл будет находиться по пути:
По умолчанию файл openssl-1.0.cnf содержит в себе следующую информацию:
Чтобы запуск сервера OpenVPN прошел успешно, необходимо создать каталоги, в которых будут храниться сертификаты и ключи для сервера и клиентов OpenVPN:
Создадим каталог для конфигурации клиентов:
$ sudo mkdir /etc/openvpn/ccd
2.5 Подготовка сертификатов и ключей для сервера OpenVPN
Для организации OpenVPN нам потребуются файлы, перечисленные в таблице ниже:
Файл | Описание |
dh.pem | Ключ Диффи-Хелмана, используется для защиты трафика от расшифровки, необходимо загружать как на клиент, так и на сервер (опционально) |
ca.crt | Сертификат удостоверяющего центра CA, необходимо загружать на сервер и клиент OpenVPN |
server.crt | Сертификат сервера OpenVPN, необходимо загружать на сервер OpenVPN |
server.key | Приватный ключ сервера, секретный, необходимо загружать на сервер OpenVPN |
crl.pem | Cписок отзыва сертификатов CRL, необходимо загружать на сервер (опционально) |
ta.key | Ключ HMAC для дополнительной защиты от DoS-атак и флуда (опционально) |
client.crt | Сертификат клиента OpenVPN, необходимо загружать на клиент OpenVPN |
client.key | Приватный ключ клиента, секретный, необходимо загружать на клиента OpenVPN |
Так как центр сертификации мы уже сгенерировали, на следующем этапе сгенерируем сертификат и приватный ключ для сервера OpenVPN.
$ ./easyrsa gen-req server
В процессе создания, система запросит пароль, а также имя Common Name для сервера OpenVPN:
Если же Вы хотите создать данные файлы без защиты паролем, используем команды:
$ ./easyrsa gen-req server nopass
Таким образом, в системе создадутся два файла: server.req и server.key, первый из них является открытым, его необходимо будет в дальнейшем подписать удостоверяющим центром СА, второй является секретым, его необходимо хранить на сервере OpenVPN.
Следующим шагом необходимо подписать данный сертификат (server.req) на стороне удостоверяющего центра СА:
$ ./easyrsa sign-req server server
При создании сертификата система запросит пароль (если при формировании server.req сертификат создавался с паролем). Необходимо будет ответить на сообщение yes, после чего ввести пароль от сертификата server.req. После успешного создания сертификата, система также уведомит об этом.
Отлично! Теперь необходимо загрузить на сервер OpenVPN сертификат server.crt, который был только что создан, а также ключ server.key.
По умолчанию и ключ находятся в следующих директориях:
2.6 Подготовка сертификатов и ключей для клиента OpenVPN
Генерировать сертификат будем под пользователем ca:
su ca
cd /etc/home/ca/easy-rsa-master/ easy-rsa3
./easyrsa gen-req client nopass
Если к защите данных предъявляются повышенные требования, сертификат можно создать с паролем:
./easyrsa gen-req client
Далее система попросит ввести Common Name, я назову данный сертификат client1, после генерации ключа система дополнительно оповестит нас об этом:
Таким образом, в системе создадутся два файла: client.req и client.key, первый из них является открытым, его необходимо будет в дальнейшем подписать удостоверяющим центром СА, второй является секретым, его необходимо будет в дальнейшем загрузить на клиент OpenVPN.
Далее необходимо только что созданный сертификат client.req подписать в удостоверяющем центре СА:
./easyrsa sign-req client client
При создании сертификата система запросит пароль (если при формировании server.req сертификат создавался с паролем). Необходимо будет ответить на сообщение yes, после чего ввести пароль от сертификата client.req. После успешного создания сертификата, система также уведомит об этом.
Отлично! Теперь необходимо загрузить на клиент OpenVPN сертификат client.crt, который был только что создан, а также ключ client.key.
По умолчанию и ключ находятся в следующих директориях:
2.7 Создаем ключ Диффи-Хелмана
Для генерации ключа Диффи-Хелмана будем использовать команду:
Создание ключа Диффи-Хелмана может занять достаточно продолжительное время, по окончании данного процесса система оповестит об этом:
Данный ключ находится в директории:
2.8 Создание статического ключа HMAC
Для создания ключа HMAC используется команда openvpn с опциями —genkey и —secret. Данный ключ необходимо создавать не от обычного пользователя, а от пользователя с правами администратора.
Система попросит ввести пароль от админской учетки, после ввода пароля необходимо выдать себе права на владение:
sudo chown -R teleofis:teleofis .
openvpn —genkey —secret ta.key
Ключ сгенерирован, он будет находиться в директории:
На этом моменте создание сертификатов закончено, далее переходим к следующей статье:
OpenVPN режим мультиклиента: Часть 2 — Настройка RTU сервера (tun)
Дополнительная информация: