Приведу скрипт, который делает сертификат и конфиг для клиента.
#!/bin/bash
if [ -n «$1» ]
then
echo Hello $1.
else
echo «No parameters found. » && exit 25
fi
cd /etc/openvpn/keys/easy-rsa-master/easyrsa3
./easyrsa —batch —req-cn=$1 gen-req $1 nopass 2> /dev/null
cd /etc/openvpn/keys/easy-rsa-master/easyrsa3
echo -en «yes\n» | ./easyrsa sign-req client $1
touch $1.ovpn
echo «dev tun» > $1.ovpn
echo «proto tcp» >> $1.ovpn
echo «remote X.X.X.X 1194» >> $1.ovpn
echo «client» >> $1.ovpn
echo «remote-cert-tls server» >> $1.ovpn
echo «auth-nocache» >> $1.ovpn
echo «resolv-retry infinite» >> $1.ovpn
echo «ca ca.crt» >> $1.ovpn
echo «cert $1.crt» >> $1.ovpn
echo «key $1.key» >> $1.ovpn
echo «persist-key» >> $1.ovpn
echo «persist-tun» >> $1.ovpn
echo «comp-lzo» >> $1.ovpn
echo «verb 3» >> $1.ovpn
echo «status-version 3» >> $1.ovpn
echo ‘push «redirect-gateway def1″‘ >> $1.ovpn
echo «<ca>» >> $1.ovpn
cat /etc/openvpn/keys/easy-rsa-master/easyrsa3/ca.crt >> $1.ovpn
echo «</ca>» >> $1.ovpn
echo «<cert>» >> $1.ovpn
cat /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/$1.crt
>> $1.ovpn
echo «</cert>» >> $1.ovpn
echo «<key>» >> $1.ovpn
cat /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/$1.key
>> $1.ovpn
echo «</key>» >> $1.ovpn
mv $1.ovpn /etc/openvpn/client
Скачать скрипт можно тут
Если у Вас сертификат ca.crt сделан с паролем, то нужно всегда руками вводить пароль. Меня это не устроило и я сделал ввод пароля автоматически. Понимаю, что это не безопасно. Но когда у меня было сделано почти 100 сертификатов и их раздали пользователям, менять и настраивать VPN было очень накладно из-за отсутсвия ИТ подготовки этих самых пользователей. Было принято решение — ввод автоматически.
Скрипт почти такой же, кроме одной строчки. В ней я вызываю маленький скрипт для ввода пароля при генерации нового сертификата.
Создаётся один файл, в котором прописаны и сертификаты с ключём. Расширение ovpn специально для клиента openvpn (windows).
#!/bin/bash
if [ -n «$1» ]
then
echo «Start generate new certificate $1»
else
echo «No parameters found. » && exit 25
fi
cd /etc/openvpn/keys/easy-rsa-master/easyrsa3
./easyrsa —batch —req-cn=$1 gen-req $1 nopass 2> /dev/null
cd /etc/openvpn/keys/easy-rsa-master/easyrsa3
conf_gen $1
touch $1.ovpn
echo «dev tap» > $1.ovpn
echo «proto tcp» >> $1.ovpn
echo «remote 212.11.155.111 1194» >> $1.ovpn
echo «client» >> $1.ovpn
echo «remote-cert-tls server» >> $1.ovpn
echo «auth-nocache» >> $1.ovpn
echo «resolv-retry infinite» >> $1.ovpn
echo «ca ca.crt» >> $1.ovpn
echo «cert $1.crt» >> $1.ovpn
echo «key $1.key» >> $1.ovpn
echo «persist-key» >> $1.ovpn
echo «persist-tun» >> $1.ovpn
echo «comp-lzo» >> $1.ovpn
echo «verb 3» >> $1.ovpn
echo «status-version 3» >> $1.ovpn
#echo ‘push «redirect-gateway def1″‘ >> $1.ovpn # если надо гонять трафик через VPN-сервер, то раскомменируйте эту строчку
echo «<ca>» >> $1.ovpn
cat /etc/openvpn/keys/easy-rsa-master/easyrsa3/ca.crt >> $1.ovpn
echo «</ca>» >> $1.ovpn
echo «<cert>» >> $1.ovpn
cat /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/$1.crt >> $1.ovpn echo «</cert>» >> $1.ovpn
echo «<key>» >> $1.ovpn
cat /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/$1.key >> $1.ovpn
echo «</key>» >> $1.ovpn
mv $1.ovpn /etc/openvpn/client
Скачать этот скрипт можно тут
Скрипт ввода пароля при генерации ключа
#!/usr/bin/expect -f
cd /etc/openvpn/keys/easy-rsa-master/easyrsa3
set client [lindex $argv 0]
spawn ./easyrsa sign-req client $client
expect «yes»
send «yes\n»
expect «ca.key»
send «password\n»
expect «$»
Скачать его можно тут
Положите скрипты в папку /usr/local/sbin и сможете вызывать их как обычныe команды.