Openvpn server windows easyrsa3

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

  • Главная
  • Создание ключей и сертификатов для OpenVPN при помощи Easy-RSA 3

Создание ключей и сертификатов для OpenVPN при помощи Easy-RSA 3

OpenVPN — популярная технология для создания защищенных частных сетей (VPN), использующих аутентификацию и шифрование на основе протокола SSL/TLS. Для упрощения процедуры создания необходимых ключей и сертификатов традиционно используется утилита Easy-RSA, которая позволяет легко управлять локальным центром сертификации (CA) инфраструктуры открытых ключей (PKI). Сегодня мы поговорим о работе с новой версией утилиты Easy-RSA 3, которая серьезно отличается по синтаксису от используемой ранее Easy-RSA 2 и входит в состав новых дистрибутивов Debian и Ubuntu.

На первый взгляд может показаться, что разработчики Easy-RSA серьезно все поменяли, но это не так, если вы понимаете, как устроена инфраструктура открытых ключей, то вам будет ясно, что работа утилиты изменилась только по форме, но не по сути. Она стала более целостной и простой в использовании, но в тоже время приобрела ряд новых функции, свойственных более «взрослым» продуктам. В настоящий момент Easy-RSA 3 входит в состав Debian 10, а также Ubuntu 18.10 и новее.

Установка Easy-RSA и создание центра сертификации

Для установки Easy-RSA 3 выполним:

После чего убедимся, что установлена именно третья версия утилиты:

Обычно затем директорию с easy-rsa копируют в конфигурационную папку OpenVPN, но на наш взгляд CA лучше располагать отдельно, поэтому мы скопируем директорию просто в /etc, однако это ни не что не влияет, и вы можете поступить по своему разумению.

Затем изменим рабочую директорию на скопированную нами папку:

Если вас устраивают параметры по умолчанию, то следующий шаг можно пропустить и сразу перейти к созданию инфраструктуры PKI. Однако мы советуем потратить немного времени на тонкую настройку вашего CA.

Прежде всего скопируем шаблон файла настроек:

и откроем файл vars на редактирование. Строки вида #set_var содержат значения по умолчанию, для их именения строку нужно раскомментировать и указать собственное значение. Начнем с опции EASYRSA_DN, она предусматривает два режима: упрощенный cn_only, при котором сертификат содержит только CN (имя того, кому выдан сертификат) и традиционный org, при котором заполняются все реквизиты организации. Для OpenVPN можно использовать любой режим. Мы установим традиционный:

Читайте также:  Драйвер nvidia для windows 10 notebook

После чего раскомментируйте и заполните блок ниже своими данными (в примере указаны наши):

Заметьте, что если вы оставили cn_only, то редактировать вышеуказанные опции не имеет смысла.

Параметр EASYRSA_KEY_SIZE указывает размер ключа, на сегодняшний день безопасным считается размер начиная с 2048, если вы ставите на первое место безопасность, то можете увеличить его до 3072 или 4096. Если криптографическая стойкость не играет роли, например, туннель будет использован для доступа в интернет и предполагается использование слабых устройств, то можно уменьшить размер ключа до 1024.

Опции EASYRSA_CA_EXPIRE и EASYRSA_CERT_EXPIRE задают срок действия корневого сертификата CA и сертификатов пользователей (сервера и клиентов), их значения установлены в днях как 3650 (10 лет) и 1080 (5 лет), опция EASYRSA_CERT_RENEW задает количество дней до истечения сертификата, когда становится доступным его продление, по умолчанию это 30 дней. При необходимости вы можете изменить эти значения.

Сохраним внесенные изменения. Теперь инициализируем наш CA и выпустим корневую пару ключей. Обратите внимание, что данные действия следует выполнять единожды, повторное выполнение указанных команд уничтожит существующий CA и потребует повторного создания всех ключей и сертификатов.

Данная команда инициализирует новую структуру центра сертификации с очисткой всех данных. После чего создадим файл для генерации случайных данных:

и активируем наш CA:

При создании закрытого ключа центра сертификации вам будет предложено ввести пароль, не следует пренебрегать этой возможностью, так как закрытый ключ — основа вашей инфраструктуры открытых ключей и его компрометация приведет к компрометации всех выпущенных ключей и сертификатов. Также не забудьте указать собственное наименование центра сертификации в опции Common Name.

После выполнения этих команд будет выполнено создание структуры директорий CA, публичный сертификат центра сертификации ca.crt вы сможете найти в директории pki, а закрытый ключ ca.key в pki/private. Закрытый ключ является секретным и не при каких обстоятельствах не должен покидать свое расположение и тем более не должен передаваться по открытым каналам связи, доступ третьих лиц к закрытому ключу также следует ограничить.

Также не забудем сформировать файл параметров Диффи-Хеллмана dh.pem, он также будет расположен в директории pki:

На этом создание центра сертификации (CA) можно считать законченным.

Создание ключа и сертификата для сервера

В Easy-RSA 3 все «по-взрослому», сначала нам нужно создать запрос на сертификат:

где ovpn-server — имя вашего сервера, nopass означает, что закрытый ключ следует создать без пароля. При выполнении данной команды будет создан запрос на сертификат и сгенерирован закрытый ключ сервера ovpn-server.key, который будет располагаться в pki/private. Закрытый ключ является секретным и не должен передаваться по открытым каналам связи и доступ к нему также должен быть ограничен.

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

Опция server обозначает выпуск сертификата для сервера. Для подтверждения выпуска вам нужно будет явно выразить свое согласие указав yes в ответ на соответствующий запрос, любый иные действия приведут к отмене действия. Затем потребуется ввести пароль закрытого ключа центра сертификации.

Читайте также:  Живые обои вархаммер 40000 для windows 10

Выпущенные сертификаты будут располагаться в pki/issued.

Теперь скопируем необходимые сертификаты и ключи в конфигурационную директорию OpenVPN, предварительно создав там папку keys:

Дальнейшая настройка OpenVPN-сервера ничем не отличается от описанной нами ранее, и вы можете воспользоваться любой нашей инструкцией, смотрите блок Дополнительные материалы внизу статьи.

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

Точно также начнем с формирования запроса на сертификат:

где ivanov_ivan — имя клиента, а nopass предписывает создать закрытый ключ без пароля. Мы рекомендуем давать клиентам осмысленные имена, чтобы потом не пришлось долго гадать, кто именно скрывается под псевдонимом типа client123.

На основании запроса выпустим сертификат:

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

Для передачи на клиент вам потребуется скопировать в доступную пользователю директорию закрытый ключ, сертификат клиента и сертификат CA. В нашем случае файлы будут скопированы в домашнюю директорию пользователя andrey.

Затем изменим их владельца, чтобы файлы можно было скопировать, подключившись к системе с правами пользователя:

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

Списки отзыва и отзыв сертификатов

Если вы используете OpenVPN для организации связи между офисами или доступа в интернет, то вряд ли у вас возникнет потребность в отзыве сертификата. Другое дело, если вы предоставляете удаленный доступ к корпоративной сети с домашних ПК сотрудников, подрядчикам или аутсорсерам. Здесь может возникнуть масса ситуаций, когда доступ отдельных лиц следует прекратить: сотрудник уволился, истек срок договора с подрядчиком, сменили аутсорсера и т.д. и т.п.

Прежде всего создадим список отозванных сертификатов (CRL):

Затем создадим символьную ссылку на список в директории с ключами OpenVPN:

И внесем в конфигурационный файл сервера OpenVPN следующую строку:

После чего сервер OpenVPN потребуется перезапустить.

Теперь отзовем какой-либо сертификат:

Где horns_and_hooves — имя сертификата клиента (СN), после отзыва следует повторно опубликовать список отозванных сертификатов:

Посмотреть список сертификатов можно командой:

Действующие сертификаты имеют статус V в начале строки, отозванные — R.

Как видим, работа с Easy-RSA 3 не представляет каких-либо сложностей и надеемся, что данная статья будет вам полезна.

Дополнительные материалы:

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Или подпишись на наш Телеграм-канал:

Установка и настройка OpenVPN (клиента и сервера) и Easy-RSA 3 в CentOS 7

Установка и настройка OpenVPN (клиента и сервера) и Easy-RSA 3 в CentOS 7

OpenVPN — свободная реализация технологии виртуальной частной сети с открытым исходным кодом для создания зашифрованных каналов типа точка-точка или сервер-клиенты между компьютерами.
Easy-RSA — программа для создания и ведения инфраструктуры открытых ключей (PKI) в openVPN

Установка необходимого софта

Добавляем репозиторий EPEL и обновляемся

Читайте также:  Phpstorm для windows 10

Устанавливает OpenVPN 2.4 и Easy-RSA 3

Проверим их версии

Настройка Easy-RSA 3

Скопируем скрипты easy-rsa в каталог /etc/openvpn/

Переходим в каталог /etc/openvpn/easy-rsa/3/ и создаем там файл vars

Делаем файл исполняемым

Создание ключа и сертификата для OpenVPN Сервера

Прежде чем создавать ключ, нам нужно инициализировать каталог PKI и создать ключ CA.

На этом необходимо придумать пароль для своего CA-ключа, чтобы сгенерировались файлы ‘ca.crt’ и ‘ca.key’ в каталоге ‘pki’.
Этот пароль нам потребуется дальше

Создадим ключ сервера (название сервера srv-openvpn)

опция nopass — отключение пароля для srv-openvpn

Создаем ключ сервера

Подпишем ключ srv-openvpn используя наш CA-сертификат

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

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

Проверим файлы сертификата, что бы убедится, что сертификаты сгенерировались без ошибок

Все сертификата OpenVPN сервера созданы.

  • Корневой сертификат расположен: ‘pki/ca.crt’
  • Закрытый ключ сервера расположен: ‘pki/private/srv-openvpn.key’
  • Сертификат сервера расположен: ‘pki/issued/srv-openvpn.crt’

Создание ключа клиента

Сгенерируем ключ клиента client-01

Генерируем ключ клиента

Теперь подпишем ключ client-01, используя наш CA сертификат

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

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

Проверим файлы сертификата

Дополнительная настройка OpenVPN сервера

Сгенерируем ключ Диффи-Хеллмана

Генерация ключа Диффи-Хеллмана

Если мы в дальнейшем планируем отзывать клиентские сертификаты, нам необходимо сгенерировать CRL ключ

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

Генерируем CRL-ключ

Для того, что бы отозвать сертификат надо выполнить команду:

где client-02 имя сертификата, который мы отзываем

Все необходимые сертификаты созданы, теперь их надо скопировать в директории

Копируем сертификаты сервера

Копируем сертификаты клиента

Копируем ключи DH и CRL

. Проверить, надо ли перегенерировать CRL и заново копировать его в каталог /etc/openvpn/server/ после отзыва сертификата .

Настройка OpenVPN сервера

Создадим файл конфигурации server.conf

Настройка Firewalld

Активируем модуль ядра port-forwarding

Добавим службу openvpn в firewalld, и интерфейс tun0 в доверенную зону

Активируем ‘MASQUERADE’ для доверенной зоны firewalld

Запустим OpenVPN и добавим его в автозагрузку

Проверяем, запущен ли OpenVPN

Настройка OpenVPN клиента

Создадим файл конфигурации client-01.ovpn

В строке ‘remote xx.xx.xx.xx 1194‘ надо прописать IP-адрес вместо ‘xx.xx.xx.xx

Теперь для надо заархивировать сертификаты (ca.crt, client-01.crt), ключ клиента (client-01.key), файл конфигурации (client-01.ovpn), и передать их на ПК, который будет подключаться к OpenVPN серверу

Установим архиватор zip и создадим архив с файлами

Пробуем подключиться с другого ПК к OpenVPN серверу и смотрим лог:

Оцените статью