Доводим до ума наш OpenVPN.
У нас он уже в продакшене, пользуемся.
Вкусно, просто, удобно. Встроенная поддержка ACL вообще замечательна, но о ней, может быть, в другом посте.
Сейчас надо настроить SSL, что бы браузеры и клиенты не ругались.
Документация по настройке SSL в OpenVPN AS – тут>>>.
Содержание
Let’s Encrypt
Устанавливаем Let’s Encrypt клиент:
[simterm]
root@openvpnas2:~# git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
[/simterm]
Открываем порт 80 в AWS Security Group – это безопасно, т.к. сам OpenVPN AS слушает только порт 443 для клиентов и 943 – для доступа в админпанель.
Получаем сертификат:
[simterm]
root@openvpnas2:~# /opt/letsencrypt/letsencrypt-auto certonly -d vpn.example.com ... 1: Spin up a temporary webserver (standalone) ... IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/vpn.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/vpn.example.com/privkey.pem
[/simterm]
SSL в OpenVPN
Изменить сертификат в базе данных конфигурации OpenVPN можно через Admin UI в разделе Web Server Configuration, либо с помощью CLI.
При первом запуске – OpenVPN AS генерирует self-signed сертификаты, которые хранятся в каталоге /usr/local/openvpn_as/etc/web-ssl/
:
[simterm]
root@openvpnas2:~# ls -l /usr/local/openvpn_as/etc/web-ssl/ total 16 -rw-r--r-- 1 root root 1111 Feb 21 14:50 ca.crt -rw------- 1 root root 1708 Feb 21 14:50 ca.key -rw-r--r-- 1 root root 1082 Feb 21 14:50 server.crt -rw------- 1 root root 1704 Feb 21 14:50 server.key
[/simterm]
Они являются как бы резервными, на случай проблем с основными сертификатами.
Для настройки SSL потребуется три файла, в случае с Let’s Encrypt это будут:
*.crt
– это нашfullchain.pem
файл*.key
–privkey.pem
файл*.bundle
– создадим изfullchain.pem
иprivkey.pem
Проверяем файлы сертификата от Let’s Ecncrypt:
[simterm]
root@openvpnas2:/etc/letsencrypt/live/vpn.example.com# ls -l total 4 lrwxrwxrwx 1 root root 42 Feb 22 10:56 cert.pem -> ../../archive/vpn.example.com/cert1.pem lrwxrwxrwx 1 root root 43 Feb 22 10:56 chain.pem -> ../../archive/vpn.example.com/chain1.pem lrwxrwxrwx 1 root root 47 Feb 22 10:56 fullchain.pem -> ../../archive/vpn.example.com/fullchain1.pem lrwxrwxrwx 1 root root 45 Feb 22 10:56 privkey.pem -> ../../archive/vpn.example.com/privkey1.pem
[/simterm]
Устанавливаем ключ:
[simterm]
root@openvpnas2:/etc/letsencrypt/live/vpn.example.com# /usr/local/openvpn_as/scripts/sacli --key "cs.priv_key" --value_file "privkey.pem" ConfigPut [True, {}]
[/simterm]
Устанавливаем публичную часть:
[simterm]
root@openvpnas2:/etc/letsencrypt/live/vpn.example.com# /usr/local/openvpn_as/scripts/sacli --key "cs.cert" --value_file "fullchain.pem" ConfigPut [True, {}]
[/simterm]
Создаём bundle:
[simterm]
root@openvpnas2:/etc/letsencrypt/live/vpn.example.com# cat fullchain.pem privkey.pem > bundle.pem
[/simterm]
Загружаем его в базу настроек OpenVPN AS:
[simterm]
root@openvpnas2:/etc/letsencrypt/live/vpn.example.com# /usr/local/openvpn_as/scripts/sacli --key "cs.ca_bundle" --value_file "bundle.pem" ConfigPut [True, {}]
[/simterm]
Перезапускаем сервис:
[simterm]
root@openvpnas2:/etc/letsencrypt/live/vpn.example.com# /usr/local/openvpn_as/scripts/sacli start RunStart warm None { "errors": {}, "service_status": { "api": "on", "auth": "on", "bridge": "on", "client_query": "restarted", "crl": "on", "daemon_pre": "on", "db_push": "on", "ip6tables_live": "on", "ip6tables_openvpn": "on", "iptables_live": "on", "iptables_openvpn": "on", "iptables_web": "restarted", "license": "on", "log": "on", "openvpn_0": "on", "openvpn_1": "on", "user": "on", "web": "restarted" } } WILL_RESTART ['web', 'client']
[/simterm]
Проверяем:
OpenVN hostname
Последним шагом, если не было сделано во время установки – меняем имя хоста в Network Settings:
Готово.