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

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

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

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

Готовимся

Заходим в каталог с Easy-RSA 3:

cd /usr/share/easy-rsa/3.0

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

vi vars

export KEY_COUNTRY="RU"
export KEY_PROVINCE="Sankt-Petersburg"
export KEY_CITY="Sankt-Petersburg"
export KEY_ORG="DMOSK COMPANY"
export KEY_EMAIL="master@dmosk.ru"
export KEY_CN="DMOSK"
export KEY_OU="DMOSK"
export KEY_NAME="name-openvpn-server.dmosk.ru"
export KEY_ALTNAMES="name-openvpn-server"

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

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

. ./vars

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

Инициализируем 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

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

Или выполняем одной командой без необходимости подтверждения (все данные для сертификата берутся из vars):

./easyrsa build-client-full client1 nopass

Из каталога 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.

Продление сертификата

Посмотреть список ранее выданных сертификатов можно в файле index.txt:

cat pki/index.txt

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

./easyrsa renew client1 nopass

* если нужен закрытый ключ с паролем, убираем nopass.

Новые сертификаты мы найдем в каталогах pki/issued и pki/private.

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

openssl x509 -text -in pki/issued/client1.crt

# Linux # Безопасность # Серверы # Сети
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет