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
FreeBSD 12.2-RELEASE: Thu May 6 10:55:34 UTC 2021
https://serverspace.ru/