Обновлено:
Опубликовано:
OpenVPN позволяет настроить VPN-сервер как на платформе Windows Server, так и версии для рабочего компьютера (Windows 10, 8, 7).
Установка сервера
Создание сертификатов
Настройка OpenVPN
Настройка клиента
Доступ к локальной сети
Решение проблем
Установка OpenVPN Server
Переходим на официальный сайт OpenVPN и скачиваем последнюю версию программы для соответствующей версии Windows:
Запускаем скачанный файл — нажимаем Next — I Agree — и выставляем галочку EasyRSA 2/3 Certificate Management Scripts (нужен для возможности сгенерировать сертификаты):
* интерфейсы для старой версии OpenVPN и новой немного различаются. Нам нужно выбрать для установки все пункты.
… снова Next и Install — начнется установка. В процессе мастер может выдать запрос на подтверждение установки виртуального сетевого адаптера — соглашаемся (Install/Установить).
После завершения нажимаем Next — снимаем галочку Show Readme — Finish.
Создание сертификатов
Новая версия OpenVPN позволяет создавать сертификаты на основе Easy RSA 3, старая работает на базе 2-й версии. Наши действия будут различаться в зависимости от данной версии. Рассмотрим процесс формирования сертификата с использованием как RSA3, так и RSA2.
а) Создание сертификатов с RSA 3
1. Переходим в папку установки OpenVPN (по умолчанию, C:\Program Files\OpenVPN) и создаем каталог ssl.
2. После переходим в папку C:\Program Files\OpenVPN\easy-rsa, переименовываем файл vars.example в vars, открываем его на редактирование и правим одну строку:
set_var EASYRSA_TEMP_DIR «$EASYRSA_PKI/temp»
* мы снимаем комментарий и добавляем temp в конце $EASYRSA_PKI. Если это не сделать, то при попытке сформировать корневого сертификата мы получим ошибку Failed create CA private key.
3. Запускаем командную строку от имени администратора:
4. Переходим в каталог easy-rsa:
cd %ProgramFiles%\OpenVPN\easy-rsa
5. Запускаем команду:
EasyRSA-Start.bat
Мы окажемся в среде EasyRSA Shell.
6. Инициализируем PKI:
./easyrsa init-pki
Если система вернет ошибку, выходим из оболочки EasyRSA Shell:
exit
И заходим снова:
EasyRSA-Start.bat
Мы должны увидеть:
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki
7. Генерируем корневой сертификат (CA):
./easyrsa build-ca
… после ввода Enter обязательно задаем пароль дважды. На запрос ввести Common Name можно просто нажать ввод или написать свое имя:
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
8. Создаем ключ Диффи-Хеллмана:
./easyrsa gen-dh
9. Для создания сертификата сервера необходимо сначала создать файл запроса:
./easyrsa gen-req cert nopass
* на запрос ввода Common Name просто вводим Enter.
… и на его основе — сам сертификат:
./easyrsa sign-req server cert
После ввода команды подтверждаем правильность данных, введя yes:
Confirm request details: yes
… и вводим пароль, который указывали при создании корневого сертификата.
10. Сертификаты сервера готовы и находятся в каталоге pki. Переносим в C:\Program Files\OpenVPN\ssl следующие файлы:
- ca.crt
- issued/cert.crt
- private/cert.key
- dh.pem
б) Создание сертификатов с RSA 2 (для старых версий OpenVPN)
1. Переходим в папку установки OpenVPN (по умолчанию, C:\Program Files\OpenVPN) и создаем каталог ssl.
2. После переходим в папку C:\Program Files\OpenVPN\easy-rsa, создаем файл vars.bat, открываем его на редактирование и приводим к следующему виду:
set «PATH=%PATH%;%ProgramFiles%\OpenVPN\bin»
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
set KEY_CONFIG=openssl-1.0.0.cnf
set KEY_DIR=keys
set KEY_SIZE=2048
set KEY_COUNTRY=RU
set KEY_PROVINCE=Sankt-Petersburg
set KEY_CITY=Sankt-Petersburg
set KEY_ORG=Organization
set KEY_EMAIL=master@dmosk.ru
set KEY_CN=DMOSK
set KEY_OU=DMOSK
set KEY_NAME=server.domain.ru
set PKCS11_MODULE_PATH=DMOSK
set PKCS11_PIN=12345678
* в каталоге easy-rsa уже есть файл vars.bat.sample — можно переименовать и использовать его.
** значение HOME не меняем, если оставили путь установки программы по умолчанию; KEY_DIR — каталог, куда будут генерироваться сертификаты; KEY_CONFIG может быть разным — его лучше посмотреть в файле vars.bat.sample или по названию соответствующего файла в папке easy-rsa; KEY_NAME желательно, чтобы соответствовал полному имени VPN-сервера; остальные опции можно заполнить произвольно.
3. Запускаем командную строку от имени администратора:
4. Переходим в каталог easy-rsa:
cd %ProgramFiles%\OpenVPN\easy-rsa
4. Запускаем vars.bat:
vars.bat
5. Чистим каталоги от устаревшей информации:
clean-all.bat
* данная команда выполняется один раз, когда на сервере нет информации по ранее созданным сертификатам.
6. Снова запускаем vars.bat (после clean переопределяются некоторые переменные):
vars.bat
Переходим к созданию ключей.
7. Генерируем последовательность центра сертификации:
build-ca.bat
На все запросы нажимаем Enter.
8. Запускаем build-dh.bat (сертификат с использованием алгоритма Диффи-Хеллмана):
openssl dhparam -out keys\dh.pem 2048
* команда может выполняться долго — это нормально.
9. Генерируем сертификат для сервера:
build-key-server.bat cert
* где cert — имя сертификата; на все запросы нажимаем Enter. В конце подтверждаем два раза корректность информации вводом y.
10. После переносим из папки C:\Program Files\OpenVPN\easy-rsa\keys в C:\Program Files\OpenVPN\ssl следующие файлы:
- ca.crt
- cert.crt
- cert.key
- dh.pem
Настройка сервера
Переходим в папку C:\Program Files\OpenVPN\config-auto (или для старой версии C:\Program Files\OpenVPN\config) и создаем файл server.ovpn. Открываем его на редактирование и приводим к следующему виду:
port 443
proto udp
dev tun
dev-node «VPN Server»
dh «C:\\Program Files\\OpenVPN\\ssl\\dh.pem»
ca «C:\\Program Files\\OpenVPN\\ssl\\ca.crt»
cert «C:\\Program Files\\OpenVPN\\ssl\\cert.crt»
key «C:\\Program Files\\OpenVPN\\ssl\\cert.key»
server 172.16.10.0 255.255.255.0
max-clients 32
keepalive 10 120
client-to-client
compress
fast-io
cipher AES-256-GCM
persist-key
persist-tun
status «C:\\Program Files\\OpenVPN\\log\\status.log»
log «C:\\Program Files\\OpenVPN\\log\\openvpn.log»
verb 4
mute 20
* где port — сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть любым из свободных, например 1194, занятые порты в Windows можно посмотреть командой netstat -a); dev-node — название сетевого интерфейса; server — подсеть, в которой будут работать как сам сервер, так и подключенные к нему клиенты.
** так как в некоторых путях есть пробелы, параметр заносится в кавычках.
*** при использовании другого порта необходимо проверить, что он открыт в брандмауэре или на время тестирования отключить его.
В сетевых подключениях Windows открываем управление адаптерами — TAP-адаптер переименовываем в «VPN Server» (как у нас указано в конфигурационном файле, разделе dev-node):
Теперь открываем службы Windows и находим «OpenVpnService». Открываем ее, настраиваем на автозапуск и включаем:
Если служба в запущенном состоянии, то перезапускаем ее.
Ранее переименованный сетевой интерфейс должен включиться:
VPN-сервер работает. Проверьте, что сетевой адаптер VPN Server получил IP 172.16.10.1. Если он получает что-то, на подобие, 169.254…, выключаем сетевой адаптер — перезапускаем службу OpenVpnService и снова включаем сетевой адаптер.
Если в нашей системе включен брандмауэр, необходимо открыть порт для OpenVPN. Это быстрее всего сделать из командной строки — открываем ее от администратора и вводим:
netsh advfirewall firewall add rule name=»ALLOW OpenVPN» dir=in action=allow protocol=UDP localport=443
* где 443 — наш порт, который мы решили задействовать под OpenVPN; UDP — протокол, который мы настроили в конфигурационном файле сервера.
Настройка клиента
На сервере
На сервере генерируем сертификат для клиента. Для этого сначала чистим файл index.txt в папке C:\Program Files\OpenVPN\easy-rsa\keys.
Затем запускаем командную строку от имени администратора:
Переходим в каталог easy-rsa:
cd %ProgramFiles%\OpenVPN\easy-rsa
Далее наши действия зависят от версии RSA.
а) Создание сертификатов с RSA 3
Запускаем команду:
EasyRSA-Start.bat
Мы окажемся в среде EasyRSA Shell.
Создаем клиентский сертификат:
./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1
Мы должны увидеть запрос на подтверждение намерения выпустить сертификат — вводим yes:
Confirm request details: yes
* в данном примере будет создан сертификат для client1.
После вводим пароль, который указывали при создании корневого сертификата.
Теперь из папки pki копируем файлы:
- issued/client1.crt
- private/client1.key
- ca.crt
- dh.pem
… и переносим их на клиентский компьютер.
б) Создание сертификатов с RSA 2 (для очень старых версий OpenVPN)
Запускаем vars.bat:
vars.bat
И генерируем сертификат первого пользователя:
build-key.bat client1
* на все запросы наживаем Enter, кроме Common Name — в данном поле вводим имя клиента (в нашем случае, просто client1). В конце подтверждаем введенную информацию — y.
** На каждого клиента нужно сгенерировать свой сертификат, в противном случае, им будет присваиваться один и тот же IP-адрес, что будет приводить к конфликту.
Получиться, что-то на подобие:
Country Name (2 letter code) [RU]:
State or Province Name (full name) [Sankt-Petersburg]:
Locality Name (eg, city) [Sankt-Petersburg]:
Organization Name (eg, company) [Organization]:
Organizational Unit Name (eg, section) [DMOSK]:
Common Name (eg, your name or your server’s hostname) [DMOSK]:client1
Name [server.domain.ru]:
Email Address [master@dmosk.ru]:
По умолчанию, для Common Name будет подставляться значение из vars.bat — но с ним сертификат не будет создаваться. Необходимо при создании каждого ключа подставлять значение, равное имени сертификата. Например, как выше — подставлено client1.
Теперь из папки keys копируем файлы:
- client1.crt
- client1.key
- ca.crt
- dh.pem
… и переносим их на клиентский компьютер.
На клиенте
Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:
* по сути, это тот же файл, который скачивался для сервера.
Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».
Переходим в папку C:\Program Files\OpenVPN\config. И копируем в нее сертификаты, которые перенесли с сервера.
Теперь открываем блокнот от имени администратора и вставляем следующие строки:
client
resolv-retry infinite
nobind
remote 192.168.0.15 443
proto udp
dev tun
compress
fast-io
cipher AES-256-GCM
ca ca.crt
cert client1.crt
key client1.key
dh dh.pem
float
keepalive 10 120
persist-key
persist-tun
verb 0
* где 192.168.0.15 443 — IP-адрес OpenVPN-сервера и порт, на котором он принимает запросы. Для боевой среды это будет внешний адрес.
Сохраняем файл с именем config.ovpn в папке C:\Program Files\OpenVPN\config.
Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно).
Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:
Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.
Доступ к локальной сети
По инструкции выше мы сможем получить доступ только к серверу, на котором установлен OpenVPN. Для получения доступа ко всей внутренней сети, выполним следующие шаги.
1. Настройка реестра
Для включения IP маршрутизации в Windows необходимо в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters найти параметр IPEnableRouter и задать ему значение 1. Это можно сделать в утилите редактирования реестра (regedit) или командой:
reg add «HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters» /v IPEnableRouter /t REG_DWORD /d 1 /f
* командную строку необходимо запускать от администратора.
2. Настройка OpenVPN Server
В конфигурационный файл OpenVPN добавим:
push «route 172.16.10.0 255.255.255.0»
push «route 192.168.2.0 255.255.255.0»
* где 172.16.10.0 — VPN сеть; 192.168.2.0 — локальная сеть, в которую необходимо «попасть» пользователям openvpn.
При необходимости использовать DNS внутренней сети также добавим:
push «dhcp-option DNS 192.168.0.15»
push «dhcp-option DNS 192.168.0.16»
push «dhcp-option DOMAIN dmosk.local»
* где 192.168.0.15 и 192.168.0.16 — внутренние DNS-серверы; dmosk.local — домен, который будет добавляться к узлам, обращение к которым идет по неполному имени.
Если нам нужно, чтобы все запросы клиента (в том числе, Интернет) ходили через сервер OpenVPN, добавляем:
push «redirect-gateway def1»
* в таком случае, нам не обязательно добавлять push route, который мы использовали выше.
Перезагружаем службу OpenVpnService.
3. Разрешаем доступ к локальной сети
Заходим в управление сетевыми подключениями (Панель управления\Сеть и Интернет\Сетевые подключения). Кликаем правой кнопкой мыши по адаптеру локальной сети — Свойства:
На вкладке Доступ ставим галочку Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера:
… и сохраняем настройки.
Возможные проблемы
Большая часть проблем решается при помощи логов, которые находятся в папке C:\Program Files\OpenVPN\log. Уровень детализации лога контролируется параметром verb в конфигурационном файле сервера или клиента.
Также возможны следующие часто возникающие проблемы:
- Проблема: клиент постоянно пытается подключиться к серверу, но соединения не происходит или подключение зависает.
Причина: сервер блокирует подключения по настроенному порту VPN (в нашем примере, 443).
Решение: на сервере необходимо добавить 443 порт в исключения брандмауэра или отключить последний.
- Проблема: при попытке подключиться к серверу выскакивает ошибка «Не удалось подключиться к config».
Причина: ошибка в настройках.
Решение: перепроверьте каждую строчку файла конфигурации. Проверьте наличие всех файлов, на которые ссылаетесь в настройках.
- Проблема: клиенты получают одинаковые IP-адреса.
Причина: подключение выполняется под одним и тем же пользователем.
Решение: сервер выдает одинаковые адреса одинаковым клиентам. Необходимо настроить авторизацию на сервере и выдать каждому клиенту индивидуальные настройки.
- Проблема: соединение происходит, но через несколько минут связь прерывается.
Причина: дублирование IP-адресов.
Решение: данная проблема описана выше (пункт 3).
Возможно, Вы это тоже захотите попробовать
- Настройка OpenVPN-сервера с аутентификацией через LDAP (Active Directory) на Ubuntu Server
- Установка и настройка OpenVPN на Linux CentOS 7
v3.1.6
Update: Before using v3.1.6
, please see this issue #1009
What’s Changed
- sign-req: Allow the CSR DN-field order to be preserved by @TinCanTech in #970
- Post version 3.1.5 refactor by @TinCanTech in #967
- set_var(): Allow empty input to return without error by @TinCanTech in #971
- vars-file: Warn about EASYRSA_NO_VARS disabling vars-file use by @TinCanTech in #972
- Expand default status to include vars-file and CA status by @TinCanTech in #973
- verify_ssl_lib(): Minor style improvements by @TinCanTech in #974
- cleanup: Rename $easyrsa_error_exit to $easyrsa_exit_with_error by @TinCanTech in #976
- Very minor changes to comments, help/msg text, wrap lines, code by @TinCanTech in #977
- Expose ‘sign-req’ unique, random serial number check to command line by @TinCanTech in #980
- sign-req: Major refactor by @TinCanTech in #981
- Simplify run-once control for exanding conf files by @TinCanTech in #982
- Only verify working environment for recognised commands by @TinCanTech in #985
- easyrsa_openssl: Replace variable ‘has_config’ with OPENSSL_CONF by @TinCanTech in #987
- Export PKCS: Expand usage for incomplete PKI by @TinCanTech in #991
- Inline v2 by @TinCanTech in #993
- set_var and force_set_var: Guard against invalid user input by @TinCanTech in #994
- verify_working_env: sanitize_path(), forbid broken values by @TinCanTech in #1000
Full Changelog: v3.1.5…v3.1.6
v3.1.5
3.1.5 (2023-06-10)
-
Build Update: script now supports signing and verifying
-
Automate support-file creation (Free packaging) (#964)
-
build-ca: New command option ‘raw-ca’, abbrevation: ‘raw’ (#963)
This ‘raw’ method, is the most reliable way to build a CA,
with a password, without writing the CA password to a temp-file.
This option completely replaces both methods below:
-
build-ca: New option —ca-via-stdin, use SSL -pass* argument ‘stdin’ (#959)
Option ‘—ca-via-stdin’ offers no more security than standard method.
Easy-RSA version 3.1.4 ONLY. -
build-ca: Replace password temp-files with file-descriptors (#955)
Using file-descriptors does not work in Windows.
Easy-RSA version 3.1.3 ONLY.
What’s Changed
- build-ca: New command option ‘raw-ca’, abbrevation: ‘raw’ by @TinCanTech in #963
- Automate support-file creation (Free packaging) by @TinCanTech in #964
Full Changelog: v3.1.4…v3.1.5
v3.1.4
3.1.4 (2023-05-23)
-
build-ca: New option —ca-via-stdin, use SSL -pass* argument ‘stdin’ (#959)
-
build-ca: Revert manual CA password method to temp-files (#959)
Supersedes #955Release v3.1.3 was fatally flawed, it would fail to build a CA under Windows.
Release v3.1.4 is specifically a bugfix ONLY, to resolve the Windows problem.See the following commits for further details:
5d7ad13
build-ca: Revert manual CA password method to temp-files
c11135d
build-ca: Use OpenSSL password I/O argument ‘stdin’
27870d6
build-ca: Replace password temp-file method with file-descriptors
Superseded by 5d7ad13 above.
Full Changelog: v3.1.3…v3.1.4
v3.1.3
What’s Changed
- fixed_cert_dates(): Remove subshell by @TinCanTech in #849
- Add ‘verify-cert’ command to current ‘verify’ command by @TinCanTech in #850
- Re-order output messages and subsequent newlines for aesthetics by @TinCanTech in #851
- build_ca(): Wrap long lines by @TinCanTech in #852
- build-ca: Write ‘unique_subject = no’ to index.txt.attr file by @TinCanTech in #854
- Remove hard-coded unit-test password from build-ca by @TinCanTech in #857
- Rename safe_set_var() to force_set_var() by @TinCanTech in #858
- build-ca: Minor code reformat (aesthetics) by @TinCanTech in #860
- Wrap long lines: easyrsa_openssl(), sed command by @TinCanTech in #864
- Move calling show_host() to function die(), where it belongs by @TinCanTech in #868
- Remove ineffectual redirector by @TinCanTech in #869
- Remove redundant separator lines by @TinCanTech in #870
- Remove debug symbols by @TinCanTech in #865
- Move verify_ssl_lib() — Always verify SSL lib, for all commands by @TinCanTech in #877
- easyrsa_mktemp(): Use sequential numbered temp files by @TinCanTech in #876
- cleanup(): Only enable terminal echo when it has been disabled by @TinCanTech in #880
- set-var(): Check input, die on errors by @TinCanTech in #882
build-ca
: Manual password bug fixes by @TinCanTech in #886- sign-req: Only create a random serial number file when expected by @TinCanTech in #896
- sign-req: Use either SSL option -days OR -startdate/-enddate by @TinCanTech in #897
- Use set_var to correctly assign EASYRSA_REQ_SERIAL by @TinCanTech in #900
- gen-crl: Minor improvements by @TinCanTech in #903
- Upgrade_23: Prioritise new PKI creation to allow temp file creation by @TinCanTech in #906
- General improvements by @TinCanTech in #908
- Status reports: Warn if given commonName is not found in database by @TinCanTech in #911
- vars_setup(): Refactor ‘Sanitize vars’ by @TinCanTech in #912
- Introduce option -S|—silent-ssl: Silence SSL output by @TinCanTech in #913
- CI: Update checkout to v3 by @TinCanTech in #917
- Replace fixed offset date code by @TinCanTech in #918
- vars file: Allow ‘EASYRSA_VARS_FILE’ to be set externally by @TinCanTech in #924
- Status reports: Leap Years, apply Day Feb-29 after Feb-28 by @TinCanTech in #928
- easyrsa_openssl(): Create a safe SSL config once per instance ONLY by @TinCanTech in #931
- Windows: Warn when using Windows default location in ‘Program Files’ by @TinCanTech in #937
- secure_session(): Move in verify_working_env() Remove from ‘init-pki’ by @TinCanTech in #938
- Introduce global option —force-safe-ssl by @TinCanTech in #935
- vars: Prohibit use of
export
andunset
invars
file by @TinCanTech in #932 - Status reports: Additional check, Use SSL to determine expiration by @TinCanTech in #940
- import-req: Check input file exists by @TinCanTech in #945
- remove_secure_session(): Return-On-Success Only by @TinCanTech in #943
- X509-types insert markers: Move and improve by @TinCanTech in #946
- easyrsa_openssl(): makesafecnf — Copy temp-file do NOT move by @TinCanTech in #948
- mutual_exclusions(): Use of —silent and —verbose is unresolvable by @TinCanTech in #949
- Build Safe SSL config at correct stage by @TinCanTech in #954
- build-ca: Replace password temp-file method with file-descriptors by @TinCanTech in #955
Full Changelog: v3.1.2…v3.1.3
v3.1.2
What’s Changed
- Command ‘renew’: Remove option ‘nopass’ by @TinCanTech in #741
- find_x509_types_dir(): Remove excess checks by @TinCanTech in #742
- Remove function find_x509_types_dir() by @TinCanTech in #743
- For ‘init-pki hard’ only, always try to create a new pki/vars file by @TinCanTech in #744
- Introduce global option ‘—notext|—no-text’ by @TinCanTech in #745
- Minor style change by @TinCanTech in #746
- Introduce command ‘set-pass’ by @TinCanTech in #756
- Fix shellcheck warning for command set-pass case statement by @TinCanTech in #777
- cleanup(): Exit correctly for SIGINT by @TinCanTech in #775
- Update help: Standardise output; Improve code; Reprioritise options by @TinCanTech in #778
- vars.example: Add EASYRSA_NO_PASS and wrap long lines by @TinCanTech in #783
- Use ‘unset -v’, consistently by @TinCanTech in #784
- build-ca: Improve passphrase input mechanism by @TinCanTech in #786
- Remove global options ‘—verbose’ and ‘—quiet’ as not required by @TinCanTech in #789
- Remove all prerequisite code to build a safe SSL config file by @TinCanTech in #791
- Rename temp files to reflect the purpose by @TinCanTech in #793
- easyrsa_openssl(): Always set OPENSSL_CONF to EasyRSA safe SSL config by @TinCanTech in #794
- Replace SSL calls for serial number with function ssl_cert_serial() by @TinCanTech in #797
- Introduce OpenSSL only mode: No Safe SSL Config File by @TinCanTech in #800
- ff_date_to_cert_date(): Correct the input format for busybox date by @TinCanTech in #806
- Re-order easyrsa_openssl() temp-file assignment by @TinCanTech in #807
- Stop EASYRSA_DEBUG interfering with SSL output from subshells by @TinCanTech in #808
- Status reports: Recognise Expired certificates by @TinCanTech in #810
- New function safe_set_var(): Safe wrapper for set_var() by @TinCanTech in #811
- Windows, build-ca: Add input password to re-open private key by @TinCanTech in #813
- Renewal: General code improvements by @TinCanTech in #817
- cleanup(): General improvements — Create KNOWN error exit by @TinCanTech in #818
- build-ca: Change FATAL error to warning for old openssl-easyrsa.cnf by @TinCanTech in #821
- Allow —fix-offset to create post-dated certificates by @TinCanTech in #804
- Default settings: Make default Edwards curve ED25519 by @TinCanTech in #828
- cleanup(): Exit with numeric error-code only by @TinCanTech in #831
- init-pki(): Introduce second warning before HARD removal by @TinCanTech in #832
- build-full: Always enable inline file creation by @TinCanTech in #834
- Global option ‘—passout’ always take priority ONLY by @TinCanTech in #839
- Status Reports: Set ‘LC_TIME=C.UTF-8’, only used for reports by @TinCanTech in #840
- Option —fix-offset: Adjust off-by-one day by @TinCanTech in #847
Full Changelog: v3.1.1…v3.1.2
v3.1.1
2022-10-14 — Signatures were corrupted on upload. Re-uploading verified sigs.
What’s Changed
- Standardise all output for warn(), notice() and message():[New] by @TinCanTech in #574
- Expand status reports to include checking a single certificate by @TinCanTech in #577
- Introduce ‘rewind-renew’ — Recover «guineapig» renewed certificates by @TinCanTech in #579
- Improve revocation and renewal functions by @TinCanTech in #580
- Correctly quote ‘sed’ and auto-escape ampersand by @TinCanTech in #584
- Auto-escape ‘&’ and ‘$’ in ‘org’ mode fields — Other minor tweaks by @TinCanTech in #590
- Remove restrictive 30-day window hindering ‘renew’ by @TinCanTech in #594
- Replace cert dates by @TinCanTech in #595
- Introduce ‘serialNumber’ field for DN (OID 2.5.4.5) by @TinCanTech in #606
- Upgrade-23: Assign a secure session for temporary directory by @TinCanTech in #623
- Introduce ‘renew-req’: Create new CSR for an existing private key by @TinCanTech in #616
- Restore files when ‘renew’ fails during ‘build_full()’ phase by @TinCanTech in #617
- Ensure ‘pki/renewed/’ exist for ‘rewind-renew’ by @TinCanTech in #618
- Allow vars file to exist in current directory (Fix make-cadir) by @TinCanTech in #635
- gen-dh: Use temporary file by @TinCanTech in #636
- sign—req: Prohibit COMMON as a certificate type by @TinCanTech in #637
- show: Reorder parameter checks to guard against empty input by @TinCanTech in #639
- verify_ca_init: Reorder names to improve error message by @TinCanTech in #638
- Re-enable the use of —vars=file for init-pki by @TinCanTech in #640
- Expand the possible values of $prog_dir, include full path by @TinCanTech in #641
- vars_setup(): Always warn about unsupported characters in vars by @TinCanTech in #642
- renew: Improve notices and input check by @TinCanTech in #645
- Options: Check that $val is numeric when a number is expected by @TinCanTech in #646
- Unsupported characters: Correct check and warning message by @TinCanTech in #649
- sign-req: Enforce X509-type files exist and are used. (#581) by @TinCanTech in #650
- cleanup: Make «clean line» respect silent, batch and quiet modes by @TinCanTech in #652
- Overhaul vars detection by @TinCanTech in #655
- detect_host: Use SSL Library version from EasyRSA version by @TinCanTech in #656
- Options: Add ‘-s’ to also enabe —silent mode. by @TinCanTech in #657
- Options: Rescind deprecation notice of option —req-cn by @TinCanTech in #660
- x509-types: Add x509-types location to usage() STATUS by @TinCanTech in #662
- vars_setup: Correctly locate x509-types for usage() directory STATUS by @TinCanTech in #665
- x509-types: Reset non-existent x509-types dir set by vars by @TinCanTech in #666
- fixed typo by @ashutoshojha5 in #670
- Options: Expand alias ‘—days’ to all suitable options with a period by @TinCanTech in #674
- Options: Introduce —keep-tmp=NAME; Keep the temporary session data by @TinCanTech in #667
- Option —req-cn: Restore original behavior from v30x series by @TinCanTech in #682
- renew-req: Add command option ‘nopass’ by @TinCanTech in #683
- Remove renew-req by @TinCanTech in #685
- Documentation: Add EasyRSA-Renew-and-Revoke.md by @TinCanTech in #690
- X509-types: Always check SSL config file for EasyRSA insert-markers by @TinCanTech in #695
- Rename ‘renew’ to ‘rebuild’ — Introduce ‘renew’ version 3 by @TinCanTech in #688
- build-ca: Check x509-types ‘ca’ and ‘COMMON’ files exist by @TinCanTech in #697
- Status Report ‘show-renew’: Include renewed certs from /cert_by_serial by @TinCanTech in #700
- Doc-Update: Note that all changes were included with Easy-RSA v3.1.1 by @TinCanTech in #701
- ChangeLog: Final update for v3.1.1 by @TinCanTech in #702
- build_full: Remove sign_req() subshell and do full cleanup by @TinCanTech in #705
- Option —keep-tmp: Append EASYRSA_TEMP_DIR_session random number by @TinCanTech in #711
- Option —keep-tmp: Reliability improvements by @TinCanTech in #712
- Opt. —subca-len: basicConstraints CA extension, Append ‘pathlen:N’ by @TinCanTech in #706
- Refactor Netscape support by @TinCanTech in #710
- help: Document supported certificate X509 types by @TinCanTech in #704
- Remove obsolete command ‘renewable’ by @TinCanTech in #715
- Doc: EasyRSA-Contributing.md — Update by @TinCanTech in #719
- init-pki soft: Include delete of revoked and renewed sub-directories by @TinCanTech in #720
New Contributors
- @ashutoshojha5 made their first contribution in #670
Full Changelog: v3.1.0…v3.1.1
EasyRSA 3.1.0
NOTICE
This version of EasyRSA introduces OpenSSL 3 (3.0.3). Effectively, v3.1.0 is nearly identical to v3.0.9, but we ship different binaries in the Windows package. @TinCanTech has put a ton of work in to support for the new OpenSSL, but there may be bugs. We intend to make big changes early in the v3.1.x branch and only back-port bug fixes to v3.0.x going forward.
What’s Changed
- Add ‘verify’ — SSL Verify certificate against CA by @TinCanTech in #549
- Release/3.0 by @ecrist in #558
- Backport patch for #559 to 3.0 by @ecrist in #563
- Always respect —vars=file by @nkakouros in #562
- Introduce extensible PKI reporting tool framework by @TinCanTech in #557
- Add command for testing which certificates are eligible for renewal by @AndersBlomdell in #555
- update ChangeLog for v3.0.9 final release by @ecrist in #570
- update python call, remove test pki on build by @ecrist in #575
New Contributors
- @ecrist made their first contribution in #558
Full Changelog: v3.0.9…v3.1.0
Our ChangeLog
3.1.0 (2022-05-18)
* Introduce basic support for OpenSSL version 3 (#492)
* Update regex in grep to be POSIX compliant (#556)
* Introduce status reporting tools (#555 & #557)
* Display certificates using UTF8 (#551)
* Allow certificates to be created with fixed date offset (#550)
* Add 'verify' to verify certificate against CA (#549)
* Add PKCS#12 alias 'friendlyName' (#544)
* Disallow use of '--vars=FILE init-pki' (#566)
* Support multiple IP-Addresses in SAN (#564)
* Add option '--renew-days=NN', custom renew grace period (#557)
* Add 'nopass' option to the 'export-pkcs' functions (#411)
* Add support for 'busybox' (#543)
* Add option '--tmp-dir=DIR' to declare Temp-dir (Commit f503a22)
EasyRSA 3.0.9
** Note: Files here were updated to remove a test pki mistakenly included with the original. There are no functional changes to the release. **
What’s Changed
- fixed renew filename confusion by @patchhoernchen in #443
- Introduce support for OpenSSL version 3 by @TinCanTech in #492
- small typo fix by @thesteve0 in #463
- Re-arrange «# Signing a request» to fix markdown problem by @TinCanTech in #495
- OpenSSL Configuration: Add required white space separator by @TinCanTech in #496
- Simple maintenance improvements by @a1346054 in #455
- Add possibility to configure umask by @faxm0dem in #460
- Update EasyRSA-Readme.md by @noah-de in #426
- Windows unit test: On error then exit with error by @TinCanTech in #500
- Bugfix/spaces in path by @markus-t314 in #427
- Expand new verify_ssl_lib() to support LibreSSL version 2.x (again) by @TinCanTech in #505
- Add SSL Library version 2 to easyrsa_openssl() by @TinCanTech in #507
- Introduce install_data_to_pki() — Copy data-files to PKI by @TinCanTech in #510
- When initialising a new PKI, create «$EASYRSA_PKI/vars’ from example by @TinCanTech in #513
- Improve install_data_to_pki(): Create pki/vars at ‘init-pki’ by @TinCanTech in #514
- added support to specify open-ssl config file using —ssl-conf command flag by @mxc5178 in #67
- Add notice to ‘init-pki’: ‘vars’ file has now moved to PKI above by @TinCanTech in #515
- copy_data_to_pki(): Immediate exit-with-error or ‘shift’ on success by @TinCanTech in #516
- Add authority information access example by @IPv4v6 in #307
- Fix renew on OpenBSD by @pacija in #418
- Remove obsolete function copy_data_to_pki() by @wiscii in #521
- Make gen_req() Always use EASYRSA_REQ_CN as intended by @TinCanTech in #524
- Remove inline file for revoke and renew by @TinCanTech in #529
- Use x509-types ‘ca’ and COMMON when building a CA by @TinCanTech in #526
- shellcheck recommendations (Ongoing) by @TinCanTech in #527
- Separate silent-mode from batch-mode — Respect batch-mode by @TinCanTech in #523
- Introduce new vars_setup() regime by @TinCanTech in #528
- Silence cleanup() by @TinCanTech in #534
- Detect Windows and Git-for-Windows bash by @TinCanTech in #533
- Remove EASYRSA_EXTRA_EXTS code injection inside ‘sed’ script. by @TinCanTech in #535
- Disallow use of single quote (‘) in vars file by @TinCanTech in #530
- easyrsa_openssl() — Minor syle changes by @TinCanTech in #536
- build_ca() — Quote temporary password file «$out_key_pass_tmp» by @TinCanTech in #537
- Replace non-POSIX mktemp with POSIX mkdir and mv by @TinCanTech in #541
- Make build-ca() almost completely SSL library version independent by @TinCanTech in #542
- added option to set PKCS#12 alias name by @jdelker in #544
- Adds export-p1 command by @nkakouros in #341
- revoke(): Purge unquoted $opts + General improvements by @TinCanTech in #546
- Introduce ‘revoke-renewed’ by @TinCanTech in #547
- Display certificates in UTF8 by @AndersBlomdell in #551
- Set notBefore/notAfter to the beginning of the year to issuing certificate (v2) by @ValdikSS in #550
- Add ‘verify’ — SSL Verify certificate against CA by @TinCanTech in #549
- Release/3.0 by @ecrist in #558
- Backport patch for #559 to 3.0 by @ecrist in #563
- Always respect —vars=file by @nkakouros in #562
- Introduce extensible PKI reporting tool framework by @TinCanTech in #557
- Add command for testing which certificates are eligible for renewal by @AndersBlomdell in #555
New Contributors
- @patchhoernchen made their first contribution in #443
- @thesteve0 made their first contribution in #463
- @noah-de made their first contribution in #426
- @markus-t314 made their first contribution in #427
- @mxc5178 made their first contribution in #67
- @pacija made their first contribution in #418
- @wiscii made their first contribution in #521
- @jdelker made their first contribution in #544
- @AndersBlomdell made their first contribution in #551
- @ecrist made their first contribution in #558
Full Changelog: v3.0.8…v3.0.9
v3.0.9-rc1
3.0.9 (2022-05-04)
- Upgrade OpenSSL from 1.1.0j to 1.1.1o (#405, #407)
- We are buliding this ourselves now.
- Fix —version so it uses EASYRSA_OPENSSL (#416)
- Use openssl rand instead of non-POSIX mktemp (#478)
- Fix paths with spaces (#443)
- Correct OpenSSL version from Homebrew on macOs (#416)
- Fix revoking a renewed certificate (Original PR #394)
Follow-up commit: ef22701 - Introduce ‘show-crl’ (d199389)
- Support Windows-Git ‘version of bash’ (#533)
- Disallow use of single quote (‘) in vars file, Warning (#530)
- Creating a CA uses x509-types/ca and COMMON (#526)
- Prefer ‘PKI/vars’ over all other locations (#528)
- Introduce ‘init-pki soft’ option (#197)
- Warnings are no longer silenced by —batch (#523)
- Improve packaging options (#510)
*** Lots of work by Richard Bonhomme on this release! ***
What’s Changed
- fixed renew filename confusion by @patchhoernchen in #443
- Introduce support for OpenSSL version 3 by @TinCanTech in #492
- small typo fix by @thesteve0 in #463
- Re-arrange «# Signing a request» to fix markdown problem by @TinCanTech in #495
- OpenSSL Configuration: Add required white space separator by @TinCanTech in #496
- Simple maintenance improvements by @a1346054 in #455
- Add possibility to configure umask by @faxm0dem in #460
- Update EasyRSA-Readme.md by @noah-de in #426
- Windows unit test: On error then exit with error by @TinCanTech in #500
- Bugfix/spaces in path by @markus-t314 in #427
- Expand new verify_ssl_lib() to support LibreSSL version 2.x (again) by @TinCanTech in #505
- Add SSL Library version 2 to easyrsa_openssl() by @TinCanTech in #507
- Introduce install_data_to_pki() — Copy data-files to PKI by @TinCanTech in #510
- When initialising a new PKI, create «$EASYRSA_PKI/vars’ from example by @TinCanTech in #513
- Improve install_data_to_pki(): Create pki/vars at ‘init-pki’ by @TinCanTech in #514
- added support to specify open-ssl config file using —ssl-conf command flag by @mxc5178 in #67
- Add notice to ‘init-pki’: ‘vars’ file has now moved to PKI above by @TinCanTech in #515
- copy_data_to_pki(): Immediate exit-with-error or ‘shift’ on success by @TinCanTech in #516
- Add authority information access example by @IPv4v6 in #307
- Fix renew on OpenBSD by @pacija in #418
- Remove obsolete function copy_data_to_pki() by @wiscii in #521
- Make gen_req() Always use EASYRSA_REQ_CN as intended by @TinCanTech in #524
- Remove inline file for revoke and renew by @TinCanTech in #529
- Use x509-types ‘ca’ and COMMON when building a CA by @TinCanTech in #526
- shellcheck recommendations (Ongoing) by @TinCanTech in #527
- Separate silent-mode from batch-mode — Respect batch-mode by @TinCanTech in #523
- Introduce new vars_setup() regime by @TinCanTech in #528
- Silence cleanup() by @TinCanTech in #534
- Detect Windows and Git-for-Windows bash by @TinCanTech in #533
- Remove EASYRSA_EXTRA_EXTS code injection inside ‘sed’ script. by @TinCanTech in #535
- Disallow use of single quote (‘) in vars file by @TinCanTech in #530
- easyrsa_openssl() — Minor syle changes by @TinCanTech in #536
- build_ca() — Quote temporary password file «$out_key_pass_tmp» by @TinCanTech in #537
- Replace non-POSIX mktemp with POSIX mkdir and mv by @TinCanTech in #541
- Make build-ca() almost completely SSL library version independent by @TinCanTech in #542
- added option to set PKCS#12 alias name by @jdelker in #544
- Adds export-p1 command by @nkakouros in #341
- revoke(): Purge unquoted $opts + General improvements by @TinCanTech in #546
- Introduce ‘revoke-renewed’ by @TinCanTech in #547
- Display certificates in UTF8 by @AndersBlomdell in #551
- Set notBefore/notAfter to the beginning of the year to issuing certificate (v2) by @ValdikSS in #550
New Contributors
- @patchhoernchen made their first contribution in #443
- @thesteve0 made their first contribution in #463
- @noah-de made their first contribution in #426
- @markus-t314 made their first contribution in #427
- @mxc5178 made their first contribution in #67
- @pacija made their first contribution in #418
- @wiscii made their first contribution in #521
- @jdelker made their first contribution in #544
- @AndersBlomdell made their first contribution in #551
Full Changelog: v3.0.8…v3.0.9-rc1
EasyRSA 3.0.8
3.0.8 (2020-09-09)
- Provide —version option (#372)
- Version information now within generated certificates like on *nix
- Fixed issue where gen-dh overwrote existing files without warning (#373)
- Fixed issue with ED/EC certificates were still signed by RSA (#374)
- Added support for export-p8 (#339)
- Clarified error message (#384)
- 2->3 upgrade now errors and prints message when vars isn’t found (#377)
- Update OpenSSL Windows binaries to 1.1.1g
- Reverted OpenSSL back to 1.1.0j
OpenVPN – это набор open source программ, который заслуженно является одним из самых популярных и легких решений для реализации защищенной VPN сети. OpenVPN позволяет объединить в единую сеть сервер и клиентов (даже находящиеся за NAT или файерволами), или объединить сети удаленных офисов. Серверную часть OpenVPN можно развернуть практически на всех доступных операционных системах (пример настройки OpenVPN на Linux). Вы можете установить OpenVPN сервер даже на обычный компьютер с десктопной редакцией Windows 10.
В этой статье, мы покажем, как установить OpenVPN сервер на компьютер с Windows 10, настроить OpenVPN клиент на другом Windows хосте и установить защищенное VPN подключение.
Содержание:
- Установка службы OpenVPN сервера в Windows
- Создаем ключи шифрования и сертификаты для OpenVPN
- Конфигурационный файл OpenVPN сервера в Windows
- Настройка OpenVPN клиента в Windows
Установка службы OpenVPN сервера в Windows
Скачайте MSI установщик OpenVPN для вашей версии Windows с официального сайта (https://openvpn.net/community-downloads/). В нашем случае это OpenVPN-2.5.5-I602-amd64.msi (https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.5-I602-amd64.msi).
Запустите установку.
Если вы планируете, OpenVPN сервер работал в автоматическом режиме, можно не устанавливать OpenVPN GUI. Обязательно установите OpenVPN Services.
Начиная с версии OpenVPN 2.5, поддерживается драйвер WinTun от разработчиков WireGuard. Считается, что этот драйвер работает быстрее чем классический OpenVPN драйвер TAP. Установите драйвер Wintun, откажитесь от установки TAP-Windows6.
Установите OpenSSL утилиту EasyRSA Certificate Management Scripts.
Запустите установку.
По умолчанию OpenVPN устаналивается в каталог C:\Program Files\OpenVPN.
После окончания установки появится новый сетевой адаптер типа Wintun Userspace Tunnel. Этот адаптер отключен, если служба OpenVPN не запущена.
Создаем ключи шифрования и сертификаты для OpenVPN
OpenVPN основан на шифровании OpenSSL. Это означает, что для обмена трафиком между клиентом и серверов VPN нужно сгенерировать ключи и сертификаты с использованием RSA3.
Откройте командную строку и перейдите в каталог easy-rsa:
cd C:\Program Files\OpenVPN\easy-rsa
Создайте копию файла:
copy vars.example vars
Откройте файл vars с помощью любого текстового редактора. Проверьте пути к рабочим директориям.
Обязательно поправьте переменную EASYRSA_TEMP_DIR следующим образом:
set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"
Можете заполнить поля для сертификатов (опционально)
set_var EASYRSA_REQ_COUNTRY "RU" set_var EASYRSA_REQ_PROVINCE "MSK" set_var EASYRSA_REQ_CITY "MSK" set_var EASYRSA_REQ_ORG "IT-Company" set_var EASYRSA_REQ_EMAIL " [email protected] " set_var EASYRSA_REQ_OU " IT department "
Срок действия сертификатов задается с помощью:
#set_var EASYRSA_CA_EXPIRE 3650 #set_var EASYRSA_CERT_EXPIRE 825
Сохраните файл и выполните команду:
EasyRSA-Start.bat
Следующие команды выполняются в среде EasyRSA Shell:
Инициализация PKI:
./easyrsa init-pki
Должна появится надпись:
init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki
Теперь нужно сгенерировать корневой CA:
./easyrsa build-ca
Задайте дважды пароль для CA:
CA creation complete and you may now import and sign cert requests.
Данная команда сформировала:
- Корневой сертификат центра сертификации: «C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt»
- Ключ центра сертификации «C:\Program Files\OpenVPN\easy-rsa\pki\private\ca.key»
Теперь нужно сгенерировать запрос сертификата и ключ для вашего сервера OpenVPN:
./easyrsa gen-req server nopass
Утилита сгенерирует два файла:
req: C:/Program Files/OpenVPN/easy-rsa/pki/reqs/server.req key: C:/Program Files/OpenVPN/easy-rsa/pki/private/server.key
Подпишем запрос на выпуск сертификата сервера с помощью нашего CA:
./easyrsa sign-req server server
Подтвердите правильность данных, набрав yes.
Затем введите пароль CA от корневого CA.
В каталоге issued появится сертификат сервера («C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt»)
Теперь можно создать ключи Диффи-Хеллмана (займет длительное время):
./easyrsa gen-dh
Для дополнительной защиты VPN сервера желательно включить tls-auth. Данная технология позволяет использовать подписи HMAC к handshake-пакетам SSL/TLS, инициируя дополнительную проверку целостности. Пакеты без такой подписи будут отбрасываться VPN сервером. Это защитит вас от сканирования порта VPN сервера, DoS атак, переполнения буфера SSL/TLS.
Сгенерируйте ключ tls-auth:
cd C:\Program Files\OpenVPN\bin
openvpn --genkey secret ta.key
Должен появиться файл «C:\Program Files\OpenVPN\bin\ta.key». Переместите его в каталог C:\Program Files\OpenVPN\easy-rsa\pki
Теперь можно сформировать ключи для клиентов OpenVPN. Для каждого клиента, который будет подключаться к вашему серверу нужно создать собственные ключи.
Есть несколько способов генерации ключей и передачи их клиентам. В следующем примере, мы создадим на сервере ключ клиента и защитим его паролем:
./easyrsa gen-req kbuldogov
./easyrsa sign-req client kbuldogov
Данный ключ («C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov.key») нужно передать клиенту и сообщить пароль. Клиент может снять защиту паролем для ключа:
openssl rsa -in "C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov.key"-out "C:\Program Files\OpenVPN\easy-rsa\pki\private\kbuldogov_use.key"
Если вы хотите сгенерировать ключ, не защищенный паролем, нужно выполнить команду:
./easyrsa gen-req имяклиента nopass
На сервере с OpenVPN вы можете создать неограниченное количество ключей и сертификатов для пользователей. Аналогичным образом сформируйте ключи и сертфикаты для других клиентов.
Вы можете отохвать скомпрометированные сертификаты клиентов:
cd C:\Program Files\OpenVPN\easy-rsa
EasyRSA-Start.bat
./easyrsa revoke kbuldogov
Итак, мы сгенерировали набор ключей и сертификатов для OpenVPN сервера. Теперь можно настроить и запустить службу OpenVPN.
Конфигурационный файл OpenVPN сервера в Windows
Скопируйте типовой конфигурационный файл OpenVPN сервера:
copy "C:\Program Files\OpenVPN\sample-config\server.ovpn" "C:\Program Files\OpenVPN\config-auto\server.ovpn"
Откройте файл server.ovpn в любом текстовом редакторе и внесите свои настройки. Я использую следующий конфиг для OpenVPN:
# Указываем порт, протокол и устройство port 1194 proto udp dev tun # Указываем пути к сертификатам сервера ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt" cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\server.crt" key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\server.key" dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem" # Указываем настройки IP сети, адреса из которой будет будут получать VPN клиенты server 10.24.1.0 255.255.255.0 #если нужно разрешить клиентам подключаться под одним ключом, нужвно включить опцию duplicate-cn (не рекомендуется) #duplicate-cn # TLS защита tls-auth "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ta.key" 0 cipher AES-256-GCM # Другая параметры keepalive 20 60 persist-key persist-tun status "C:\\Program Files\\OpenVPN\\log\\status.log" log "C:\\Program Files\\OpenVPN\\log\\openvpn.log" verb 3 mute 20 windows-driver wintun
Сохраните файл.
OpenVPN позволяет использовать как TCP, так и UDP для подключения. В этом примере я запустил OpenVPN на 1194 UDP. Рекомендуется использовать протокол UDP, это оптимально как с точки зрения производительности, так и безопасности.
Не забудьте открыть на файерволе порты для указанного вами порта OpenVPN на клиенте и на сервере. Можно открыть порты в Windows Defender с помощью PowerShell.
Правило для сервера:
New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP –LocalPort 1194 -Action Allow
Правило для клиента:
New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -Direction Outbound -Protocol UDP –LocalPort 1194 -Action Allow
Теперь нужно запустить службу OpenVPN и изменить тип ее запуска на автоматический. Воспользуйтесь таким командами PowerShell, чтобы включить службу:
Set-Service OpenVPNService –startuptype automatic –passthru
Get-Service OpenVPNService| Start-Service
Откройте панель управления, и убедитесь, что виртуальный сетевой адаптер OpenVPN Wintun теперь активен. Если нет, смотрите лог «C:\Program Files\OpenVPN\log\server.log»
Если при запуске OpenVPN вы видите в логе ошибку:
Options error: In C:\Program Files\OpenVPN\config-auto\server.ovpn:1: Maximum option line length (256) exceeded, line starts with..
Смените в файле server.ovpn символы переноса строки на Windows CRLF (в notepad++ нужно выбрать Edit -> EOL Conversion -> Windows CR LF). Сохраните файл, перезапустите службу OpevVPNService.
Данный конфиг позволит удаленным клиентам получить доступ только к серверу, но другие компьютеры и сервисы в локальной сети сервера для них недоступны. Чтобы разрешить клиентам OpenVPN получить доступ к внутренней сети нужно:
Включить опцию IPEnableRouter в реестре (включает IP маршрутизацию в Windows, в том числе включает маршрутизацию меду сетями Hyper-V): reg add «HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters» /v IPEnableRouter /t REG_DWORD /d 1 /f
Добавьте в конфгурационный файл сервера OpenVPN маршруты до внутренней IP сети:
push "route 10.24.1.0 255.255.255.0" push "route 192.168.100.0 255.255.255.0"
Если нужно, назначьте клиенту адреса DNS серверов:
push "dhcp-option DNS 192.168.100.11" push "dhcp-option DNS 192.168.100.12"
Если нужно завернуть все запросы клиента (в том числе Интернет трафик) на ваш OpenVPN сервер, добавьте опцию:
push "redirect-gateway def1"
Настройка OpenVPN клиента в Windows
Создайте на сервере шаблонный конфигурационный файла для клиента VPN (на базе iшаблона client.ovpn) со следующими параметрами (имя файла kbuldovov.ovpn)
client dev tun proto udp remote your_vpn_server_address 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert kbuldogov.crt key kbuldogov.key remote-cert-tls server tls-auth ta.key 1 cipher AES-256-GCM connect-retry-max 25 verb 3
В директиве remote указывается публичный IP адрес или DNS имя вашего сервера OpenVPN.
Скачайте и установите клиент OpenVPN Connect для Windows (https://openvpn.net/downloads/openvpn-connect-v3-windows.msi).
Теперь на компьютер с клиентом OpenVPN нужно с сервера скопировать файлы:
- ca.crt
- kbuldogov.crt
- kbuldogov.key
- dh.pem
- ta.key
- kbuldogov.ovpn
Теперь импортируйте файл с профилем *.ovpn и попробуйте подключиться к вашему VPN серверу.
Если все настроено правильно, появится такая картинка.
Проверьте теперь лог OpenVPN на клиенте «C:\Program Files\OpenVPN Connect\agent.log»
Mon Dec 27 08:09:30 2021 proxy_auto_config_url Mon Dec 27 08:09:31 2021 TUN SETUP TAP ADAPTERS: guid='{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}' index=22 name='Local Area Connection' Open TAP device "Local Area Connection" PATH="\\.\Global\{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}.tap" SUCCEEDED TAP-Windows Driver Version 9.24 ActionDeleteAllRoutesOnInterface iface_index=22 netsh interface ip set interface 22 metric=1 Ok. netsh interface ip set address 22 static 10.24.1.6 255.255.255.252 gateway=10.24.1.5 store=active IPHelper: add route 10.24.1.1/32 22 10.24.1.5 metric=-1
Клиент успешно подключится к OpenVPN серверу и получил IP адрес 10.24.1.6.
Проверьте теперь лог на сервере («C:\Program Files\OpenVPN\log\openvpn.log»). Здесь также видно, что клиент с сертификатом kbuldogov успешно подключится к вашему серверу.
2021-12-27 08:09:35 192.168.13.202:55648 [kbuldogov] Peer Connection Initiated with [AF_INET6]::ffff:192.168.13.202:55648 2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI_sva: pool returned IPv4=10.24.1.6, IPv6=(Not enabled) 2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: Learn: 10.24.1.6 -> kbuldogov/192.168.13.202:55648 2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: primary virtual IP for kbuldogov/192.168.13.202:55648: 10.24.1.6
OpenVPN — популярная технология для создания защищенных частных сетей (VPN), использующих аутентификацию и шифрование на основе протокола SSL/TLS. Для упрощения процедуры создания необходимых ключей и сертификатов традиционно используется утилита Easy-RSA, которая позволяет легко управлять локальным центром сертификации (CA) инфраструктуры открытых ключей (PKI). Сегодня мы поговорим о работе с новой версией утилиты Easy-RSA 3, которая серьезно отличается по синтаксису от используемой ранее Easy-RSA 2 и входит в состав новых дистрибутивов Debian и Ubuntu.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
На первый взгляд может показаться, что разработчики Easy-RSA серьезно все поменяли, но это не так, если вы понимаете, как устроена инфраструктура открытых ключей, то вам будет ясно, что работа утилиты изменилась только по форме, но не по сути. Она стала более целостной и простой в использовании, но в тоже время приобрела ряд новых функции, свойственных более «взрослым» продуктам. В настоящий момент Easy-RSA 3 входит в состав Debian 10, а также Ubuntu 18.10 и новее.
Установка Easy-RSA и создание центра сертификации
Для установки Easy-RSA 3 выполним:
apt install easy-rsa
После чего убедимся, что установлена именно третья версия утилиты:
dpkg -l easy-rsa
Обычно затем директорию с easy-rsa копируют в конфигурационную папку OpenVPN, но на наш взгляд CA лучше располагать отдельно, поэтому мы скопируем директорию просто в /etc, однако это ни не что не влияет, и вы можете поступить по своему разумению.
cp -r /usr/share/easy-rsa /etc
Затем изменим рабочую директорию на скопированную нами папку:
cd /etc/easy-rsa
Если вас устраивают параметры по умолчанию, то следующий шаг можно пропустить и сразу перейти к созданию инфраструктуры PKI. Однако мы советуем потратить немного времени на тонкую настройку вашего CA.
Прежде всего скопируем шаблон файла настроек:
cp vars.example vars
и откроем файл vars на редактирование. Строки вида #set_var содержат значения по умолчанию, для их именения строку нужно раскомментировать и указать собственное значение. Начнем с опции EASYRSA_DN, она предусматривает два режима: упрощенный cn_only, при котором сертификат содержит только CN (имя того, кому выдан сертификат) и традиционный org, при котором заполняются все реквизиты организации. Для OpenVPN можно использовать любой режим. Мы установим традиционный:
set_var EASYRSA_DN "org"
После чего раскомментируйте и заполните блок ниже своими данными (в примере указаны наши):
set.var EASYRSA_REQ_COUNTRY "RU"
set.var EASYRSA_REQ_PROVINCE "31"
set.var EASYRSA_REQ_CITY "BELGOROD"
set.var EASYRSA_REQ_ORG "Interface LLC"
set_var EASYRSA_REQ_EMAIL "admin@example.org"
set.var EASYRSA_REQ_OU "IT"
Заметьте, что если вы оставили cn_only, то редактировать вышеуказанные опции не имеет смысла.
Параметр EASYRSA_KEY_SIZE указывает размер ключа, на сегодняшний день безопасным считается размер начиная с 2048, если вы ставите на первое место безопасность, то можете увеличить его до 3072 или 4096. Если криптографическая стойкость не играет роли, например, туннель будет использован для доступа в интернет и предполагается использование слабых устройств, то можно уменьшить размер ключа до 1024.
Опции EASYRSA_CA_EXPIRE и EASYRSA_CERT_EXPIRE задают срок действия корневого сертификата CA и сертификатов пользователей (сервера и клиентов), их значения установлены в днях как 3650 (10 лет) и 1080 (5 лет), опция EASYRSA_CERT_RENEW задает количество дней до истечения сертификата, когда становится доступным его продление, по умолчанию это 30 дней. При необходимости вы можете изменить эти значения.
Сохраним внесенные изменения. Теперь инициализируем наш CA и выпустим корневую пару ключей. Обратите внимание, что данные действия следует выполнять единожды, повторное выполнение указанных команд уничтожит существующий CA и потребует повторного создания всех ключей и сертификатов.
./easyrsa init-pki
Данная команда инициализирует новую структуру центра сертификации с очисткой всех данных. После чего создадим файл для генерации случайных данных:
touch pki/.rnd
и активируем наш CA:
./easyrsa build-ca
При создании закрытого ключа центра сертификации вам будет предложено ввести пароль, не следует пренебрегать этой возможностью, так как закрытый ключ — основа вашей инфраструктуры открытых ключей и его компрометация приведет к компрометации всех выпущенных ключей и сертификатов. Также не забудьте указать собственное наименование центра сертификации в опции Common Name.
После выполнения этих команд будет выполнено создание структуры директорий CA, публичный сертификат центра сертификации ca.crt вы сможете найти в директории pki, а закрытый ключ ca.key в pki/private. Закрытый ключ является секретным и не при каких обстоятельствах не должен покидать свое расположение и тем более не должен передаваться по открытым каналам связи, доступ третьих лиц к закрытому ключу также следует ограничить.
Также не забудем сформировать файл параметров Диффи-Хеллмана dh.pem, он также будет расположен в директории pki:
./easyrsa gen-dh
На этом создание центра сертификации (CA) можно считать законченным.
Создание ключа и сертификата для сервера
В Easy-RSA 3 все «по-взрослому», сначала нам нужно создать запрос на сертификат:
./easyrsa gen-req ovpn-server nopass
где ovpn-server — имя вашего сервера, nopass означает, что закрытый ключ следует создать без пароля. При выполнении данной команды будет создан запрос на сертификат и сгенерирован закрытый ключ сервера ovpn-server.key, который будет располагаться в pki/private. Закрытый ключ является секретным и не должен передаваться по открытым каналам связи и доступ к нему также должен быть ограничен.
Для выпуска сертификата выполните:
./easyrsa sign-req server ovpn-server
Опция server обозначает выпуск сертификата для сервера. Для подтверждения выпуска вам нужно будет явно выразить свое согласие указав yes в ответ на соответствующий запрос, любый иные действия приведут к отмене действия. Затем потребуется ввести пароль закрытого ключа центра сертификации.
Выпущенные сертификаты будут располагаться в pki/issued.
Теперь скопируем необходимые сертификаты и ключи в конфигурационную директорию OpenVPN, предварительно создав там папку keys:
mkdir /etc/openvpn/keys
cp pki/ca.crt pki/dh.pem /etc/openvpn/keys
cp pki/private/ovpn-server.key pki/issued/ovpn-server.crt /etc/openvpn/keys
Дальнейшая настройка OpenVPN-сервера ничем не отличается от описанной нами ранее, и вы можете воспользоваться любой нашей инструкцией, смотрите блок Дополнительные материалы внизу статьи.
Создание ключа и сертификата для клиента
Точно также начнем с формирования запроса на сертификат:
./easyrsa gen-req ivanov_ivan nopass
где ivanov_ivan — имя клиента, а nopass предписывает создать закрытый ключ без пароля. Мы рекомендуем давать клиентам осмысленные имена, чтобы потом не пришлось долго гадать, кто именно скрывается под псевдонимом типа client123.
На основании запроса выпустим сертификат:
./easyrsa sign-req client ivanov_ivan
В данном случае используется опция client для указания формирования клиентского сертификата, вам также потребуется явно подтвердить действие и указать пароль от закрытого ключа CA.
Для передачи на клиент вам потребуется скопировать в доступную пользователю директорию закрытый ключ, сертификат клиента и сертификат CA. В нашем случае файлы будут скопированы в домашнюю директорию пользователя andrey.
cp pki/ca.crt pki/private/ivanov_ivan.key pki/issued/ivanov_ivan.crt /home/andrey
Затем изменим их владельца, чтобы файлы можно было скопировать, подключившись к системе с правами пользователя:
chown andrey:andrey ca.crt ivanov_ivan.key ivanov_ivan.crt
Закрытый ключ пользователя также является секретным и следует исключить его передачу по открытым каналам.
Списки отзыва и отзыв сертификатов
Если вы используете OpenVPN для организации связи между офисами или доступа в интернет, то вряд ли у вас возникнет потребность в отзыве сертификата. Другое дело, если вы предоставляете удаленный доступ к корпоративной сети с домашних ПК сотрудников, подрядчикам или аутсорсерам. Здесь может возникнуть масса ситуаций, когда доступ отдельных лиц следует прекратить: сотрудник уволился, истек срок договора с подрядчиком, сменили аутсорсера и т.д. и т.п.
Прежде всего создадим список отозванных сертификатов (CRL):
./easyrsa gen-crl
Затем создадим символьную ссылку на список в директории с ключами OpenVPN:
ln -s /etc/easy-rsa/pki/crl.pem /etc/openvpn/keys/
И внесем в конфигурационный файл сервера OpenVPN следующую строку:
crl-verify keys/crl.pem
После чего сервер OpenVPN потребуется перезапустить.
Теперь отзовем какой-либо сертификат:
./easyrsa revoke horns_and_hooves
Где horns_and_hooves — имя сертификата клиента (СN), после отзыва следует повторно опубликовать список отозванных сертификатов:
./easyrsa gen-crl
Посмотреть список сертификатов можно командой:
cat pki/index.txt
Действующие сертификаты имеют статус V в начале строки, отозванные — R.
Как видим, работа с Easy-RSA 3 не представляет каких-либо сложностей и надеемся, что данная статья будет вам полезна.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Before you read this post, familiarize yourself with the basics of running a VPN server on a home PC. These basics are explained in Helping friends in foreign countries. Most of that post applies to all home VPN servers, even if the clients are actually in the same country as you.
You can then proceed to install OpenVPN as a server on your PC.
We use Windows as a sample client at the end of this tutorial, but OpenVPN client software also exists for Linux, macOS, Android, and iOS.
Decisions
Decide whether your clients will access your PC by IP address or by DNS name.
In the examples in this post, we have used the DNS name alice.cscot.buzz
.
Decide on a protocol and port for your clients to reach your PC. OpenVPN supports both TCP and UDP. TCP is more reliable, whereas UDP is faster. If clients are subject to censorship, you may have heard about the old trick of using TCP on port 443. This rarely works against modern firewalls.
We will use UDP on port 1194
in our examples.
Open your PC’s firewall
We are using udp/1194
for client input. You should have already opened that port on your router and forwarded it to your PC. Now open that port for input in the Windows firewall like this:
- In the Windows search box, type
firewall
. - Select Windows Defender Firewall with Advanced Security.
- In the left pane, select Inbound Rules.
- In the right pane, select New Rule.
- Type is Port. Click Next.
- Type is UDP, and specific local port as
1194
. Click Next. - Action is Allow. Click Next.
- Leave all domains checked. Click Next.
- Set the Name to
OpenVPN Inbound
. - Click Finish.
When you are done, close Windows Defender Firewall with Advanced Security.
Install OpenVPN
Open your browser, and go to the OpenVPN Community Downloads page at https://openvpn.net/community-downloads.
Download the Windows 64-bit MSI installer. Run the installer.
Don’t install immediately. Make sure you click the Customize button first.
- Deselect the OpenVPN GUI, but make sure the OpenVPN Service remains selected
- Select the EasyRSA 3 Certificate Management Scripts
Click Install now.
When the installation is complete, click Close.
Initialize public key infrastructure
The installer has placed the EasyRSA 3 Certificate Management Scripts in C:\Program Files\OpenVPN\easy-rsa
.
In the Windows search box, type cmd
. Right-click on the Command Prompt app, and select Run as administrator.
Enter the command:
1 |
cd C:\Program Files\OpenVPN\easy-rsa |
Open an Easy-RSA shell:
1 |
EasyRSA-Start.bat |
Initialize your public key infrastructure by entering the command:
1 |
./easyrsa init-pki |
Your newly created public key infrastructure directory is C:\Program Files\OpenVPN\easy-rsa\pki
. It has a variables file named vars
inside it.
Optionally, launch Notepad with the Run as administrator option, and edit C:\Program Files\OpenVPN\easy-rsa\pki\vars
to your liking. Save the file if you edited it.
Create your CA. Inside the Easy-RSA shell enter the command:
1 |
./easyrsa build-ca nopass |
You are promoted for a Common Name. If you just press Enter, the Common Name defaults to Easy-RSA CA
.
Your new CA certificate file is created at C:/Program Files/OpenVPN/easy-rsa/pki/ca.crt
.
Build server certificate and key
Build a server certificate and key. In our example, the server will be named alice
.
1 |
./easyrsa build-server-full alice nopass |
You are asked to type the word yes
to confirm the details.
The certificate is created at C:/Program Files/OpenVPN/easy-rsa/pki/issued/alice.crt
. The inline file, which we will not use in this tutorial, is created at C:/Program Files/OpenVPN/easy-rsa/pki/inline/alice.inline
.
Build client certificate(s) and key(s)
For each client, build a client certificate and key. In our example, the first client will be named bob
:
1 |
./easyrsa build-client-full bob nopass |
You are asked to type the word yes
to confirm the details.
The certificate is created at C:/Program Files/OpenVPN/easy-rsa/pki/issued/bob.crt
. In this tutorial, we will use the automatically generated inline file to make it easier to construct a client .ovpn
file. The inline file is created at C:/Program Files/OpenVPN/easy-rsa/pki/inline/bob.inline
.
Build Diffie-Hellman parameters
The Diffie-Hellman parameters are used only by an OpenVPN server. They are not needed on the client(s).
1 |
./easyrsa gen-dh |
After the generation process, the Diffie-Hellman parameters of size 2048 are created at C:/Program Files/OpenVPN/easy-rsa/pki/dh.pem
.
Build TLS encryption key
Open a browser. Download the most recent Easy-TLS source code .zip
file from https://github.com/TinCanTech/easy-tls/releases.
Unzip the .zip
file.
Copy the file easytls
into C:\Program Files\OpenVPN\easy-rsa
. You need administrator permissions to do this.
Back inside the Easy-RSA shell in the Command Prompt window, initialize Easy-TLS:
1 |
./easytls init-tls |
Build a TLS crypt v1 key:
1 |
./easytls build-tls-crypt |
The TLS crypt v1 key is created at C:/Program Files/OpenVPN/easy-rsa/pki/easytls/tls-crypt.key
.
Exit the Easy-RSA shell:
1 |
exit |
Close the Command Prompt window for now.
Create server configuration file
Launch Notepad running as administrator.
Using the following as a model for your configuration. Of course, you must change values such as protocol (udp
), port (1194
), and server name (alice
) to match your choices.
1 |
dev tun |
When you are done editing, save the file as C:\Program Files\OpenVPN\config-auto\alice.ovpn
. Make sure you use the directory name config-auto
and that Notepad does not add .txt
to the end of the file name.
Close Notepad.
Enable forwarding
Open Control Panel > Network and Internet > Network and Sharing Center > Change adapter settings.
You will see that the installation has created a new network adapter described as TAP-Windows Adapter V9
. It will have a name such as OpenVPN TAP-Windows 6
.
Now open a Command Prompt window running as administrator. Determine the interface number of OpenVPN TAP-Windows 6
(or whatever name applies in your case) as follows. Issue the command:
1 |
netsh int ipv4 show int |
Note down the interface index number of OpenVPN TAP-Windows 6
(in our example). In our example, the interface index number was 11
.
See if forwarding is enabled. For example, if your interface index is 11
:
1 |
netsh int ipv4 show int 11 | findstr "Forwarding" |
If forwarding is disabled, then enable forwarding by issuing the command:
1 |
netsh int ipv4 set int 11 Forwarding="enabled" |
Double-check the results show Forwarding is enabled:
1 |
netsh int ipv4 show int 11 | findstr "Forwarding" |
Close the Command Prompt window for now.
Close the Control Panel for now.
Enable routing
In the Windows search box, type regedit
, right-click Registry Editor, and select Run as administrator. In the left pane, navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
.
Find IPEnableRouter
of type REG_DWORD
.
Set its value to 1
.
Click OK.
Close Registry Editor.
Start services
In the Windows search box, type services
, right-click the Services app, and select Run as administrator.
Find the row for Routing and Remote Access
.
- Right-click on it, and select Properties.
- Set the Startup type to Automatic.
- Click Apply.
- Click Start.
- Click OK.
Locate the row for OpenVPN Interactive service
.
- Right-click, and select Properties.
- Click Stop.
- Change its Startup type to Manual.
- Click Apply.
- Click OK.
Locate the row for OpenVPNService
.
- Stop the service.
- Start the service.
Close the Services app.
Open Windows File Explorer. Navigate to C:\Program Files\OpenVPN\log
. Check the log file alice.log
for any error messages. It should show Initialization Sequence Completed
.
Go to Windows Control Panel > Network and Internet > Network and Sharing Center > Change adapter settings.
On your main Internet network adapter (i.e. Ethernet or wireless), right-click, and select Properties.
Select the Sharing tab.
Check the box for Allow other network users to connect through this computer’s internet connection.
Select OpenVPN TAP-Windows 6
.
Click OK.
Disable and enable TAP-Windows Adapter V9
On the OpenVPN TAP-Windows 6
adapter (or whatever your TAP-Windows Adapter V9 is named), right-click, then disable and re-enable the adapter.
Close the Network Connections window.
Close the Control Panel windows.
Create client configuration
In Notepad, create a configuration file for the client. Model it on the following.
- You will need to change the remote DNS name or IP address to match your situation.
- Copy and paste in your inline certificates and keys from
C:/Program Files/OpenVPN/easy-rsa/pki/inline/bob.inline
. - Copy and paste in your TLS encryption key from
C:/Program Files/OpenVPN/easy-rsa/pki/easytls/tls-crypt.key
1 |
client |
Save the file in your server’s Documents
folder as bob.ovpn
.
Securely copy client ovpn file to client PC
Securely copy bob.ovpn
from the server’s Documents
folder to the client’s Downloads
folder.
You can use any secure tool to do the copy.
- If both server and client are nearby, you can use a USB memory stick.
- For a remote server, you can use the Remote Desktop Connection (RDC) app with local disk access enabled.
- Or you can just copy and paste from Notepad on an RDC session with the server down to Notepad on your local client.
However you do the secure copy, you will end up with a file bob.ovpn
in your client PC Downloads
folder.
Set up Windows client
Switch to working on the client PC.
From the OpenVPN Downloads page at https://openvpn.net/community-downloads, download the 64-bit installer for Windows.
Run the installer. On the client, you need the OpenVPN GUI component, but you do not need the EasyRSA 3 Certificatre Management scripts. These are the defaults.
The installer places an OpenVPN GUI shortcut icon on your desktop.
Double-click the OpenVPN GUI shortcut icon on your desktop.
A message appears to say that there are as yet no readable connection profiles (i.e., configurations). Click OK.
Import bob.ovpn
as follows:
- Right-click on the OpenVPN icon in the system tray.
- Select Import file.
- Select the
bob.ovpn
file from yourDownloads
folder. - You should see a message indicating that the file was imported successfully.
- Click OK.
Right-click on the OpenVPN icon in the system tray, and select Connect. If problems occur, check C:\Users\<YOUR-USER-NAME>\OpenVPN\log\bob.log
for any error messages.
On successful connect, a notification appears to say you are now connected.
The OpenVPN icon in the system tray turns green.