Openvpn easy rsa

При настройке Openvpn easy rsa является пакетом, который применяют для создания серверных и клиентских сертификатов и работы с ними.

Рассмотрим как создать CA и выпустить на нем сертификаты. CA и сервер OpenVPN будут размещаться на одной машине, клиент на другой.

Openvpn easy rsa, генерация сертификатов

easy-rsa позволяет создать на сервере CA (certificate authority). CA потребуется для того, чтобы выпускать сертификаты сервера, а также подписывать и отзывать клиентские сертификаты. За счет сертификатов трафик будет передаваться по защищенной сети только между доверенными узлами.

Нужно это для любой распределенной частной сети или при использовании VPN.

После установки easy rsa и генерации сертификатов будет разобрана настройка работы OPENVPN на Ubuntu сервере.

[email protected]:~#apt-get install openvpn easy-rsa

Создание Ceratificate Authority

Сначала копируем шаблонные файлы утилиты easy-rsa

[email protected]:~# make-cadir ~/ca && cd ~/ca/

Здесь потребуется отредактировать файл 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=»[email protected]»
export KEY_OU=»MyOrganizationalUnit»

Их значения нужно поменять на свои

Также меняется KEY_NAME.

# X509 Subject Field
export KEY_NAME=»vpn»

Инициализируем vars

[email protected]:~/ca# source vars

NOTE: If you run ./clean-all, I will be doing a rm -rf on /root/ca/keys

Удаляем все существовавшие ключи, если они были

[email protected]:~/ca# ./clean-all

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

[email protected]:~/ca# ./build-ca

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 [[email protected]]: Enter

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

В качестве аргумента передаем имя, которое ранее было задано в vars

[email protected]:~/ca# ./build-key-server vpn

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 [[email protected]]: 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

Далее ключ по алгоритму Диффи-Хельмана

[email protected]:~/ca# ./build-dh

Он применительно к VPN ключ даст невозможность расшифровки информации при украденных ключах доступа.

Дополнительно HMAC подпись

openvpn —genkey —secret keys/ta.key


Команды из блока выделенного горизонтальными линиями (здесь и ниже) требуются только если не редактировался файл var

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

[email protected]:~/ca# ./easyrsa gen-req server vpn

[email protected]:~/ca# ./easyrsa sign-req server vpn

Если CA и vpn являются разными машинами, как и должно быть при наличии повышенных требований к безопасности — запрос генерируется на vpn, затем на съемном носителе переносится на CA, подписывается и загружается обратно.


Клиентские сертификат и ключ

Автоматически подключаться без запроса пароля в дальнейшем позволит использование для генерации ./build-key. В качестве аргумента передается имя клиента

[email protected]:~/ca# ./build-key home-client

Если использовать ./build-key-pass каждый раз будет запрашиваться пароль

На все вопросы в диалоге нужно отвечать таким же образом, как в случае с сервером.

За счет этого автоматически будет сформирован запрос и сертификат с подстановкой переменных.


[email protected]:~/ca# ./easyrsa gen-req home-client

[email protected]:~/ca# ./easyrsa sign-req home-client

На клиентской машине тоже можно сгенерировать ключ (gen req client), затем подписать его приватным ключем сервера играющего роль сертификационного центра.


На этом генерация сертификатов и ключей завершена.