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

Обновлено Обновлено: Опубликовано Опубликовано:

Тематические термины: OpenVPN, Linux.

Процедура немного отличается от Easy-RSA 2 по синтаксису, но не по смыслу. В данной статье все команды выполняются на примере операционной системы Linux.

Готовимся

Заходим в каталог с Easy-RSA 3, например:

cd /usr/share/easy-rsa/3.0.3

Создаем файл с настройками:

export KEY_COUNTRY=”RU
export KEY_PROVINCE=”Sankt-Petersburg
export KEY_CITY=”Sankt-Petersburg
export KEY_ORG=”DMOSK COMPANY
export KEY_EMAIL=”[email protected]
export KEY_CN=”DMOSK
export KEY_OU=”DMOSK
export KEY_NAME=”name-openvpn-server.admins24.com
export KEY_ALTNAMES=”name-openvpn-server”

* где KEY_CN и KEY_OU: рабочие подразделения (например, можно указать название отдела); KEY_NAME: адрес, по которому будет выполняться подключение (можно указать полное наименование сервера); KEY_ALTNAMES — альтернативный адрес.

Запускаем скрипт:

Сертификаты сервера

Инициализируем PKI:

./easyrsa init-pki

Создаем корневой сертификат:

./easyrsa build-ca

* после вводим дважды пароль и имя сервера.

Формируем ключ Диффи-Хеллмана:

./easyrsa gen-dh

Создаем запрос на сертификат для сервера и после генерируем сам сертификат:

./easyrsa gen-req vpn-server nopass

./easyrsa sign-req server vpn-server

* после ввода команды подтверждаем правильность данных, введя yes и вводим пароль, который указывали при создании корневого сертификата.
* nopass можно упустить, если хотим повысить безопасность с помощью пароля на сертификат.

Для создания ta ключа используем команду:

openvpn –genkey –secret pki/ta.key

Сертификаты сервера готовы, остается создать рабочую папку openvpn:

mkdir -p /etc/openvpn/keys

И скопировать в нее ключи:

cp -r pki/* /etc/openvpn/keys/

Пример конфигурационного файла сервера:

vi /etc/openvpn/server.conf

local 192.168.0.15
port 443
proto udp
dev tun
ca keys/ca.crt
cert keys/issued/vpn-server.crt
key keys/private/vpn-server.key
dh keys/dh.pem
tls-auth keys/ta.key 0
server 172.16.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
max-clients 32
client-to-client
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 4
mute 20
daemon
mode server
tls-server
comp-lzo

Сертификаты клиента

Создаем запрос на сертификат и сам сертификат:

./easyrsa gen-req client1 nopass

./easyrsa sign-req client client1

* подтверждаем правильность данных и вводим пароль корневого сертификата.

Из каталога pki на компьютер клиента копируем файлы:

  • ca.crt
  • issued/client1.crt
  • private/client1.key
  • dh.pem
  • При использовании tls, также копируем ta.key.

Например:

cp pki/issued/client1.crt pki/private/client1.key pki/dh.pem pki/ca.crt pki/ta.key /tmp

Пример конфигурационного файла клиента:

client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
comp-lzo
ca ca.crt
cert client1.crt
key client1.key
dh dh.pem
tls-client
tls-auth ta.key 1
float
keepalive 10 120
persist-key
persist-tun
verb 0

Отзыв сертификата

В случае, когда необходимо прекратить действие определенного сертификата, вводим:

./easyrsa revoke client1

* здесь мы отзываем сертификат для клиента client1.