Openvpn easy rsa

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

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

 

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

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

 

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

 

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

root@vpn:~#apt-get install openvpn easy-rsa

 

Создание Ceratificate Authority

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

root@vpn:~# 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=»me@myhost.mydomain»
export KEY_OU=»MyOrganizationalUnit»

 

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

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

 

# X509 Subject Field
export KEY_NAME=»vpn»

 

 

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

root@vpn:~/ca# source vars

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

 

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

root@vpn:~/ca# ./clean-all

 

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

root@vpn:~/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 [me@mycompany.com]: Enter

 

 

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

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

 

root@vpn:~/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 [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

 

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

root@vpn:~/ca# ./build-dh

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

 

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

openvpn —genkey —secret keys/ta.key

 

 


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

 

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

root@vpn:~/ca# ./easyrsa gen-req server vpn

root@vpn:~/ca# ./easyrsa sign-req server vpn

 

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


 

 

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

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

 

root@vpn:~/ca# ./build-key home-client

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

 

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

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

 


root@vpn:~/ca# ./easyrsa gen-req home-client

root@vpn:~/ca# ./easyrsa sign-req home-client

 

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


 

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