Установка OpenVPN, часть 2


Приведу скрипт, который делает сертификат и конфиг для клиента.

#!/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 команды.