Подключаемся к хосту клиента OpenVPN (в нашем случае это хост разработчика ПО) с правами обычного пользователя developer1 и скачиваем утилиту Easy-RSA с сайта github.com/OpenVPN/easy-rsa.
$ cd /home/developer1
$ wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
$ unzip master.zip
Запускаем инициализацию инфраструктуры публичных ключей PKI:
$ cd /home/developer1/easy-rsa-master/easyrsa3
$./easyrsainit-pki
В результате будет подготовлен каталог PKI:
/home/developer1/easy-rsa-master/easyrsa3/pki
Подготовка сертификата и ключа для клиента OpenVPN
Создаем запрос на сертификат и приватный ключ рабочей станции разработчика developer1:
$./easyrsagen-reqclientnopass
Потребуется ввести имя CommonName для создания запроса на сертификат и приватного ключа рабочей станции:
Generating a 2048 bit RSA private key
..............................................................................................+sftp++
................................+++
writing new private key to '/home/developer1/easy-rsa-master/easyrsa3/pki/private/client.key'
-----
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
|
|
-----
Common Name (eg: your user, host, or server name) [client]:developer1
Keypair and certificate request completed. Your files are:
req: /home/developer1/easy-rsa-master/easyrsa3/pki/reqs/client.req
key: /home/developer1/easy-rsa-master/easyrsa3/pki/private/client.key
Если к защите данных предъявляются повышенные требования, создаем приватный ключ с паролем, без использования опции nopass:
$./easyrsagen-reqclient
В этом случае, однако, пароль приватного ключа будет запрашиваться каждый раз при загрузке хоста и запуске клиента OpenVPN.
Теперь нужно перенести созданный запрос сертификата /home/developer1/easy-rsa-master/easyrsa3/pki/reqs/client.req на хост удостоверяющего центра CA и записать в файл /home/ca/client.req.
Сделаем это с помощью USB флэш-диска, если хост CA не подключен к сети.
Импортируем запрос в PKI, используя в качестве короткого имени developer1:
$ cd /home/ca/easy-rsa-master/easyrsa3
$./easyrsa import-req /mnt/flash/client.req developer1
Далее подписываем запрос на получение сертификата:
$./easyrsasign-reqclient developer1
После ввода подтверждения и пароля приватного ключа CA будет создан сертификат:
/home/ca/easy-rsa-master/easyrsa3/pki/issued/developer1.crt
Записываем файл developer1.crt на USB флэш-диск, чтобы перенести его на хост клиента OpenVPN.
Скопируем файл сертификата в каталог /etc/openvpn:
# mount -t vfat /dev/sdb1 /mnt/flash
# cp /mnt/flash/developer1.crt /etc/openvpn
Итак, теперь у нас есть файл приватного ключа рабочей станции client.key и файл сертификата developer1.crt, подписанного удостоверяющим центром CA.
Скопируем файл ключа в каталог /etc/openvpn:
# cp /home/developer1/easy-rsa-master/easyrsa3/pki/private/client.key
/etc/openvpn
Скопируем в каталог /etc/openvpn клиента VPN следующие файлы, подготовленные на USB диске:
# cp /mnt/flash/ca.crt /etc/openvpn
# cp /mnt/flash/crl.pem /etc/openvpn
# cp /mnt/flash/ta.key /etc/openvpn
Файлы ca.crt и crl.pem были созданы на хосте удостоверяющего центра CA, а файл ta.key — на хосте сервера OpenVPN.