bsd$ sudo pkg install easy-rsa

bsd$ sudo pkg install openvpn

В локальной папке создать символьные ссылки на исполняемые и конфигурационные файлы

bsd$ mkdir ~/easyrsa

bsd$ ln -s /usr/local/bin/easyrsa ~/easyrsa/

bsd$ ln -s /usr/local/share/easy-rsa/* ~/easyrsa/

Достаточно указать минимум переменных

bsd$ sudo vi ~/easyrsa/vars

set_var EASYRSA_ALGO "ec"

set_var EASYRSA_DIGEST "sha512"

Инициализация ./pki (выполняет сброс предыдущей инициализации, если она была)

bsd$ cd ./easyrsa

bsd$ ./easyrsa init-pki

. . .

init-pki complete; you may now create a CA or requests.

Your newly created PKI dir is: /home/b2t60/easyrsa/pki

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

bsd$ ./easyrsa build-ca nopass

You now have two important files — ~/easyrsa/pki/ca.crt and ~/easyrsa/pki/private/ca.key

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

bsd$ ./easyrsa gen-req server nopass

You now have two important files — ~/easyrsa/pki/reqs/server.req and ~/easyrsa/pki/private/server.key


Центр сертификации на этом же сервере, поэтому чтобы подписать server.req его нужно переместить (при подписании файл будет пересоздан по этому же пути)

bsd$ mv ~/easyrsa/pki/reqs/server.req ~/easyrsa/

bsd$ ./easyrsa import-req ~/easyrsa/server.req server

. . .

The request has been successfully imported with a short name of: server

You may now use this name to perform signing operations on this request.

bsd$ ./easyrsa sign-req server server

. . .

commonName = server

Certificate created at: /home/b2t60/easyrsa/pki/issued/server.crt


Копирование сертификата и ключей сервера

bsd$ sudo mkdir -p /usr/local/etc/openvpn/server

bsd$ sudo cp ~/easyrsa/pki/ca.crt /usr/local/etc/openvpn/server/

bsd$ sudo cp ~/easyrsa/pki/private/server.key /usr/local/etc/openvpn/server/

bsd$ sudo cp ~/easyrsa/pki/issued/server.crt /usr/local/etc/openvpn/server/

bsd$ openvpn --genkey secret ~/easyrsa/ta.key

bsd$ sudo cp ~/easyrsa/ta.key /usr/local/etc/openvpn/server/

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

bsd$ cd ~/easyrsa

bsd$ mkdir -p ~/client-configs/client1

bsd$ ./easyrsa gen-req client1 nopass


Аналогично серверному варианту, для подписания необходимо переместить файл client1.req

bsd$ mv ./pki/reqs/client1.req ./

bsd$ ./easyrsa import-req ./client1.req client1

bsd$ ./easyrsa sign-req client client1


bsd$ cp ./pki/private/client1.key ./client-configs/client1/

bsd$ cp ./pki/issued/client1.crt ./client-configs/client1/

bsd$ cp ./pki/ca.crt ./client-configs/client1/

bsd$ cp ./ta.key ./client-configs/client1/

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

bsd$ sudo cp /usr/local/share/examples/openvpn/sample-config-files/server.conf /usr/local/etc/openvpn

bsd$ cat /usr/local/etc/openvpn/openvpn.conf

ca ca.crt

cert server.crt

key server.key

dh none

client-to-client

tls-crypt ta.key

cipher AES-256-GCM

auth SHA256

user nobody

group nobody

client-config-dir ccd

route 192.168.0.0 255.255.255.0

bsd$ cat /usr/local/etc/openvpn/ccd/client1

iroute 192.168.0.0 255.255.255.0

bsd$ sudo /usr/local/etc/rc.d/openvpn start