1) Устанавливаем easy-rsa и openvpn из репозиториев Alpine Linux.
easy-rsa находиться в репозитории
Переходим в директорию cd /usr/share/easy-rsa/
*Инициализируем хранилище сертификатов (CA). В процессе создания будет запрос пароля от хранилища. Генерируйте случайный и
сохраните его в свое защищенное хранилище паролей (keepass). Этот пароль нам понадобиться для добавления+подписи
сертификатов и он защищает хранилище.
./easyrsa init-pki
./easyrsa build-ca
*Создаем запросы сертификатов для сервера и клиента
./easyrsa gen-req UNIQUE_SERVER_SHORT_NAME nopass
./easyrsa gen-req UNIQUE_CLIENT_SHORT_NAME nopass
*После выполнения 4 команд получаем файлы запросов (это не команды, это пути к файлам).
req: /usr/share/easy-rsa/pki/reqs/UNIQUE_SERVER_SHORT_NAME.req
key: /usr/share/easy-rsa/pki/private/UNIQUE_SERVER_SHORT_NAME.key
req: /usr/share/easy-rsa/pki/reqs/UNIQUE_CLIENT_SHORT_NAME.req
key: /usr/share/easy-rsa/pki/private/UNIQUE_CLIENT_SHORT_NAME.key
*импортируем в CA
./easyrsa import-req /usr/share/easy-rsa/pki/reqs/UNIQUE_SERVER_SHORT_NAME.req UNIQUE_SHORT_FILE_NAME_1
./easyrsa import-req /usr/share/easy-rsa/pki/reqs/UNIQUE_CLIENT_SHORT_NAME.req UNIQUE_SHORT_FILE_NAME_2
*подписываем
./easyrsa sign-req server UNIQUE_SHORT_FILE_NAME_1
./easyrsa sign-req client UNIQUE_SHORT_FILE_NAME_2
*Получаем сертификаты (это не команды, это пути к файлам).
Сервер: /usr/share/easy-rsa/pki/issued/UNIQUE_SHORT_FILE_NAME_1.crt
Клиент: /usr/share/easy-rsa/pki/issued/UNIQUE_SHORT_FILE_NAME_2.crt
*Сгенерируйте ключ для протокола обмена ключами диффи-хеллмана.
./easyrsa gen-dh
*После выполнения получите файл
/usr/share/easy-rsa/pki/dh.pem
*Генерируем секрет для tls-авторизации опенвпн
openvpn --genkey --secret /etc/openvpn/ta.key
Все. На сервер ложим файлы.
dh /usr/share/easy-rsa/pki/dh.pem
ca /usr/share/easy-rsa/pki/ca.crt
cert /usr/share/easy-rsa/pki/issued/UNIQUE_SHORT_FILE_NAME_1.crt
key /usr/share/easy-rsa/pki/private/UNIQUE_SERVER_SHORT_NAME.key
tls-auth /etc/openvpn/ta.key 0
*Создаем файл конфигурации openvpn - сервера
port 1194
proto udp
dev tun0
persist-key
persist-tun
tls-server
tls-timeout 120
server 10.10.0.0 255.255.255.0
topology subnet
comp-lzo
duplicate-cn
keepalive 10 120
cipher DES-EDE3-CBC
dh /usr/share/easy-rsa/pki/dh.pem
ca /usr/share/easy-rsa/pki/ca.crt
cert /usr/share/easy-rsa/pki/issued/UNIQUE_SHORT_FILE_NAME_1.crt
key /usr/share/easy-rsa/pki/private/UNIQUE_SERVER_SHORT_NAME.key
tls-auth /etc/openvpn/ta.key 0
*Настройка клиента
Копируем с сервера на клиента файлы:
ca /usr/share/easy-rsa/pki/ca.crt
cert /usr/share/easy-rsa/pki/issued/UNIQUE_SHORT_FILE_NAME_2.crt
key /usr/share/easy-rsa/pki/private/UNIQUE_CLIENT_SHORT_NAME.key
tls-auth /etc/openvpn/ta.key
Я копировал при помощи scp
scp /usr/share/easy-rsa/pki/ca.crt root@192.168.0.201:/etc/openvpn/ca.crt
scp /usr/share/easy-rsa/pki/issued/UNIQUE_SHORT_FILE_NAME_2.crt root@192.168.0.201:/etc/openvpn/client.crt
scp /usr/share/easy-rsa/pki/private/UNIQUE_CLIENT_SHORT_NAME.key root@192.168.0.201:/etc/openvpn/client.key
scp /etc/openvpn/ta.key root@192.168.0.201:/etc/openvpn/ta.key
И создаем конфиг клиента:
dev tun
proto udp
remote 192.168.0.200 1194
client
resolv-retry infinite
ca "/etc/openvpn/ca.crt"
cert "/etc/openvpn/client.crt"
key "/etc/openvpn/client.key"
tls-auth "/etc/openvpn/ta.key" 1
remote-cert-tls server
persist-key
persist-tun
comp-lzo
Добавляем в автозагрузку
rc-update add openvpn
Запускаем
service openvpn start