- Системное администрирование и мониторинг Linux/Windows серверов и видео CDN
- Статьи по настройке и администрированию Windows/Linux систем
- OpenVPN. Генерация PKI сертификатов
- 3. PKI схема
- 3.1 Подготовка корневого центра сертификации
- 3.2 Создание рутового CA сертификата
- 3.3 Создание серверного OpenVPN сертификата
- 3.4 Создание клиентских OpenVPN сертификатов
- 3.5 Список отозванных сертификатов
- Openvpn easy rsa, генерация сертификатов
- Создание Ceratificate Authority
- Создание сертификата и ключа для сервера
- Клиентские сертификат и ключ
- Записки IT специалиста
- Создание ключей и сертификатов для OpenVPN при помощи Easy-RSA 3
- Установка Easy-RSA и создание центра сертификации
- Создание ключа и сертификата для сервера
- Создание ключа и сертификата для клиента
- Списки отзыва и отзыв сертификатов
- Дополнительные материалы:
Системное администрирование и мониторинг Linux/Windows серверов и видео CDN
Статьи по настройке и администрированию Windows/Linux систем
- Полезное
- Карта сайта
- Мой сайт-визитка
- Рубрики
- Linux
- VoIP
- Безопасность
- Видеопотоки
- Системы виртуализации
- Системы мониторинга
- Windows
- Интересное
- Сеть и Интернет
- Linux
- Мета
- Войти
- RSS Feed
OpenVPN. Генерация PKI сертификатов
Как настраивать OpenVPN сервер в режиме point-to-point и client/server мы научились в предыдущих статьях. Для point-to-point режима мы использовали shared key. В режиме client/server нам были нужны сертификаты и ключи для OpenVPN сервера и клиентов. В данной статье пойдет речь о генерации инфраструктуры публичных ключей (PKI) и сертификатов используя Easy-RSA утилиту.
3. PKI схема
Немного расскажу о PKI структуре (рисунок 3.1).
Рисунок 3.1 – Структура PKI
Во главе всего дерева сертификатов и ключей должен быть корневой центр сертификации (CA). К примеру, можно посмотреть в браузере информацию о цепочке SSL сертификатов googl-a.
Рисунок 3.2 – Цепочка сертификатов google
Здесь во главе дерева стоит GeoTrust Global центр сертификации (корневой). Далее идет промежуточный Google Internet Authority G2 сертификат и завершает цепочку клиентский (доменный) сертификат. OpenVPN PKI структура будет похожей. Во главе должен быть корневой центр сертификации (Root CA) с файлом отзывов цифровых сертификатов (CRL). На CA сервере будут генерироваться клиентские и серверные ключи. Приступаем к практике.
3.1 Подготовка корневого центра сертификации
Для начала нужно скачать Easy-RSA утилиту, которую мы будем использовать для генерации всей инфраструктуры ключей.
Теперь переходим в распакованную директорию и редактируем главный файл конфигурации, в котором будет информация о организации.
Все структура ключей будет находиться по пути «$PWD/corp«, куда нужно скопировать папку со всеми x509 типами сертификатов и openssl конфигурационный файл.
Далее нужно инициализировать PKI исходя из введенных данных для последующей генерации сертификатов.
3.2 Создание рутового CA сертификата
Проверяем информацию по сертификату
Теперь можно подписывать клиентские сертификаты, но перед этим нужно создать CRL для отзывов сертификатов.
Проверяем список отозванных сертификатов.
Как видим, мы еще не отозвали никаких сертификатов.
3.3 Создание серверного OpenVPN сертификата
Создаем серверный ключ подписанный CA ключем.
Смотрим информацию о ключе.
Теперь у нас есть ключ и сертификат для OpenVPN сервера: vpn-server.crt и vpn-server.key.
3.4 Создание клиентских OpenVPN сертификатов
У каждого клиентского сертификата есть Common Name(CN), которое используются OpenVPN для применения дополнительных клиентских настроек (CCD). Создаем первый клиентский ключ.
Теперь создадим еще два клиентских ключа.
Мы создали ключи и сертификаты для CA, OpenVPN сервера и клиентов.
3.5 Список отозванных сертификатов
Если кто-то потерял свой секретный ключ или сертификат, или же он был скомпрометирован – эго нужно отозвать. Это можно легко сделать используя easy-RSA.
После этих действий у нас обновиться CRL файл, который нужно прописать в OpenVPN конфигурации сервера (директива crl-verify).
Теперь смотрим какие у нас есть отозванные сертификаты.
Как видим, мы отозвали сертификат с Serial Number: 02, т.е. alex-it. Serial Number было видно, когда мы смотрели информацию по ключам используя openSSL. Вот и все.
Openvpn easy rsa, генерация сертификатов
easy-rsa позволяет создать на сервере CA (certificate authority). CA потребуется для того, чтобы выпускать сертификаты сервера, а также подписывать и отзывать клиентские сертификаты. За счет сертификатов трафик будет передаваться по защищенной сети только между доверенными узлами.
Нужно это для любой распределенной частной сети или при использовании VPN.
После установки easy rsa и генерации сертификатов будет разобрана настройка работы OPENVPN на Ubuntu сервере.
#apt-get install openvpn easy-rsa
Создание Ceratificate Authority
Сначала копируем шаблонные файлы утилиты easy-rsa
Здесь потребуется отредактировать файл vars, переменные в нем указывают с какими параметрами будут генерироваться сертификаты
Открыв файл в редакторе нужно перейти в конец, где можно увидеть такие директивы
# These are the default values for fields
# which will be placed in the certificate.
# Don’t leave any of these fields blank.
export KEY_COUNTRY=»US»
export KEY_PROVINCE=»CA»
export KEY_CITY=»SanFrancisco»
export KEY_ORG=»Fort-Funston»
export KEY_EMAIL=»me@myhost.mydomain»
export KEY_OU=»MyOrganizationalUnit»
Их значения нужно поменять на свои
Также меняется KEY_NAME.
# X509 Subject Field
export KEY_NAME=»vpn»
Инициализируем vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /root/ca/keys
Удаляем все существовавшие ключи, если они были
Создаем сертификационный центр
Country Name (2 letter code) [RU]: Enter
State or Province Name (full name) [Sverdlovsk oblast]: Enter
Locality Name (eg, city) [Yekaterinburg]: Enter
Organization Name (eg, company) [mycompany]: Enter
Organizational Unit Name (eg, section) [IT]: Enter
Common Name (eg, your name or your server’s hostname) [mycompany CA]: Enter
Name [vpn]: Enter
Email Address [me@mycompany.com]: Enter
Создание сертификата и ключа для сервера
В качестве аргумента передаем имя, которое ранее было задано в vars
Country Name (2 letter code) [RU]: Enter
State or Province Name (full name) [Sverdlovsk oblast]: Enter
Locality Name (eg, city) [Yekaterinburg]: Enter
Organization Name (eg, company) [mycompany]: Enter
Organizational Unit Name (eg, section) [IT]: Enter
Common Name (eg, your name or your server’s hostname) [vpn]: Enter
Name [vpn]: Enter
Email Address [me@mycompany.com]: Enter
A challenge password []: Enter
An optional company name []: Enter
Certificate is to be certified until Jul 30 06:16:40 2028 GMT (3650 days)
Sign the certificate? [y/n]:y
Sign the certificate? [y/n]:y1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Далее ключ по алгоритму Диффи-Хельмана
Он применительно к VPN ключ даст невозможность расшифровки информации при украденных ключах доступа.
Дополнительно HMAC подпись
Команды из блока выделенного горизонтальными линиями (здесь и ниже) требуются только если не редактировался файл var
Создаем и подписываем сертификат сервера
/ca# ./easyrsa gen-req server vpn
/ca# ./easyrsa sign-req server vpn
Если CA и vpn являются разными машинами, как и должно быть при наличии повышенных требований к безопасности — запрос генерируется на vpn, затем на съемном носителе переносится на CA, подписывается и загружается обратно.
Клиентские сертификат и ключ
Автоматически подключаться без запроса пароля в дальнейшем позволит использование для генерации ./build-key. В качестве аргумента передается имя клиента
Если использовать ./build-key-pass каждый раз будет запрашиваться пароль
На все вопросы в диалоге нужно отвечать таким же образом, как в случае с сервером.
За счет этого автоматически будет сформирован запрос и сертификат с подстановкой переменных.
/ca# ./easyrsa gen-req home-client
/ca# ./easyrsa sign-req home-client
На клиентской машине тоже можно сгенерировать ключ (gen req client), затем подписать его приватным ключем сервера играющего роль сертификационного центра.
На этом генерация сертификатов и ключей завершена.
Записки 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 можно использовать любой режим. Мы установим традиционный:
После чего раскомментируйте и заполните блок ниже своими данными (в примере указаны наши):
Заметьте, что если вы оставили 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 в ответ на соответствующий запрос, любый иные действия приведут к отмене действия. Затем потребуется ввести пароль закрытого ключа центра сертификации.
Выпущенные сертификаты будут располагаться в 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 не представляет каких-либо сложностей и надеемся, что данная статья будет вам полезна.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал: