Openvpn easy rsa 3 windows

Обновлено Обновлено:
Опубликовано Опубликовано:

OpenVPN позволяет настроить VPN-сервер как на платформе Windows Server, так и версии для рабочего компьютера (Windows 10, 8, 7).

Установка сервера
Создание сертификатов
Настройка OpenVPN
Настройка клиента
Доступ к локальной сети
Решение проблем

Установка OpenVPN Server

Переходим на официальный сайт OpenVPN и скачиваем последнюю версию программы для соответствующей версии Windows:

Скачиваем OpenVPN для Windows

Запускаем скачанный файл — нажимаем NextI Agree — и выставляем галочку EasyRSA 2/3 Certificate Management Scripts (нужен для возможности сгенерировать сертификаты):

Во время установки, ставим галочку EasyRSA 2 Certificate Management Scripts

* интерфейсы для старой версии OpenVPN и новой немного различаются. Нам нужно выбрать для установки все пункты.

… снова Next и Install — начнется установка. В процессе мастер может выдать запрос на подтверждение установки виртуального сетевого адаптера — соглашаемся (Install/Установить).

После завершения нажимаем Next — снимаем галочку Show ReadmeFinish.

Создание сертификатов

Новая версия 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

Теперь открываем службы Windows и находим «OpenVpnService». Открываем ее, настраиваем на автозапуск и включаем:

Настраиваем автозапуск OpenVpnService и включаем ее

Если служба в запущенном состоянии, то перезапускаем ее.

Ранее переименованный сетевой интерфейс должен включиться:

Включенный TAP адаптер

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:

Скачиваем 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-клиента к серверу

Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.

Доступ к локальной сети

По инструкции выше мы сможем получить доступ только к серверу, на котором установлен 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. Разрешаем доступ к локальной сети

Заходим в управление сетевыми подключениями (Панель управления\Сеть и Интернет\Сетевые подключения). Кликаем правой кнопкой мыши по адаптеру локальной сети — Свойства:

Открываем свойства сетевого адаптера для локальной сети

На вкладке Доступ ставим галочку Разрешить другим пользователям сети использовать подключение к Интернету данного компьютера:

Скачиваем OpenVPN для Windows

… и сохраняем настройки.

Возможные проблемы

Большая часть проблем решается при помощи логов, которые находятся в папке C:\Program Files\OpenVPN\log. Уровень детализации лога контролируется параметром verb в конфигурационном файле сервера или клиента.

Также возможны следующие часто возникающие проблемы:

  1. Проблема: клиент постоянно пытается подключиться к серверу, но соединения не происходит или подключение зависает.
    Причина: сервер блокирует подключения по настроенному порту VPN (в нашем примере, 443).
    Решение: на сервере необходимо добавить 443 порт в исключения брандмауэра или отключить последний.
     
  2. Проблема: при попытке подключиться к серверу выскакивает ошибка «Не удалось подключиться к config».
    Причина: ошибка в настройках.
    Решение: перепроверьте каждую строчку файла конфигурации. Проверьте наличие всех файлов, на которые ссылаетесь в настройках.
     
  3. Проблема: клиенты получают одинаковые IP-адреса.
    Причина: подключение выполняется под одним и тем же пользователем.
    Решение: сервер выдает одинаковые адреса одинаковым клиентам. Необходимо настроить авторизацию на сервере и выдать каждому клиенту индивидуальные настройки.
     
  4. Проблема: соединение происходит, но через несколько минут связь прерывается.
    Причина: дублирование IP-адресов.
    Решение: данная проблема описана выше (пункт 3).

Возможно, Вы это тоже захотите попробовать

  1. Настройка OpenVPN-сервера с аутентификацией через LDAP (Active Directory) на Ubuntu Server
  2. Установка и настройка 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 #955

    Release 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 and unset in vars 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 сервера в windows 10

Начиная с версии OpenVPN 2.5, поддерживается драйвер WinTun от разработчиков WireGuard. Считается, что этот драйвер работает быстрее чем классический OpenVPN драйвер TAP. Установите драйвер Wintun, откажитесь от установки TAP-Windows6.

Установите OpenSSL утилиту EasyRSA Certificate Management Scripts.

WinTun драйвер openvpn

Запустите установку.

По умолчанию OpenVPN устаналивается в каталог C:\Program Files\OpenVPN.

После окончания установки появится новый сетевой адаптер типа Wintun Userspace Tunnel. Этот адаптер отключен, если служба OpenVPN не запущена.

сетевой адаптер Wintun Userspace Tunnel

Создаем ключи шифрования и сертификаты для 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"

EASYRSA_TEMP_DIR

Можете заполнить поля для сертификатов (опционально)

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 "

конфигурационный файл vars при установке сертфикатов easyrsa

Срок действия сертификатов задается с помощью:

#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»)

сертификат сервера openvpn

Теперь можно создать ключи Диффи-Хеллмана (займет длительное время):
./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

пароль для защиты ключа клиента easyrsa

Данный ключ («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

запуск службы OpenVPNService

Откройте панель управления, и убедитесь, что виртуальный сетевой адаптер OpenVPN Wintun теперь активен. Если нет, смотрите лог «C:\Program Files\OpenVPN\log\server.log»

сетевой адаптер openvpn wintun

Если при запуске 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 connect в windows

Теперь на компьютер с клиентом OpenVPN нужно с сервера скопировать файлы:

  • ca.crt
  • kbuldogov.crt
  • kbuldogov.key
  • dh.pem
  • ta.key
  • kbuldogov.ovpn

импорт конфигурации клиента ovpn в openvpn клиент

Теперь импортируйте файл с профилем *.ovpn и попробуйте подключиться к вашему VPN серверу.

Если все настроено правильно, появится такая картинка. подключение к openvpn установлено

Проверьте теперь лог 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-server-and-client-with-easy-rsa-3-000.pngOpenVPN — популярная технология для создания защищенных частных сетей (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

openvpn-server-and-client-with-easy-rsa-3-001.png

Обычно затем директорию с 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 дней. При необходимости вы можете изменить эти значения.

openvpn-server-and-client-with-easy-rsa-3-002.pngСохраним внесенные изменения. Теперь инициализируем наш CA и выпустим корневую пару ключей. Обратите внимание, что данные действия следует выполнять единожды, повторное выполнение указанных команд уничтожит существующий CA и потребует повторного создания всех ключей и сертификатов.

./easyrsa init-pki

Данная команда инициализирует новую структуру центра сертификации с очисткой всех данных. После чего создадим файл для генерации случайных данных:

touch pki/.rnd

и активируем наш CA:

./easyrsa build-ca

При создании закрытого ключа центра сертификации вам будет предложено ввести пароль, не следует пренебрегать этой возможностью, так как закрытый ключ — основа вашей инфраструктуры открытых ключей и его компрометация приведет к компрометации всех выпущенных ключей и сертификатов. Также не забудьте указать собственное наименование центра сертификации в опции Common Name.

openvpn-server-and-client-with-easy-rsa-3-003.pngПосле выполнения этих команд будет выполнено создание структуры директорий 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 в ответ на соответствующий запрос, любый иные действия приведут к отмене действия. Затем потребуется ввести пароль закрытого ключа центра сертификации.

openvpn-server-and-client-with-easy-rsa-3-004.pngВыпущенные сертификаты будут располагаться в 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

openvpn-server-and-client-with-easy-rsa-3-005.pngДействующие сертификаты имеют статус 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:

  1. In the Windows search box, type firewall.
  2. Select Windows Defender Firewall with Advanced Security.
  3. In the left pane, select Inbound Rules.
  4. In the right pane, select New Rule.
  5. Type is Port. Click Next.
  6. Type is UDP, and specific local port as 1194. Click Next.
  7. Action is Allow. Click Next.
  8. Leave all domains checked. Click Next.
  9. Set the Name to OpenVPN Inbound.
  10. 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
dev tun
proto udp
port 1194
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\issued\\alice.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\private\\alice.key"
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\dh.pem"
tls-crypt "C:\\Program Files\\OpenVPN\\easy-rsa\\pki\\easytls\\tls-crypt.key"
cipher AES-256-GCM
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
push "block-outside-dns"
keepalive 10 60
persist-key
persist-tun
explicit-exit-notify 1
verb 3

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.

  1. Right-click on it, and select Properties.
  2. Set the Startup type to Automatic.
  3. Click Apply.
  4. Click Start.
  5. Click OK.

Locate the row for OpenVPN Interactive service.

  1. Right-click, and select Properties.
  2. Click Stop.
  3. Change its Startup type to Manual.
  4. Click Apply.
  5. Click OK.

Locate the row for OpenVPNService.

  1. Stop the service.
  2. 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
client
dev tun
proto udp
remote alice.cscot.buzz 1194
resolv-retry infinite
nobind
persist-key
persist-tun
<cert>
-----BEGIN CERTIFICATE-----
MIIDUTCCAjmgAwIBAgIQQWJuayzEoM7gSiKJfPDMRjANBgkqhkiG9w0BAQsFADAW
MRQwEgYDVQQDDAtFYXN5LVJTQSBDQTAeFw0yMzA0MDQwNjA3MzdaFw0yNTA3MDcw
NjA3MzdaMA4xDDAKBgNVBAMMA2JvYjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBANB39CBsvSng26utFsoPa9i0F/p/w0kb8x4EW/PKyGTj3HdOPJcnI28t
vcqJenIct/D6x8wRGq54p12YKz46vzWDOcOqh/xTrRyI5I5YH3bMQWXNuzkCeit+
FayOakVlcyuUOUGovXxjYDX39JE5WEHqtmRPGuJahimEtx/gaBWGVemMEklTbusK
L0SjIV2uGxRJ41I699T+gMvTUqoycj7dtbIwDSpD75skx/Ne0zO6pHirIfTGX1BU
Qmxo50MfxjvWT2jOT03+GyLx/RMMtokgLLome8tJT4MkHD5KuuivNy/U+kqNK+kW
tcpukX046WpPfk1SpVQDFn84uTyfxwsCAwEAAaOBojCBnzAJBgNVHRMEAjAAMB0G
A1UdDgQWBBSzUQF7f+StkA/zYqoJL1sM6AMbTTBRBgNVHSMESjBIgBTUfoyTfPl2
W4Ey2t3n/WWRElwaC6EapBgwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0GCFDfDAWWK
dLwHywsgWLvff7IaGMYkMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAsGA1UdDwQEAwIH
gDANBgkqhkiG9w0BAQsFAAOCAQEAe5rUYU3zHNyy7O+SJBzNxWnTDpe2zBrPbdUW
6jUXbav86N6a74wVHtf9zaKh5j0Z8PTqEUERdFb4BrCswrfcgRmI87z6Ni6/RZEx
nVgwU3xk7kx2e3QB57fA8Zo9Hxn4e04RJRpS/KjzkdEBSfEDsS9P+yEVdvMkTpDt
ox1yruldMWZ0GoV9s4nPWbS7ta2GUtSLNe4orW51dozCXwdbRIb8vCIvhbKAdzzn
cA44NEJ2TVsK47QAzwXqn1cArl3i2Xyh0as2+heBNA759VUUk8rsAhG1t4wRUTb+
VBKAeJ5XE8KrWmaeTBcMVuYPOpeS6uzh6kHh2UGBHDduQC2gQw==
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDQd/QgbL0p4Nur
rRbKD2vYtBf6f8NJG/MeBFvzyshk49x3TjyXJyNvLb3KiXpyHLfw+sfMERqueKdd
mCs+Or81gznDqof8U60ciOSOWB92zEFlzbs5AnorfhWsjmpFZXMrlDlBqL18Y2A1
9/SROVhB6rZkTxriWoYphLcf4GgVhlXpjBJJU27rCi9EoyFdrhsUSeNSOvfU/oDL
01KqMnI+3bWyMA0qQ++bJMfzXtMzuqR4qyH0xl9QVEJsaOdDH8Y71k9ozk9N/hsi
8f0TDLaJICy6JnvLSU+DJBw+Srrorzcv1PpKjSvpFrXKbpF9OOlqT35NUqVUAxZ/
OLk8n8cLAgMBAAECggEAWjrxMW+fWJb4vY/Hg2G1XjBlCIlwLx6n1eAxJI4qunBd
pk34r7vC/IYh1Z43n1iKzQTeoZbto4KZfks0vFSVGkZYJDaVcUOOdAFUW8AMrlCu
JbAsTvqhgl2qZ+ukV7EXbk9TkPXGPiaNKA7QjmLxrmY216fdjQd9dk75LBTnOBkK
0Yan/tu++JtvCjryO043Z36alLyA4IgNWUA7ul2p0pfgU3BRm/WWv239yg03dgFT
w1ImmFJn/PFiC49WcpLvOcJEw+sxAM8hV5RlADUhEZ9nCo4bbGlvhHOktR/PIPA1
khgnWdcbo0/WTDOf05yhFSwk0BoWH9XqWli2MyA1kQKBgQDvCPf2bmf0wnayeR2l
NfCgSoDXU3OqVvlSsD+u9fTh1kmJSXnfZfyAPJEAV9KTujUqEz/s9i+KOJkhPQH5
Ria6OpQfEL7jD813GVHsj+h16agmP3the97omsLtY2q6AD+iGJh2at/NdITVPRCP
lpWfJMSVIGZbEmf4Pvo9wPVlrwKBgQDfQ59XEBQptRuofx3pQ40Cc/Vk/JERDWGY
lvNifBx1h7MHwZCblDzemd02mGXqJHIYQPDiaZjnwxVMIpegvGV0prm1sa2DM8Yp
7KhhVXA7AK5CR0nQjdwwPGiuZ+StGJlBNfEJNR7oIqDqiIxzAfqprz/FDj+R16dD
k1XskP8nZQKBgHD0QwBvca5mimKR+yFL2PZV3oZiCAFRciXR5XYPAfYKJdu7Hd0k
O2p5tGd+GKL4VhEY4ZdfSl29mxbq1ljt/nT4I3B+oEV5/TSvgVgRNN8rV+sjCnGp
cE9oen5lAVT9sxQtHTawECvtSKvfXEkN9owqer6hfdzBWOIlGGlAGnY/AoGABqEh
aBpoHtzr11L+9mA1Ha+Hx9ngDNuS3E8PJwt8ZNkEreRHgPcj35A+C1L3I761TJcR
EAgGrEsUpNAaJIGzmYUh2o1OE6lD5xbJ4SoCTR42Dm3DeVfdA+mnShZ3qdQjKNaL
M7TKGCZ/FLe9Q+T5JnS3tgg4RwJaSx1i3cVobikCgYBiFeZgcR8t8v980DGw7xUp
kcdzSx7UqtKCq2qy4R2oiJSdjiWGOrMIAXa8YC+TnG/A+ooynlWoyiudCKI+lhxH
TrCjb32w2FU3S/VeZA+55WW4jtdiXJTB8mKXr8pxj6BcMVVttouj/gGXGU0pHHG1
lqvGY4Wua8tIhfLhZCD7RA==
-----END PRIVATE KEY-----
</key>
<ca>
-----BEGIN CERTIFICATE-----
MIIDSzCCAjOgAwIBAgIUN8MBZYp0vAfLCyBYu99/shoYxiQwDQYJKoZIhvcNAQEL
BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjMwNDA0MDYwNjI4WhcNMzMw
NDAxMDYwNjI4WjAWMRQwEgYDVQQDDAtFYXN5LVJTQSBDQTCCASIwDQYJKoZIhvcN
AQEBBQADggEPADCCAQoCggEBAPpmTVIoJIWDH+U1sbuPaPkkYfKC0/QNnF8koS0z
lGzrYZlNHHB9KlZo9zx8J76q3JaY6Vi9JBd0JF0d3czEgy0uVUV+UqNIJ07AhTIM
9LtRIEb1aRXgfzaQbLTa1XmRko1MUJKDmRAgNP1TY5crjUS4PEK3xwY8ZneaAYxu
Qkg8b8sK05b50NCP+Emnf/uow1bT5wNhHMwU6xber/D8YgtXDWAhDOKsku+7ExAs
tI+IBRdSjMOqFOpnDWV98AZjO+0BV2vqd2JgylpZ5OvBKZdMHr8FX58KXVqoYlmF
Yx2bI0G9C/64VoLAvA+B9OvILBix0ZS3rsWz16iNljM4w0MCAwEAAaOBkDCBjTAM
BgNVHRMEBTADAQH/MB0GA1UdDgQWBBTUfoyTfPl2W4Ey2t3n/WWRElwaCzBRBgNV
HSMESjBIgBTUfoyTfPl2W4Ey2t3n/WWRElwaC6EapBgwFjEUMBIGA1UEAwwLRWFz
eS1SU0EgQ0GCFDfDAWWKdLwHywsgWLvff7IaGMYkMAsGA1UdDwQEAwIBBjANBgkq
hkiG9w0BAQsFAAOCAQEAbF1tpIL0632IpjZ42Gtgs1MPLMoeuGOGvcK32Xfld3pj
xXQCyiF6mVlnXYFLD0QLNLl3MPdMhHuZtGOHqYmdD8uEE01TaTki0mZ5ObnN5pOG
kIk/Q8E0VVjGoWKYGfUvMxxdXVpnZqDzm2oFGKhYh8JCUkMiAQB7pUw1IgflZ1kd
60bYYvryi2EeP8v8sM3yQIEtD/QO3gzHTPVtZIMZGpsJcHB3MjK4XS7dYYg2vjaN
7AJlaaqGUFeDpfq2l6tfFcul8Nr6j0dxxRK+N9TEDjhnNG1fuCzfUw7f2fo8eTpk
PhOWSdmt5alLf8zE37yovTFrw0gSuCFGs7MvSTPSmw==
-----END CERTIFICATE-----
</ca>
<tls-crypt>
-----BEGIN OpenVPN Static key V1-----
48e3921f8013f667318938d3454a0e10
cb592af181e30da37643acbbfd36b54d
099441265e768047334242c08db4eb01
1a136cecd628452ba004a042b92362d5
3b69b766ebf9af7f264718b849e83030
b99bc255a627e788061b533d06678d99
b661b485c1df0d4a552c44f6e1c4ff82
34636917f48479eef95033071a763c5a
4738cc084737a4c58e08e62020a6dc84
bdf37ae4d8a2edf9310d60967320378d
4bf261151e7aaa3698a0cce1c9758fb1
a6a41a87da3a619b4e6ce4917c3af53e
2cbf0f4aef9c3c9eb5315e4cfa30508b
e153d051310bf1a96788255d4d408f9d
837c786570980178e98c4bcb15b7801e
cab6b007f31204b71e4ad0d611d9da21
-----END OpenVPN Static key V1-----
</tls-crypt>
remote-cert-tls server
cipher AES-256-GCM
verb 3

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:

  1. Right-click on the OpenVPN icon in the system tray.
  2. Select Import file.
  3. Select the bob.ovpn file from your Downloads folder.
  4. You should see a message indicating that the file was imported successfully.
  5. 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.

  • Openvpn connect for windows скачать
  • Opera браузер для windows vista
  • Openssl как пользоваться в windows
  • Openvpn как служба windows 10
  • Opera x64 for windows 7 x64