Easy rsa openvpn генерация сертификата windows

Инструкция по установке и настройке OpenVPN Server на операционную систему Windows. Настройка клиента, доступ к локальной сети.

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

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 FilesOpenVPN) и создаем каталог ssl.

2. После переходим в папку C:Program FilesOpenVPNeasy-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%OpenVPNeasy-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 FilesOpenVPNssl следующие файлы:

  • ca.crt
  • issued/cert.crt
  • private/cert.key
  • dh.pem

б) Создание сертификатов с RSA 2 (для старых версий OpenVPN)

1. Переходим в папку установки OpenVPN (по умолчанию, C:Program FilesOpenVPN) и создаем каталог ssl.

2. После переходим в папку C:Program FilesOpenVPNeasy-rsa, создаем файл vars.bat, открываем его на редактирование и приводим к следующему виду:

set «PATH=%PATH%;%ProgramFiles%OpenVPNbin»
set HOME=%ProgramFiles%OpenVPNeasy-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%OpenVPNeasy-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 keysdh.pem 2048

* команда может выполняться долго — это нормально.

9. Генерируем сертификат для сервера:

build-key-server.bat cert

* где cert — имя сертификата; на все запросы нажимаем Enter. В конце подтверждаем два раза корректность информации вводом y.

10. После переносим из папки C:Program FilesOpenVPNeasy-rsakeys в C:Program FilesOpenVPNssl следующие файлы:

  • ca.crt
  • cert.crt
  • cert.key
  • dh.pem

Настройка сервера

Переходим в папку C:Program FilesOpenVPNconfig-auto (или для старой версии C:Program FilesOpenVPNconfig) и создаем файл 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 FilesOpenVPNeasy-rsakeys.

Затем запускаем командную строку от имени администратора:

Запуск командной строки от имени администратора

Переходим в каталог easy-rsa:

cd %ProgramFiles%OpenVPNeasy-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 FilesOpenVPNconfig. И копируем в нее сертификаты, которые перенесли с сервера.

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

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 FilesOpenVPNconfig.

Запускаем с рабочего стола программу «OpenVPN GUI» от имени администратора (это важно).

Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Запуск подключения openvpn-клиента к серверу

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

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

По инструкции выше мы сможем получить доступ только к серверу, на котором установлен OpenVPN. Для получения доступа ко всей внутренней сети, выполним следующие шаги.

1. Настройка реестра

Для включения IP маршрутизации в Windows необходимо в ветке реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters найти параметр IPEnableRouter и задать ему значение 1. Это можно сделать в утилите редактирования реестра (regedit) или командой:

reg add «HKLMSYSTEMCurrentControlSetServicesTcpipParameters» /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 FilesOpenVPNlog. Уровень детализации лога контролируется параметром verb в конфигурационном файле сервера или клиента.

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

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

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

  1. Настройка OpenVPN-сервера с аутентификацией через LDAP (Active Directory) на Ubuntu Server
  2. Установка и настройка OpenVPN на Linux CentOS 7

В роутерах серии RTU есть возможность использования защищенного соединения через частную виртуальную сеть, под названием OpenVPN

Процесс настройки и конфигурирования данного пакета для рядового пользователя может сопровождаться достаточно большими трудностями из-за отсутствия необходимых знаний.

Практически всю часть конфигурирования  можно произвести через WEB интерфейс, но некоторые элементы все же придется произвести через консоль!

Что такое OpenVPN и для чего он необходим можно ознакомиться в статье: OpenVPN

В данной статье мы ознакомимся с подготовительной частью, это генерация сертификатов и ключей шифрования для защиты нашего канала передачи.


1. Генерация сертификатов и ключей на Windows 

Для генерации сертификатов и ключей шифрования на ОС Windows необходимо установить само приложение OpenVPN.

Скачать последнюю версию OpenVPN для ОС Windows можно по ссылке: https://openvpn.net/community-downloads/.

После скачивания и установки в указанную Вами папку в ней будет список файлов, по умолчанию OpenVPN устанавливается в директорию C:Program FilesOpenVPN.

Для генерации ключей будем использовать easy-rsa. Необходимо запустить командную строку от имени администратора и перейти в директорию с папкой easy-rsa. В примере используем команду для перехода в папку по умолчанию, у Вас данный путь может отличаться.

cd C:Program FilesOpenVPNeasy-rsa 

1.1 Запускаем файл init-config.bat

C:Program FilesOpenVPNeasy-rsa>init-config.bat                
C:Program FilesOpenVPNeasy-rsa>copy vars.bat.sample vars.bat  
Скопировано файлов:         1.                                   

В папке появится файл vars.bat, открываем его текстовым редактором, нас интересуют строчки в самом конце, их нужно заполнить.

Мы подставили свои параметры, у Вас данные параметры будут другие.

set KEY_COUNTRY=RU
set KEY_PROVINCE=Moscow
set KEY_CITY=Moscow
set KEY_ORG=TELEOFIS
set KEY_EMAIL=support@teleofis.ru
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=server
set PKCS11_MODULE_PATH=server
set PKCS11_PIN=12345

Там где написано server, не трогаем. Сохраняем файл.

1.2 Редактируем файл openssl-1.0.0.cnf 

От имени администратора открываем блокнот, нам необходимо отредактировать файл openssl-1.0.0.cnf. По умолчанию данный файл находится в директории C:Program FilesOpenVPNeasy-rsa, у Вас данный путь также может отличаться.

Нам необходимо найти строчку: 

default_days = 365

Далее необходимо заменить значение 365 на 3650, в более новых версиях OpenVPN значение 3650 может быть уже установлено по умолчанию.

1.3 Генерируем ключи и сертификаты

Подаем последовательно в консоль команды:

vars

clean-all

В ответ должно прийти

Скопировано файлов: 1.
Скопировано файлов:         1.

Если, мы это видим, значит все хорошо, продолжаем…

1.4 Создаем центр сертификации CA

Подаем команду:

build-ca

На данном моменте в некоторых случаях может возникнуть ошибка:

C:Program FilesOpenVP

easy-rsa>build-ca

"openssl" не является внутренней или внешней

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

Для устранения ошибки открываем файл vars.bat от имени администратора и ищем строку 

rem set "PATH=%PATH%;C:Program FilesOpenVPNbin"

Удаляем rem, после чего данная строка должна принять вид:

set "PATH=%PATH%;C:Program FilesOpenVPNbin"

Сохраняем, далее снова подаем последовательно команды

vars

clean-all

В ответ должно прийти

Скопировано файлов: 1.
Скопировано файлов: 1.

Подаем команду:

build-ca

При генерации основного сертификата в консоли будут отображаться вопросы. Просто нажимаем Enter, т.к. все эти параметры мы ввели в файле vars.bat

Нажимаем Enter до тех пор, пока не отобразиться строка приглашения

C:Program FilesOpenVPNeasy-rsa

1.5 Создаем ключ Диффи-Хелмана

Данный шаг не является обязательным, ключ Диффи-Хелмана необходим для реализации одноименного протокола 

позволяющего использовать небезопасный канал для получения общего секретного ключа. Этот ключ будет в дальнейшем использоваться для защищенного обмена данными с помощью алгоритмов симметричного шифрования.

В применении к OpenVPN файл Диффи-Хелмана нужен для обеспечения защиты трафика от расшифровки, если ключи были похищены. Здесь имеется в виду тот трафик, который был записан и сохранен еще до похищения ключей.

Файл Диффи-Хелмана создается на сервере OpenVPN.

Для создания ключа необходимо подать команду:

build-dh

1.6 Создаем сертификат и ключ сервера

Подаем команду:

     build-key-server server

На вопросы нажимаем Enter, но не торопимся, в самом конце будет задано два вопроса

Sign the certificate?

1 out of 1 certificate requests certified, commit?

На оба эти вопроса отвечаем Y

1.7 Создаем сертификат и ключ клиента

Подаем команду:

build-key client 

Также не торопимся с ответами, как только увидим строку «Common Name (eg, your name or your server’s hostname)» нужно ответить client.

В самом конце также будут два вопроса, отвечаем также Y

Причем: для каждого клиента, нужно будет создать отдельные ключи и называть их client1, client2 или как-то иначе, все зависит от Вашего воображения. 

Например:

build-key client1

build-key office1

На этом создание файлов сертификатов и ключей завершено.

Все файлы будут лежать в папке C:Program FilesOpenVPNeasy-rsakeys


2. Генерация сертификатов и ключей на Linux 

Генерация сертификатов и ключей будет осуществляться на ОС Ubuntu Linux 20.04. 

Для других систем на базе Linux, некоторые команды могут отличаться!

Первоначально необходимо обновить все пакеты ОС Linux, подаем в консоль команду:

sudo apt-get update

sudo apt-get upgrade

Установим пакет zip, если он не был установлен ранее:

sudo apt install zip

2.1  Установка утилиты Easy-RSA

Создадим нового пользователя ca и переведем его в домашний каталог:

sudo adduser ca

В ответ система выведет информацию и попросит ввести пароль:

Adding user 'ca' ...
Adding new group 'ca' (1002) ...
Adding new user 'ca' (1002) wuth group 'ca' ...
Creating home directory '/home/ca' ...
Coping files from '/etc/skel/' ...
New password:

Вводим пароль, затем еще раз его повторяем, если все хорошо, система выведет следующую информацию:

passwd: password updated successfully
Changing the user information for ca
Enter the new value or press ENTER for the default
Full name []:
Room number []:
Work phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]

Нажимаем Y, пользователь успешно создан.

Делаем loging под пользователя ca:

     su ca

cd

Далее необходимо загрузить дистрибутив программы утилитой wget:

wget https://github.com/OpenVPN/easy-rsa/archive/master.zip 

Распаковываем архив:

$ unzip master.zip 

2.2 Создаем инфраструктуру публичных PKI, создание центра сертификации СА:

Создадим инфраструктуру публичных ключей (Public Key Infrastructure, PKI): 

cd /home/ca/easy-rsa-master/easyrsa3 

$ ./easyrsa init-pki 

В ответ система оповестит, что PKI создан успешно:

init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /home/ca/easy-rsa-master/easyrsa3/pki 

Далее создаем удостоверяющий центр сертификации:

$ ./easyrsa build-ca 

В ответ система выдаст сообщение следующего вида:

Generating RSA private key, 2048 bit long modulus (2 primes)
..................................................................................+++++
......................................................+++++
e is 65537 (0x010001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:ca

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/home/ca/easy-rsa-master/easyrsa3/pki/ca.crt

Пароль будет защищать приватный ключ центра сертификации. Этот пароль потребуется каждый раз, когда Вы будете подписывать сертификаты для серверов и клиентов OpenVPN.

В конечном итоге у нас создадутся в системе два файла, которые нам в дальнейшем пригодятся: ca.crt и ca.key. Данные файлы находятся в директориях:

/home/ca/easy-rsa-master/easyrsa3/pki/private/ca.key 
/home/ca/easy-rsa-master/easyrsa3/pki/ca.crt 

Файл ca.key является секретным, его нельзя передавать на другие узлы Вашей сети.

Файл ca.crt открытый, его необходимо передавать на узлы серверов и клиентов сети OpenVPN. 

2.3 Создаем список отзывов сертификатов

Если сотрудник уволился из компании и у него есть доступ в сети VPN компании, нам необходимо закрыть этот доступ путем отзыва сертификата CRL. Для создания сертификата проделаем следующее:

cd /home/ca/easy-rsa-master/easyrsa3 
$ ./easyrsa gen-crl 

Система запросит пароль для доступа к закрытому ключу ca.key. Список отзыва сертификатов будет доступен в файле crl.pem:

/home/ca/easy-rsa-master/easyrsa3/pki/crl.pem 

Данный сертификат передается OpenVPN серверу. Также в конфиге сервера должен быть прописан путь до crl.pem, как правило данное правило прописывается в server.conf.

crl-verify /usr/local/etc/openvpn/crl.pem

Для блокировки доступа пользователю, заблокируем ранее выданный сертификат, используя команду:

$ ./easyrsa revoke test 

В таблице ниже описана структура каталога PKI:

Файл или каталог

Описание

ca.crt Сертификат удостоверяющего центра, передается как на сервер OpenVPN, так и на клиент OpenVPN
crl.pem Список отзыва сертификатов CRL
issued Каталог с сертификатами, созданными центром сертификации СА
private Каталог с секретными ключами
Reqs Каталог запросов на сертификаты

2.4 Установка OpenVPN, создание каталога для конфигурации клиентов

Процесс создания сервера OpenVPN включает в себя установку пакета OpenVPN, создание сертификатов и ключей, а также подготовку рабочей конфигурации.

Установим пакет OpenVPN:

$ sudo apt-get install openvpn

Первоначально необходимо подготовить файлы конфигурации openssl.cnf и server.conf. Первый файл определяет конфигурацию OpenSSL, второй файл определяет конфигурацию сервера OpenVPN.

В комплекте с утилитой Easy-RSA поставляется пример файла конфигурации OpenSSL. Если Вы делали все действия по данному гайду, данный файл будет находиться по пути:

/home/ca/easy-rsa-master/easyrsa3/openssl-1.0.cnf 

По умолчанию файл openssl-1.0.cnf содержит в себе следующую информацию:

# For use with Easy-RSA 3.0+ and OpenSSL or LibreSSL

####################################################################
[ ca ]
default_ca      = CA_default            # The default ca section

####################################################################
[ CA_default ]

dir             = $ENV::EASYRSA_PKI     # Where everything is kept
certs           = $dir                  # Where the issued certs are kept
crl_dir         = $dir                  # Where the issued crl are kept
database        = $dir/index.txt        # database index file.
new_certs_dir   = $dir/certs_by_serial  # default place for new certs.

certificate     = $dir/ca.crt           # The CA certificate
serial          = $dir/serial           # The current serial number
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/ca.key   # The private key
RANDFILE        = $dir/.rand            # private random number file

Чтобы запуск сервера OpenVPN прошел успешно, необходимо создать каталоги, в которых будут храниться сертификаты и ключи для сервера и клиентов OpenVPN:

Создадим каталог для конфигурации клиентов:

$ sudo mkdir /etc/openvpn/ccd

2.5 Подготовка сертификатов и ключей для сервера OpenVPN

Для организации OpenVPN нам потребуются файлы, перечисленные в таблице ниже:

Файл Описание
dh.pem Ключ Диффи-Хелмана, используется для защиты трафика от расшифровки, необходимо загружать как на клиент, так и на сервер (опционально)
ca.crt Сертификат удостоверяющего центра CA, необходимо загружать на сервер и клиент OpenVPN
server.crt Сертификат сервера OpenVPN, необходимо загружать на сервер OpenVPN
server.key Приватный ключ сервера, секретный, необходимо загружать на сервер OpenVPN
crl.pem Cписок отзыва сертификатов CRL, необходимо загружать на сервер (опционально)
ta.key Ключ HMAC для дополнительной защиты от DoS-атак и флуда (опционально)
client.crt Сертификат клиента OpenVPN, необходимо загружать на клиент OpenVPN
client.key Приватный ключ клиента, секретный, необходимо загружать на клиента OpenVPN

Так как центр сертификации мы уже сгенерировали, на следующем этапе сгенерируем сертификат и приватный ключ для сервера OpenVPN.

$ cd /home/ca/easy-rsa-master/easy-rsa3/

$ ./easyrsa gen-req server

В процессе создания, система запросит пароль, а также имя Common Name для сервера OpenVPN:

Generating a RSA private key
.+++++
.......+++++
writing new private key to '/home/ca/easy-rsa-master/easyrsa3/pki/easy-rsa-2258.QFUIV0/tmp.WadIoG'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [server]:server

Keypair and certificate request completed. Your files are:
req: /home/ca/easy-rsa-master/easyrsa3/pki/reqs/server.req
key: /home/ca/easy-rsa-master/easyrsa3/pki/private/server.key

Если же Вы хотите создать данные файлы без защиты паролем, используем команды:

$ cd /home/ca/easy-rsa-master/easy-rsa3/

$ ./easyrsa gen-req server nopass 

Таким образом, в системе создадутся два файла: server.req и server.key, первый из них является открытым, его необходимо будет в дальнейшем подписать удостоверяющим центром СА, второй является секретым, его необходимо хранить на сервере OpenVPN.

Следующим шагом необходимо подписать данный сертификат (server.req) на стороне удостоверяющего центра СА:

$ ./easyrsa sign-req server server

При создании сертификата система запросит пароль (если при формировании server.req сертификат создавался с паролем).  Необходимо будет ответить на сообщение yes, после чего ввести пароль от сертификата server.req. После успешного создания сертификата, система также уведомит об этом.

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 825 days:

subject=
    commonName                = server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /home/ca/easy-rsa-master/easyrsa3/pki/easy-rsa-2714.b10rbG/tmp.y76kMH
Enter pass phrase for /home/ca/easy-rsa-master/easyrsa3/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until Oct 19 13:09:57 2022 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/ca/easy-rsa-master/easyrsa3/pki/issued/server.crt

Отлично! Теперь необходимо загрузить на сервер OpenVPN сертификат server.crt, который был только что создан, а также ключ server.key.

По умолчанию и ключ находятся в следующих директориях:

/home/ca/easy-rsa-master/easyrsa3/pki/issued/server.crt  
/home/ca/easy-rsa-master/easyrsa3/pki/private/server.key

2.6 Подготовка сертификатов и ключей для клиента OpenVPN

Генерировать сертификат будем под пользователем ca:

su ca

cd /etc/home/ca/easy-rsa-master/easy-rsa3

./easyrsa gen-req client nopass

Если к защите данных предъявляются повышенные требования, сертификат можно создать с паролем:

./easyrsa gen-req client

Далее система попросит ввести Common Name, я назову данный сертификат client1, после генерации ключа система дополнительно оповестит нас об этом:

Generating a RSA private key
....................................................................+++++
........................+++++
writing new private key to '/home/ca/easy-rsa-master/easyrsa3/pki/easy-rsa-2221.ChEcsT/tmp.gWTNPO'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [client]:client1

Keypair and certificate request completed. Your files are:
req: /home/ca/easy-rsa-master/easyrsa3/pki/reqs/client.req
key: /home/ca/easy-rsa-master/easyrsa3/pki/private/client.key

Таким образом, в системе создадутся два файла: client.req и client.key, первый из них является открытым, его необходимо будет в дальнейшем подписать удостоверяющим центром СА, второй является секретым, его необходимо будет в дальнейшем загрузить на клиент OpenVPN.

Далее необходимо только что созданный сертификат client.req подписать в удостоверяющем центре СА:

./easyrsa sign-req client client

При создании сертификата система запросит пароль (если при формировании server.req сертификат создавался с паролем).  Необходимо будет ответить на сообщение yes, после чего ввести пароль от сертификата client.req. После успешного создания сертификата, система также уведомит об этом.

You are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.

Request subject, to be signed as a client certificate for 825 days:

subject=
    commonName                = client1


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /home/ca/easy-rsa-master/easyrsa3/pki/easy-rsa-2951.3DJoCJ/tmp.AqABm4
Enter pass phrase for /home/ca/easy-rsa-master/easyrsa3/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'client1'
Certificate is to be certified until Oct 20 07:26:18 2022 GMT (825 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /home/ca/easy-rsa-master/easyrsa3/pki/issued/client.crt

Отлично! Теперь необходимо загрузить на клиент OpenVPN сертификат client.crt, который был только что создан, а также ключ client.key.

По умолчанию и ключ находятся в следующих директориях:

/home/ca/easy-rsa-master/easyrsa3/pki/private/client.key
/home/ca/easy-rsa-master/easyrsa3/pki/issued/client.crt

2.7  Создаем ключ Диффи-Хелмана

 Для генерации ключа Диффи-Хелмана будем использовать команду:

$ cd /home/ca/easy-rsa-master/easy-rsa3/

$ ./easyrsa gen-dh

Создание ключа Диффи-Хелмана может занять достаточно продолжительное время, по окончании данного процесса система оповестит об этом:

DH parameters of size 2048 created at /home/ca/easy-rsa-master/easyrsa3/pki/dh.pem

Данный ключ находится в директории:

/home/ca/easy-rsa-master/easyrsa3/pki/dh.pem

2.8 Создание статического ключа HMAC

Для создания ключа HMAC используется команда openvpn с опциями —genkey и —secret. Данный ключ необходимо создавать не от обычного пользователя, а от пользователя с правами администратора.

cd /etc/openvpn

su teleofis

Система попросит ввести пароль от админской учетки, после ввода пароля необходимо выдать себе права на владение:

sudo chown -R teleofis:teleofis .

openvpn —genkey —secret ta.key

Ключ сгенерирован, он будет находиться в директории:

/etc/openvpn/ta.key

На этом моменте создание сертификатов закончено, далее переходим к следующей статье:
OpenVPN режим мультиклиента: Часть 2 — Настройка RTU сервера (tun)


Сопутствующие статьи:
Как подключиться к роутеру RTU?

Описание WEB-интерфейса роутера RTU


Дополнительная информация: 

Wiki на GitHub

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 часов практики и доступ навсегда.

Easy-RSA 3 Quickstart README

This is a quickstart guide to using Easy-RSA version 3. Detailed help on usage
and specific commands can be found by running ./easyrsa -h. Additional
documentation can be found in the doc/ directory.

If you’re upgrading from the Easy-RSA 2.x series, there are Upgrade-Notes
available, also under the doc/ path.

Setup and signing the first request

Here is a quick run-though of what needs to happen to start a new PKI and sign
your first entity certificate:

  1. Choose a system to act as your CA and create a new PKI and CA:

     ./easyrsa init-pki
     ./easyrsa build-ca
    
  2. On the system that is requesting a certificate, init its own PKI and generate
    a keypair/request. Note that init-pki is used only when this is done on a
    separate system (or at least a separate PKI dir.) This is the recommended
    procedure. If you are not using this recommended procedure, skip the next
    import-req step.

     ./easyrsa init-pki
     ./easyrsa gen-req EntityName
    
  3. Transport the request (.req file) to the CA system and import it. The name
    given here is arbitrary and only used to name the request file.

     ./easyrsa import-req /tmp/path/to/import.req EntityName
    
  4. Sign the request as the correct type. This example uses a client type:

     ./easyrsa sign-req client EntityName
    
  5. Transport the newly signed certificate to the requesting entity. This entity
    may also need the CA cert (ca.crt) unless it had a prior copy.

  6. The entity now has its own keypair, signed cert, and the CA.

Signing subsequent requests

Follow steps 2-6 above to generate subsequent keypairs and have the CA return
signed certificates.

Revoking certs and creating CRLs

This is a CA-specific task.

To permanently revoke an issued certificate, provide the short name used during
import:

    ./easyrsa revoke EntityName

To create an updated CRL that contains all revoked certs up to that point:

After generation, the CRL will need to be sent to systems that reference it.

Generating Diffie-Hellman (DH) params

After initializing a PKI, any entity can create DH params that needs them. This
is normally only used by a TLS server. While the CA PKI can generate this, it
makes more sense to do it on the server itself to avoid the need to send the
files to another system after generation.

DH params can be generated with:

Showing details of requests or certs

To show the details of a request or certificate by referencing the short
EntityName, use one of the following commands. It is an error to call these
without a matching file.

    ./easyrsa show-req EntityName
    ./easyrsa show-cert EntityName

Changing private key passphrases

RSA and EC private keys can be re-encrypted so a new passphrase can be supplied
with one of the following commands depending on the key type:

    ./easyrsa set-rsa-pass EntityName
    ./easyrsa set-ec-pass EntityName

Optionally, the passphrase can be removed completely with the ‘nopass’ flag.
Consult the command help for details.

Установим и настроим OpenVPN сервер. На сервере используется операционная система Windows Server 2019.

OpenVPN — бесплатная реализация технологии виртуальной частной сети (VPN) для создания зашифрованных каналов связи между компьютерами типа точка-точка или сервер-клиенты за NAT и Firewall.

Установка OpenVPN Server

Скачиваем дистрибутив для установки OpenVPN:

Community Downloads

vpn

Прокручиваем вниз, выбираем стабильную версию. Я буду использовать версию 2.4.9.

Для операционной системы Windows доступны два пакета:

  • WINDOWS 7/8/8.1/SERVER 2012R2 INSTALLER (NSIS)
  • WINDOWS 10/SERVER 2016/SERVER 2019 INSTALLER (NSIS)

Для Windows Server 2019 подходит второй вариант, скачиваю.

vpn

Запускаем инсталлятор OpenVPN.

vpn

Открывается мастер установки. Next.

vpn

Принимаем лицензионное соглашение. I Agree.

vpn

Выбираем компоненты. Выделите EasyRSA 2 Certificate Management Scripts. Для сервера OpenVPN GUI можно не устанавливать, если вы планируете запускать OpenVPN в качестве службы. Next.

vpn

Выбираем путь установки, я оставляю по умолчанию C:Program FilesOpenVPN. Install.

vpn

Начинается процесс установки OpenVPN.

vpn

Установка успешно завершена. Next.

vpn

Finish.

vpn

Установка выполнена в директорию C:Program FilesOpenVPN.

vpn

После установки у нас появляется новый сетевой адаптер TAP-Windows Adapter V9.

vpn

Адаптер отключён. Если по каким-то причинам нужно добавить несколько таких адаптеров, то загляните в папку C:Program FilesTAP-Windowsbin.

vpn

Здесь есть скрипты для установки адаптера, добавления адаптера и удаления всех адаптеров.

vpn

Пример установки адаптера. В командной строке под администратором:

cd "C:Program FilesTAP-Windowsbin"
"C:Program FilesTAP-Windowsbintapinstall.exe" install "C:Program FilesTAP-WindowsdriverOemVista.inf" tap0901

В большинстве случаев дополнительно настраивать сетевой адаптер не требуется.

Создание ключей и сертификатов

Запускаем командную строку под администратором и переходим в рабочую директорию C:Program FilesOpenVPNeasy-rsa.

cd C:Program FilesOpenVPNeasy-rsa

В этой папке есть всё необходимое для генерации сертификатов.

vpn

Выполняем:

init-config.bat
copy vars.bat.sample vars.bat

Создаётся файл vars.bat с настройками и примером готовых параметров для создания CSR запроса сертификатов. Заполним его. Открываем vars.bat блокнотом.

notepad vars.bat

vpn

Открывается vars.bat.

vpn

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

vpn

Заполняем переменные в нижней части файла, указываем:

  • KEY_COUNTRY — страна
  • KEY_PROVINCE — область
  • KEY_CITY — город
  • KEY_ORG — организация
  • KEY_EMAIL — e-mail
  • KEY_CN — (Common Name) имя сервера
  • KEY_NAME — (Name) имя сервера
  • KEY_OU — (Organization Unit) отдел
  • PKCS11_MODULE_PATH — для токенов двухфакторной аутентификации, нам не требуется, укажу имя сервера
  • PKC11_PIN — ПИН для токенов двухфакторной аутентификации, нам не требуется, укажу 1234

Для каждого сертификата нужно будет указывать свои NAME и COMMON NAME, можно их не указывать в vars.bat, потому как при генерации все параметры будут запрашивать.

Обращаем внимание на строку:

set KEY_KONFIG=openssl-1.0.0.cnf

Это имя конфигурационного файла. Находим его в рабочей директории.

vpn

Откроем блокнотом.

vpn

Внутри есть параметр default_days, в котором можно указать срок действия будущих сертификатов. По умолчанию у меня стоит 3650 дней, это 10 лет. Меня устраивает. Вероятно, кому-то при генерации клиентских сертификатов может понадобиться уменьшить этот срок.

Сохраняем все изменения и возвращаемся к командной строке. Подгружаем утверждённые нами переменные:

vars.bat

vpn

Очищаем директорию с ключами:

clean-all.bat

vpn

Сертификаты, которые мы будем создавать, появятся в папке C:Program FilesOpenVPNeasy-rsakeys. Сейчас эта папка очистилась, в ней два файла: index.txt и serial.

vpn

Генерируем ключ и сертификат центра сертификации:

build-ca.bat

vpn

В процессе генерации сертификата нас будут спрашивать все те же параметры, которые мы указали в vars.bat. Если параметр нас устраивает (а он нас устраивает), просто нажимаем ввод и переходим к следующему вопросу. После завершения работы скрипта в папке C:Program FilesOpenVPNeasy-rsakeys появляется два файла:

  • ca.crt — сертификат центра сертификации
  • ca.key — ключ центра сертификации

Ключ секретный, никому не передавайте, он будет храниться на сервере.

vpn

Генерируем ключ Диффи-Хеллмана:

build-dh.bat

vpn

В папке C:Program FilesOpenVPNeasy-rsakeys появляется файл:

  • dh2048.pem

vpn

Генерируем ключ и сертификат сервера, назовём сервер именем «server«:

build-key-server.bat server

vpn

В процессе генерации серверного сертификата нас будут спрашивать те же параметры, которые мы указали в vars.bat. Если параметр нас устраивает (а он нас снова устраивает), просто нажимаем ввод и переходим к следующему вопросу. На вопрос Sign the certificate отвечаем y. На вопрос 1 out of 1 certificate requests certified, commit отвечаем y.

После завершения работы скрипта в папке C:Program FilesOpenVPNeasy-rsakeys появляется четыре файла:

  • 01.pem — не понадобится
  • server.crt — сертификат сервера
  • server.csr — запрос сертификата сервера, не понадобится
  • server.key — ключ сервера

Ключ секретный, никому не передавайте, он будет храниться на сервере.

vpn

Генерируем ключ и сертификат первого клиента. Для каждого клиента нужно указывать своё имя файла, Name и Common Name. Назовём первого клиента именем «client«:

build-key.bat client

vpn

В процессе генерации клиентского сертификата нас будут спрашивать те же параметры, которые мы указали в vars.bat. Нас устраивают все параметры кроме NAME и COMMON NAME, на них отвечаем client. Помним, что для другого клиента имя должно быть другим. На вопрос Sign the certificate отвечаем y. На вопрос 1 out of 1 certificate requests certified, commit отвечаем y.

После завершения работы скрипта в папке C:Program FilesOpenVPNeasy-rsakeys появляется четыре файла:

  • 02.pem — не понадобится
  • client.crt — сертификат первого клиента
  • client.csr — запрос сертификата первого клиента, не понадобится
  • client.key — ключ первого клиента

vpn

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

В настройках сервера можно потом включить настройку duplicate-cn, которая позволяет подключаться всем клиентам по одному общему сертификату, но это небезопасно и не рекомендуется. Используйте только в тестовых целях.

# Uncomment this directive if multiple clients
# might connect with the same certificate/key
# files or common names. This is recommended
# only for testing purposes. For production use,
# each client should have its own certificate/key
# pair.
#
# IF YOU HAVE NOT GENERATED INDIVIDUAL
# CERTIFICATE/KEY PAIRS FOR EACH CLIENT,
# EACH HAVING ITS OWN UNIQUE «COMMON NAME»,
# UNCOMMENT THIS LINE OUT.
;duplicate-cn

Я на сервере собираюсь использовать tls-auth для дополнительной проверки целостности, это обеспечит дополнительный уровень безопасности протокола SSL/TLS при создании соединения:

  • Сканирование прослушиваемых VPN-сервером портов
  • Инициация SSL/TLS-соединения несанкционированной машиной на раннем этапе
  • DoS-атаки и флуд на порты OpenVPN
  • Переполнение буфера SSL/TLS

При использовании tls-auth на клиенте не понадобится ключ Диффи-Хеллмана, но пусть будет. Генерируем ключ tls-auth:

openvpn --genkey --secret keys/ta.key

vpn

В папке C:Program FilesOpenVPNeasy-rsakeys появляется файл:

  • ta.key

vpn

Минимальный набор сертификатов сгенерирован.

Настройка OpenVPN сервера

Чтобы случайно всё не удалить, создадим папку C:Program FilesOpenVPNssl и скопируем в неё сертификаты. Это будет рабочая папка сервера.

mkdir "C:Program FilesOpenVPNssl"
copy "C:Program FilesOpenVPNeasy-rsakeys" "C:Program FilesOpenVPNssl"

vpn

Создадим конфигурационный файл сервера C:Program FilesOpenVPNconfigserver.ovpn:

copy "C:Program FilesOpenVPNsample-configserver.ovpn" "C:Program FilesOpenVPNconfigserver.ovpn"

Открываем блокнотом и редактируем:

notepad "C:Program FilesOpenVPNconfigserver.ovpn"

Лучше изучить конфигурационный файл, я предлагаю свой вариант конфига:

port 1194
proto udp
dev tun
ca "C:\Program Files\OpenVPN\ssl\ca.crt"
cert "C:\Program Files\OpenVPN\ssl\server.crt"
key "C:\Program Files\OpenVPN\ssl\server.key"  # This file should be kept secret
dh "C:\Program Files\OpenVPN\ssl\dh2048.pem"
server 10.8.0.0 255.255.255.0
tls-auth "C:\Program Files\OpenVPN\ssl\ta.key" 0 # This file is secret
keepalive 10 120
comp-lzo
persist-key
persist-tun
cipher AES-256-CBC
status "C:\Program Files\OpenVPN\log\status.log"
log "C:\Program Files\OpenVPN\log\openvpn.log"
verb 4
mute 20

Указываем параметры сервера, пути к ключам и сертификатам. Здесь же пути к логам. Для тестирования можно использовать tcp протокол:

proto tcp

Переходим к службам:

services.msc

vpn

Находим службу OpenVPNService.

vpn

Настраиваем на автоматический запуск при загрузке сервера.

vpn

Запускаем службу.

vpn

Согласно настройкам сервера в папке C:Program FilesOpenVPNlog должны появиться логи. Это один из инструментов администратора OpenVPN сервера.

vpn

Активировался сетевой адаптер TAP-Windows Adapter V9.

vpn

Согласно настройкам сервера IP адрес 10.8.0.1.

vpn

Проверяем поднялся ли порт tcp 1194:

netstat -tan | find "1194"

Порт должен прослушиваться.

vpn

Теперь нужно настроить firewall. Открываем Windows Defender Firewall with Advanced Security.

vpn

Переходим в Inbound Rules.

vpn

Создаём правило — New Rule…

vpn

Тип правила — Port. Next.

vpn

Протоколы и порты — UDP 1194. Как в настройках сервера. Next.

vpn

Действия — Allow the connection. Next.

vpn

Для всех сетей. Next.

vpn

Указываем название правила — OpenVPN. Next.

Правило создано, теперь firewall не блокирует входящие UDP соединения на 1194 порту.

Настройка OpenVPN клиента

На компьютере клиента устанавливаем OpenVPN точно также как на сервер. Галку EasyRSA 2 Certificate Management Scripts не указываем. Галку OpenVPN GUI указываем.

vpn

Я устанавливаю OpenVPN на клиенте в папку по умолчанию. C:Program FilesOpenVPN.

Копируем в отдельную папку for_client (её содержимое отправим потом на компьютер клиента) на сервере файлы для клиента:

  • ca.crt
  • client.crt
  • client.key
  • dh2048.pem
  • ta.key

vpn

Туда же из папки C:Program FilesOpenVPNsample-config копируем client.ovpn

vpn

Переименовываю client.ovpn в config.ovpn. Можно использовать любое имя, лучше созвучное с названием организации. Вот такой получился набор.

vpn

Редактируем файл config.ovpn.

client
dev tun
proto udp
remote internet-lab.ru 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\Program Files\OpenVPN\config\ca.crt"
cert "C:\Program Files\OpenVPN\config\client.crt"
key "C:\Program Files\OpenVPN\config\client.key"
tls-auth "C:\Program Files\OpenVPN\config\ta.key" 1
#dh "C:\Program Files\OpenVPN\config\dh2048.pem"
cipher AES-256-CBC
comp-lzo
verb 0
connect-retry-max 25

Здесь указываем пути к ключам и сертификатам клиента. Не забываем про адрес и порт сервера, куда подключаться, для примера я указал internet-lab.ru UDP 1194.

Отправляем подготовленные файлы на компьютер клиента и копируем в C:Program FilesOpenVPNconfig.

vpn

На клиента запускаем OpenVPN GUI.

vpn

В трее появляется значок OpenVPN.

vpn

Правой кнопкой — подключиться.

vpn

Устанавливается соединение.

vpn

Значок позеленел, назначен адрес 10.8.0.6.

vpn

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

vpn

Для второго и последующего клиента генерируем свой набор клиентских сертификатов.

vpn

Отзыв сертификата

Иногда нужно отозвать сертификат, выданный клиенту. Кто-то увольняется, кто-то палит сертификаты.

cd "C:Program FilesOpenVPNeasy-rsa"
vars.bat
revoke-full client

Где client — это имя клиента.

В папке C:Program FilesOpenVPNkeys появляется файл:

  • crl.pem

Копируем его с заменой в рабочую директорию сервера C:Program FilesOpenVPNssl.

Добавляем строчку в конфигурационный файл сервера:

crl-verify "C:\Program Files\OpenVPN\keys\crl.pem"  

Перезапускаем службу OpenVPN сервера.

net stop OpenVPNService
net start OpenVPNService

Если в конфигурационном файле уже был ранее указан путь к crl.pem, то службу можно не перезапускать, OpenVPN перечитывает CRL один раз в час. Но в течении этого часа клиенты с отозванными сертификатами смогут продолжать подключаться и работать.

Для клиента с отозванным сертификатом процесс подключения будет «зависать». В логе можно увидеть:

TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS Error: TLS handshake failed

Чтобы клиент не стучался постоянно на сервер, у него в конфиге есть опция:

connect-retry-max 25

Передать эту опцию при отзыве сертификата нельзя, поэтому указывайте её всем клиентам заранее.

Ссылки

OpenVPN 2.5.1 сервер на Windows

OpenVPN - установка и настройка

В этой статье я рассмотрю процесс настройки OpenVPN клиента (client) и сервера (server) на примере версии 2.4.7. используемая операционная система — Windows 10, но таким же образом можно настроить OpenVPN на Windows 7.

OpenVPN – механизм реализации виртуальных частных сетей (Virtual Private Network, VPN) с открытым исходным кодом. Используется для создания защищенных (шифрованных) каналов связи между сервером и клиентом, а так же между двумя точками.

OpenVPN позволяет создавать безопасные соединения между компьютерами, которые находятся за пределами фаервола, при этом не требуется изменять настройки фаервола.

Создателем системы является Джеймсом Йонаном (James Yonan).

Что бы создать защищенный канал используется библиотека OpenSSL. Весь набор шифров доступный в библиотеке используется в системе.

Система предлагает пользователю несколько способов аутентификации:

  • Аутентификация с помощью предустановленного ключа – наиболее простой метод.
  • Серверная аутентификация – более сложный, но при этом более гибкий в настройках метод.
  • При помощи ввода логина и пароля. Может использоваться без создания сертификата клиента, при этом сертификат сервера все равно необходим.

Давайте разберемся на примере. Я настрою OpenVPN на двух компьютерах под управлением Windows 10. Они будут находиться в одной локальной сети. Так как для настроек через интернет необходим хотя бы один статический IP-адрес.

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

Установка и настройка OpenVPN

Один компьютер будет играть роль сервера. Второй – клиента. На сервере при установке OpenVPN нужно установить флажок EasyRSA – для генерации сертификатов и ключей.

Переходим на официальный сайт OpenVPN http://openvpn.net/community-downloads/ и скачиваем программу. В моем случае OpenVPN 2.4.7 для Windows 10 (openvpn-install-2.4.7-I607-Win10).

В теории можно скачать и более поздний релиз, но лучше скачивать проверенную версию. Так как я не настраивал последние версии. Если дойдут руки, то дополню статью.

После запуска программы установки включаем EasyRSA (на сервере) и устанавливаем. Программа устанавливается просто и не требует каких-либо специфических настроек при установке.

Затем устанавливаем программу втором компьютере который будет играть роль клиента.

Далее нужно настроить компьютеры, что бы они видели друг друга в сети. Этот процесс зависит от установленной у вас операционной системы. Фактически вам нужно включить сетевое обнаружение.

Создание сертификатов и генерация ключей

Ключи и сертификаты создаются на сервере OpenVPN. Для их создания необходимо выполнить следующие действия:

Запустите командную строку от имени администратора.

Запуск командной строки от имени администратора

С помощью команды cd перейдите в папку C:Program FilesOpenVPNeasy-rsa и выполните команду init-config.bat, после чего в папке easy-rsa появиться файл vars.bat.

Откройте vars.bat с помощью блокнота или иного текстового редактора. Я открыл в Notepad++. Укажите свои данные.

Данные в var.bat

Данные можно указывать в процессе работы с OpenVPN.

Указание данных в процессе

Вернитесь в командную строку и по очереди выполните команды vars и clean-all поочередно.

Команды vars и clean-all

Выполните команду build-dh. Если у вас появиться ошибка «openssl» не является внутренней или внешней командой, исполняемой программой или пакетный файлом, то нужно добавить в переменные среды путь OpenVPNbin.

Изменение системных переменных сред

Для этого нужно в переменную среды Path создать путь C:Program FilesOpenVPNbin.

Переменная path

Затем заново откройте командную строку и выполните пункты 4-5 заново.

Подождите до завершения процесса. В результате в паке OpenVPNeasy-rsakeys появиться файл dh2048.pem.

Создайте новый сертификат Certificate Authority (CA) и ключ, для чего введите команду build-ca. После завершения процесса в папке keys появятся два файла ca.crt и ca.key.

Создайте сертификат и ключ сервера. Для этого введите команду build-key-server к которой нужно добавить [CommonName] (в моем случае abuzov-name), то есть моя команда будет build-key-server abuzov-name. В конце дайте положительный ответ (y) на два вопроса.

Создайте сертификат и ключ для клиента. Введите команду build-key [CommonNameClient], например build-key ClientVPN1.

Создайте ключ для аутентификации пакетов, для этого выполните команду openvpn —genkey —secret keys/ta.key. В результате в папке easy-rsakeys появится файл ta.key

Таблица соответствия сертификатов и ключей

Имя Где применяется Назначение Секретность
ca.crt Сервер + все клиенты Корневой сертификат (Root CA certificate) Нет
ta.key Сервер + все клиенты Файл аутентификации пакетов Да
ca.key Сервер Корневой ключ (Root CA key) Да
dh2048.pem Сервер Файл параметров Нет
abuzov-name.csr Сервер Сертификат сервера Нет
abuzov-name.key Сервер Ключ сервера Да
ClientVPN1.csr Только на ClientVPN1 Сертификат клиента Нет
ClientVPN1.key Только на ClientVPN1 Ключ клиента Да

Теперь нужно скопировать соответствующие ключи на сервер и клиент в папку config (в моем случае это C:Program FilesOpenVPNconfig).

Создание и настройка файлов конфигурации OpenVPN

Конфигурация основывается на файлах типовой конфигурации, которые находятся в C:Program FilesOpenVPNsample-config.

Настройка конфигурации сервера

Копируете файл server.ovpn из папки sample-config в папку config. Открываете и редактируете его. Обратите внимание на двойные слеши.

  1. Найдите строку, которая начинается на ca и укажите путь к своему ca файлу. В моем случае это ca «C:\Program Files\OpenVPN\config\ca.crt».
  2. Найдите cert и отредактируйте соответственно, в моем случае это cert «C:\Program Files\OpenVPN\config\abuzov-name.crt».
  3. По аналогии с key — key «C:\Program Files\OpenVPN\config\abuzov-name.key».
  4. Аналогично с dh — dh «C:\Program Files\OpenVPN\config\dh2048.pem»
  5. Аналогично tls-auth — «C:\Program Files\OpenVPN\config\ta.key».

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

mode server
port 1194
dev tap
proto tcp-server
tls-server
tls-auth "C:\Program Files\OpenVPN\config\ta.key" 0
duplicate-cn
auth MD5
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca "C:\Program Files\OpenVPN\config\ca.crt"
cert "C:\Program Files\OpenVPN\config\abuzov-name.crt"
key "C:\Program Files\OpenVPN\config\abuzov-name.key" # This file should be kept secret
dh "C:\Program Files\OpenVPN\config\dh2048.pem"
server 10.10.10.0 255.255.255.0
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3
route-delay 10
route-method exe
route 10.10.10.0 255.255.255.0
route 192.168.0.0 255.255.0.0
route-gateway 10.10.10.1

Сохраните файл конфигурации сервера.

Запустите OpenVPN от имени администратора (и сразу сделайте так, что бы он всегда запускался от имени администратора).

После этого подключитесь к северу как показано на рисунке.

Подключение к серверу OpenVPN

Настройка конфигурации клиента

Копируете файл client.ovpn из папки sample-config в папку config. Открываете и редактируете его аналогии. В моем случае это:

  1. ca «C:\Program Files\OpenVPN\config\ca.crt»
  2. cert «C:\Program Files\OpenVPN\config\ClientVPN1.crt»
  3. key «C:\Program Files\OpenVPN\config\ClientVPN1.key»
  4. remote IP_адрес_сервера

Опять, лучше приведу полный код.

remote IP-адрес-вашего-сервера
client
port 1194
dev tap
proto tcp-client
tls-client
tls-auth "C:\Program Files\OpenVPN\config\ta.key" 1
remote-cert-tls server
route-delay 2
auth MD5
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca ca.crt
cert ClientVPN.crt
key ClientVPN.key
pull
cipher AES-128-CBC
comp-lzo
persist-key
persist-tun
verb 3
route-method exe
route-delay 3

Единственное что нужно сделать — указать IP-адрес сервера.

Далее подключаем клиент OpenVPN.

Если клиент не подключается к серверу, тогда нужно на сервере необходимо запустить regedit.exe, затем перейти по адресу: «КомпьютерHKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters» и изменить IPEnableRouter на 1. После чего перезагрузить сервер и подключиться к OpenVPN заново.

После этого можно подключаться по защищенному соединению.

Подключение openvpn

Материал из Xgu.ru

Перейти к: навигация, поиск

stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Автор: Сергей Черепенин

Короткий URL: openvpn/windows

Содержание

  • 1 Организация соединения с использованием статических ключей
  • 2 Создание сертификатов на Windows с использованием easy-rsa
  • 3 Создание сертификатов на Debian с использованием easy-rsa
  • 4 Настройка пула адресов для получения их клиентами
  • 5 Настройка парольной аутентификации системных пользователей для установки подключения
  • 6 Настройка OpenVPN для работы в качестве сервера
  • 7 Openvpn FreeBSD
  • 8 Дополнительная информация
  • 9 Материалы по OpenVPN на xgu.ru

[править] Организация соединения с использованием статических ключей

В данной главе рассматривается подготовка и организация vpn соединения с использованием статического ключа. В качестве сервера используется компьютер с операционной системой Debian GNU/Linux Etch на ядре 2.6.18-4-686, а в качестве клиента — Windows 2003 SP2.

Настройки сетевых интерфейсов сервера и клиента:

  • сервер
$ /sbin/ifconfig

eth0      Link encap:Ethernet  HWaddr 00:04:76:A1:EF:BB  
          inet addr:10.0.17.1  Bcast:10.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::204:76ff:fea1:efbb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5663951 errors:0 dropped:0 overruns:1 frame:0
          TX packets:2928925 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1850432381 (1.7 GiB)  TX bytes:330532572 (315.2 MiB)
          Interrupt:169 

eth1      Link encap:Ethernet  HWaddr 00:60:08:20:7B:0B  
          inet addr:192.168.16.15  Bcast:192.168.16.255  Mask:255.255.255.0
          inet6 addr: fe80::260:8ff:fe20:7b0b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:104476 errors:0 dropped:0 overruns:0 frame:0
          TX packets:120582 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:19294593 (18.4 MiB)  TX bytes:48250297 (46.0 MiB)
          Interrupt:185 Base address:0xc400 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:64752 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64752 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:43343011 (41.3 MiB)  TX bytes:43343011 (41.3 MiB)
  • клиент
C:Documents and SettingsAdministrator>ipconfig /all

Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix  . : net.nt
Description . . . . . . . . . . . : 3Com EtherLink XL 10/100 PCI For Complete
PC Management NIC (3C905C-TX)
Physical Address. . . . . . . . . : 00-04-75-75-46-C1
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.16.197
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.16.15
DHCP Server . . . . . . . . . . . : 192.168.16.15
DNS Servers . . . . . . . . . . . : 192.168.16.15
Lease Obtained. . . . . . . . . . : 12 июля 2011 г. 11:49:13
Lease Expires . . . . . . . . . . : 12 июля 2011 г. 11:59:13

Теперь необходимо проинсталлировать необходимое программное обеспечение принятым, для каждой операционной системы, способом.

На сервере под управлением ОС Debian GNU/Linux достаточно выполнить команду:

$ sudo apt-get install openvpn -y

Список файлов, входящих в состав пакета openvpn_2.0.9-4_i386.deb можно просмотреть с помощью команды:

$ sudo dpkg -L openvpn

Кроме этого, проверьте имеет ли Ваше ядро поддержку TUN/TAP устройств. Сделать это можно выполнив следующую команду:

$ grep CONFIG_TUN /boot/config-`uname -r`
CONFIG_TUN=m

Если Ваше ядро не поддерживает эти устройства:

$ grep CONFIG_TUN /boot/config-`uname -r`
# CONFIG_TUN is not set

то для продолжения Вам необходимо скомпилировать этот модуль.

На клиенте, под управлением ОС Windows 2003 SP2, необходимо в первую очередь получить инсталляционный файл. Скачать его можно с помощью ссылки. На момент написания статьи текущая версия OpenVPN — 2.0.9. Затем необходимо проинсталлировать полученное программное обеспечение обычным вызовом .exe файла. Во время инсталляции оставьте все значения по умолчанию.

После установки необходимо сгенерировать статический ключ на любом компьютере — сервере или клиенте, скопировать его на другой компьютер и отредактировать конфигурационные файлы сервера и клиента.

  • Для генерации статического ключа в ОС Debian необходимо выполнить следующую команду:
 
$ sudo openvpn --genkey --secret /etc/openvpn/static.key
  • Для генерации статического ключа в ОС Windows необходимо запустить следующую команду: Пуск -> Программы -> OpenVPN -> Generate a static OpenVPN key. В результате будет создан файл C:Program FilesOpenVPNconfigkey.txt. Затем необходимо скопировать этот ключ на другого участника соединения.

Далее отредактируйте конфигурационные файлы сервера и клиента:

  • конфигурационный файл сервера /etc/openvpn/sample.conf:
cat  /etc/openvpn/sample.conf 
dev tap
ifconfig 172.16.0.1 255.255.255.0
secret key.txt
comp-lzo
  • конфигурационный файл клиента C:Program FilesOpenVPNconfigsample.ovpn:
remote 192.168.16.15
dev tap
ifconfig 172.16.0.2 255.255.255.0
secret key.txt
comp-lzo

Из указанных выше конфигурационных файлов видно, что различие серверного и клиентского конфигов очень мало, и сервером будет тот компьютер, у которого не указан параметр remote

Выполним команду на сервере:

sudo openvpn --config /etc/openvpn/sample.conf
Tue Jul  12 11:54:44 2011 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Jan 21 2007
Tue Jul  12 11:54:44 2011 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Tue Jul  12 11:54:44 2011 WARNING: file 'key.txt' is group or others accessible
Tue Jul  12 11:54:44 2011 TUN/TAP device tap0 opened
Tue Jul  12 11:54:44 2011 /sbin/ifconfig tap0 172.16.0.1 netmask 255.255.255.0 mtu 1500 broadcast 172.16.0.255
Tue Jul  12 11:54:44 2011 UDPv4 link local (bound): [undef]:1194
Tue Jul  12 11:54:44 2011 UDPv4 link remote: [undef]
Tue Jul  12 11:54:57 2011 Peer Connection Initiated with 192.168.16.197:1194
Tue Jul  12 11:54:58 2011 Initialization Sequence Completed

Затем на windows:

Ovpn1.png

Запустить сервис OpenVPN под Windows можно и из cmd:

C:Documents and SettingsAdministrator>cd "c:Program FilesOpenVPNconfig"
C:Program FilesOpenVPNconfig>openvpn --config sample.ovpn
Tue Jul 12 12:52:24 2011 us=640078 Current Parameter Settings:
Tue Jul 12 12:52:24 2011 us=640364   config = 'sample.ovpn'
Tue Jul 12 12:52:24 2011 us=640535   mode = 0
Tue Jul 12 12:52:24 2011 us=640688   show_ciphers = DISABLED
Tue Jul 12 12:52:24 2011 us=640852   show_digests = DISABLED
Tue Jul 12 12:52:24 2011 us=641022   show_engines = DISABLED
Tue Jul 12 12:52:24 2011 us=641192   genkey = DISABLED
Tue Jul 12 12:52:24 2011 us=641358   key_pass_file = '[UNDEF]'
Tue Jul 12 12:52:24 2011 us=641529   show_tls_ciphers = DISABLED
Tue Jul 12 12:52:24 2011 us=641706   proto = 0
Tue Jul 12 12:52:24 2011 us=641863 NOTE: --mute triggered...
Tue Jul 112 12:52:24 2011 us=642076 178 variation(s) on previous 10 message(s) su
ppressed by --mute
Tue Jul 12 12:52:24 2011 us=642346 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built o
n Oct  1 2006
Tue Jul 12 12:52:24 2011 us=643308 IMPORTANT: OpenVPN's default port number is n
ow 1194, based on an official port number assignment by IANA.  OpenVPN 2.0-beta1
6 and earlier used 5000 as the default port.
Tue Jul 12 12:52:24 2011 us=643684 WARNING: --ping should normally be used with
--ping-restart or --ping-exit
Tue Jul 12 12:52:24 2011 us=644588 Static Encrypt: Cipher 'BF-CBC' initialized w
ith 128 bit key
Tue Jul 12 12:52:24 2011 us=644902 Static Encrypt: Using 160 bit message hash 'S
HA1' for HMAC authentication
Tue Jul 12 12:52:24 2011 us=645257 Static Decrypt: Cipher 'BF-CBC' initialized w
ith 128 bit key
Tue Jul 12 12:52:24 2011 us=645528 Static Decrypt: Using 160 bit message hash 'S
HA1' for HMAC authentication
Tue Jul 12 12:52:24 2011 us=645839 LZO compression initialized
Tue Jul 12 12:52:24 2011 us=650456 TAP-WIN32 device [Local Area Connection 2] op
ened: \.Global{59380ED2-2769-41B0-97F6-C4BC571471CA}.tap
Tue Jul 12 12:52:24 2011 us=650817 TAP-Win32 Driver Version 8.4
Tue Jul 12 12:52:24 2011 us=651030 TAP-Win32 MTU=1500
Tue Jul 12 12:52:24 2011 us=651244 Notified TAP-Win32 driver to set a DHCP IP/ne
tmask of 172.16.0.2/255.255.255.0 on interface {59380ED2-2769-41B0-97F6-C4BC5714
71CA} [DHCP-serv: 172.16.0.0, lease-time: 31536000]
Tue Jul 12 12:52:24 2011 us=687896 Successful ARP Flush on interface [65540] {59
380ED2-2769-41B0-97F6-C4BC571471CA}
Tue Jul 12 12:52:24 2011 us=694501 Data Channel MTU parms [ L:1577 D:1450 EF:45
EB:135 ET:32 EL:0 AF:3/1 ]
Tue Jul 12 12:52:24 2011 us=698395 Local Options String: 'V4,dev-type tap,link-m
tu 1577,tun-mtu 1532,proto UDPv4,ifconfig 172.16.0.0 255.255.255.0,comp-lzo,ciph
er BF-CBC,auth SHA1,keysize 128,secret'
Tue Jul 12 12:52:24 2011 us=704162 Expected Remote Options String: 'V4,dev-type
tap,link-mtu 1577,tun-mtu 1532,proto UDPv4,ifconfig 172.16.0.0 255.255.255.0,com
p-lzo,cipher BF-CBC,auth SHA1,keysize 128,secret'
Tue Jul 12 12:52:24 2011 us=710006 Local Options hash (VER=V4): '94889dd0'
Tue Jul 12 12:52:24 2011 us=712199 Expected Remote Options hash (VER=V4): '94889
dd0'
Tue Jul 12 12:52:24 2011 us=716063 Socket Buffers: R=[8192->8192] S=[8192->8192]
Tue Jul 12 12:52:24 2011 us=720016 UDPv4 link local (bound): [undef]:1194
Tue Jul 12 12:52:24 2011 us=722180 UDPv4 link remote: 192.168.16.15:1194
Tue Jul 12 12:52:30 2011 us=303168 Peer Connection Initiated with 192.168.16.15:
1194
Tue Jul 12 12:52:31 2011 us=54350 TEST ROUTES: 0/0 succeeded len=-1 ret=1 a=0 u/
d=up
Tue Jul 12 12:52:31 2011 us=58342 Initialization Sequence Completed

Теперь проверьте состояние интерфейсов при помощи команды /sbin/ifconfig на сервере:

/sbin/ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:04:76:A1:EF:BB  
          inet addr:10.0.17.1  Bcast:10.255.255.255  Mask:255.0.0.0
          inet6 addr: fe80::204:76ff:fea1:efbb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5663951 errors:0 dropped:0 overruns:1 frame:0
          TX packets:2928925 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1850432381 (1.7 GiB)  TX bytes:330532572 (315.2 MiB)
          Interrupt:169 

eth1      Link encap:Ethernet  HWaddr 00:60:08:20:7B:0B  
          inet addr:192.168.16.15  Bcast:192.168.16.255  Mask:255.255.255.0
          inet6 addr: fe80::260:8ff:fe20:7b0b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:104476 errors:0 dropped:0 overruns:0 frame:0
          TX packets:120582 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:19294593 (18.4 MiB)  TX bytes:48250297 (46.0 MiB)
          Interrupt:185 Base address:0xc400 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:64752 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64752 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:43343011 (41.3 MiB)  TX bytes:43343011 (41.3 MiB)

tap0      Link encap:Ethernet  HWaddr 86:FA:EC:53:C3:84  
          inet addr:172.16.0.1  Bcast:172.16.0.255  Mask:255.255.255.0
          inet6 addr: fe80::84fa:ecff:fe53:c384/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:83 errors:0 dropped:0 overruns:0 frame:0
          TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:10893 (10.6 KiB)  TX bytes:9344 (9.1 KiB)

И на windows-клиенте при помощи команды ipconfig /all:

C:Documents and SettingsAdministrator>ipconfig /all

Windows IP Configuration

Host Name . . . . . . . . . . . . : win0
Primary Dns Suffix  . . . . . . . :
Node Type . . . . . . . . . . . . : Unknown
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : net.nt
Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix  . : net.nt
Description . . . . . . . . . . . : 3Com EtherLink XL 10/100 PCI For Complete
PC Management NIC (3C905C-TX)
Physical Address. . . . . . . . . : 00-04-75-75-46-C1
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 192.168.16.197
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.16.15
DHCP Server . . . . . . . . . . . : 192.168.16.15
DNS Servers . . . . . . . . . . . : 192.168.16.15
Lease Obtained. . . . . . . . . . : 12 июля 2011 г. 12:14:14
Lease Expires . . . . . . . . . . : 12 июля 2011 г. 12:24:14

Ethernet adapter Local Area Connection 2:
Connection-specific DNS Suffix  . :
Description . . . . . . . . . . . : TAP-Win32 Adapter V8
Physical Address. . . . . . . . . : 00-FF-59-38-0E-D2
DHCP Enabled. . . . . . . . . . . : Yes
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 172.16.0.2
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
DHCP Server . . . . . . . . . . . : 172.16.0.0
Lease Obtained. . . . . . . . . . : 12 июля 2011 г. 12:15:23
Lease Expires . . . . . . . . . . : 12 июля 2011 г. 12:15:23

И проверьте только что установленный туннель :

ping 172.16.0.2 -c 4
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=128 time=4.57 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=128 time=0.813 ms
64 bytes from 172.16.0.2: icmp_seq=3 ttl=128 time=0.950 ms
64 bytes from 172.16.0.2: icmp_seq=4 ttl=128 time=1.11 ms

--- 172.16.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 0.813/1.863/4.578/1.571 ms

На этом организация vpn соединения с использованием статических ключей завершена.

[править] Создание сертификатов на Windows с использованием easy-rsa

В первую очередь необходимо создать каталог c:Progam FilesOpenVPNeasy-rsakeys и скопировать в него файлы serial.start и index.txt.start без суффикса .start. Сделать это можно при помощи следующей команды запущенной в cmd:

C:Documents and SettingsAdministrator>cd "c:Program FilesOpenVPNeasy-rsa" && mkdir keys && copy serial.start keysserial && copy index.txt.start keysindex.txt
        1 file(s) copied.
        1 file(s) copied.

Затем необходимо скопировать файлы vars.bat.sample и openssl.cnf.sample в vars.bat и openssl.cnf соответственно. Сделать это можно, выполнив batch файл C:Program FilesOpenVPNeasy-rsainit-config.bat при помощи следующей команды:

C:Documents and SettingsAdministrator>cd "c:Program FilesOpenVPNeasy-rsa" && init-config.bat
C:Program FilesOpenVPNeasy-rsa>copy vars.bat.sample vars.bat
        1 file(s) copied.
C:Program FilesOpenVPNeasy-rsa>copy openssl.cnf.sample openssl.cnf
        1 file(s) copied.

Файл openssl.cnf — >>>>

Файл vars.bat ——>>>

Затем необходимо отредактировать файл vars.bat:

@echo off
set HOME=%ProgramFiles%OpenVPNeasy-rsa
set KEY_CONFIG=openssl.cnf
set KEY_DIR=keys
set KEY_SIZE=1024
set KEY_COUNTRY=UA
set KEY_PROVINCE=Kiev
set KEY_CITY=Kiev
set KEY_ORG=TechExpert
set KEY_EMAIL=otradnyi@mail.ru

Затем необходимо внести изменения в среду окружения согласно файла vars.bat. Сделать это можно из cmd при помощи следующей команды:

C:Documents and SettingsAdministrator>cd "c:Program FilesOpenVPNeasy-rsa" && vars.bat
  • Затем необходимо создать Diffie-Hellman key:
C:Program FilesOpenVPNeasy-rsa>vars.bat
C:Program FilesOpenVPNeasy-rsa>build-dh.bat
Loading 'screen' into random state - done
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
..................+...............................................................................+..........+.......................
.....+.....+.............+........................................................+.........+........................................
+.........+...................................................................................+......................................
.................................................................+...................................................+...............
.........+............................................................................+........+............................+........
....................+........................................+.........+............................+................................
.......................+...........+.................................................................+..........+....................
............................................+......+.........................+.......................+.....................+.........
........................................................+....+.......................................................................
.............................+..........................................+............................................................
..................................+...........+....................................................+.................................
.............................................................+......................................+.............................+..
.................................................................................................................+...................
.....++*++*++*

В результате в каталоге C:Program FilesOpenVPNeasy-rsakeys появится файл dh1024.pem:

C:Program FilesOpenVPNeasy-rsa>dir keys
Volume in drive C has no label.
Volume Serial Number is 508A-A105
Directory of C:Program FilesOpenVPNeasy-rsakeys
13.07.2011  13:22    <DIR>          .
13.07.2011  13:22    <DIR>          ..
13.07.2011  13:22               245 dh1024.pem
13.07.2011  13:06                 0 index.txt
13.07.2011  13:06                 3 serial
               3 File(s)            248 bytes
               2 Dir(s)   7 517 777 920 bytes free
  • Теперь необходимо создать Certificate Authority. Создается он путем выполнения файла build-ca.bat:
C:Program FilesOpenVPNeasy-rsa>vars.bat



C:Program FilesOpenVPNeasy-rsa>build-ca.bat
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
.......++++++
...................++++++
writing new private key to 'keysca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:UA
State or Province Name (full name) [Kiev]:Kiev
Locality Name (eg, city) [Kiev]:Kiev
Organization Name (eg, company) [TechExpert]:TechExpert
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:win0
Email Address [otradnyi@mail.ru]:otradnyi@mail.ru

В результате выполнения этой команды в каталоге keys было создано два файла ca.crt и ca.key:

C:Program FilesOpenVPNeasy-rsa>dir keys
Volume in drive C has no label.
Volume Serial Number is 508A-A105
Directory of C:Program FilesOpenVPNeasy-rsakeys
13.07.2011  13:38    <DIR>          .
13.07.2011  13:38    <DIR>          ..
13.07.2011  13:38             1 224 ca.crt
13.07.2011  13:38               887 ca.key
13.07.2011  13:22               245 dh1024.pem
13.07.2011  13:06                 0 index.txt
13.07.2011  13:06                 3 serial
               5 File(s)          2 359 bytes
               2 Dir(s)   7 517 769 728 bytes free

ca.crt —>>>

ca.key —->>>

  • Далее необходимо создать ключи сервера и клиента.

Для этого необходимо выполнить файл build-key-server.bat с параметром имени сервера, в нашем случае это win0:

C:Program FilesOpenVPNeasy-rsa>vars.bat
C:Program FilesOpenVPNeasy-rsa>build-key-server.bat win0
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
............................................++++++
....................++++++
writing new private key to 'keyswin0.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:
State or Province Name (full name) [Kiev]:
Locality Name (eg, city) [Kiev]:
Organization Name (eg, company) [TechExpert]:
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:win0
Email Address [otradnyi@mail.ru]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from openssl.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'UA'
stateOrProvinceName   :PRINTABLE:'Kiev'
localityName          :PRINTABLE:'Kiev'
organizationName      :PRINTABLE:'TechExpert'
organizationalUnitName:PRINTABLE:'IT'
commonName            :PRINTABLE:'win0'
emailAddress          :IA5STRING:'otradnyi@mail.ru'
Certificate is to be certified until Jul  13 11:25:57 2017 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

В результате в каталоге:

C:Program FilesOpenVPNeasy-rsa>dir keys
Volume in drive C has no label.
Volume Serial Number is 508A-A105
Directory of C:Program FilesOpenVPNeasy-rsakeys
13.07.2011  14:26    <DIR>          .
13.07.2011  14:26    <DIR>          ..
13.07.2011  14:26             3 629 01.pem
13.07.2011  13:38             1 224 ca.crt
13.07.2011  13:38               887 ca.key
13.07.2011  13:22               245 dh1024.pem
13.07.2011  14:26                99 index.txt
13.07.2011  14:26                21 index.txt.attr
13.07.2011  14:26                 3 serial
13.07.2011  14:26             3 629 win0.crt
13.07.2011  14:25               680 win0.csr
13.07.2011  14:25               887 win0.key
               10 File(s)         11 304 bytes
               2 Dir(s)   7 517 663 232 bytes free
  • Теперь создадим ключ клиента:
C:Program FilesOpenVPNeasy-rsa>build-key.bat roman
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
........++++++
........++++++
writing new private key to 'keysroman.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:
State or Province Name (full name) [Kiev]:
Locality Name (eg, city) [Kiev]:
Organization Name (eg, company) [TechExpert]:
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:roman
Email Address [otradnyi@mail.ru]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from openssl.cnf
Loading 'screen' into random state - done
DEBUG[load_index]: unique_subject = "yes"
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'UA'
stateOrProvinceName   :PRINTABLE:'Kiev'
localityName          :PRINTABLE:'Kiev'
organizationName      :PRINTABLE:'TechExpert'
organizationalUnitName:PRINTABLE:'IT'
commonName            :PRINTABLE:'roman'
emailAddress          :IA5STRING:'otradnyi@mail.ru'
Certificate is to be certified until Jul  13 11:37:01 2017 GMT (3650 days)
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

В результате в каталоге:

C:Program FilesOpenVPNeasy-rsa>dir keys
Volume in drive C has no label.
Volume Serial Number is 508A-A105
Directory of C:Program FilesOpenVPNeasy-rsakeys
13.07.2011  14:37    <DIR>          .
13.07.2011  14:37    <DIR>          ..
13.07.2011  14:26             3 629 01.pem
13.07.2011  14:37             3 531 02.pem
13.07.2011  13:38             1 224 ca.crt
13.07.2011  13:38               887 ca.key
13.07.2011  13:22               245 dh1024.pem
13.07.2011  14:37               199 index.txt
13.07.2011  14:37                21 index.txt.attr
13.07.2011  14:37                 3 serial
13.07.2011  14:37             3 531 roman.crt
13.07.2011  14:37               680 roman.csr
13.07.2011  14:37               887 roman.key
13.07.2011  14:26             3 629 win0.crt
13.07.2011  14:25               680 win0.csr
13.07.2011  14:25               887 win0.key
              14 File(s)         20 033 bytes
               2 Dir(s)   7 517 650 944 bytes free
  • Теперь необходимо скопировать roman.crt, roman.key и ca.crt в каталог /etc/openvpn.
  • mkdir /etc/openvpn/keys
  • Теперь необходимо поправить конфиги:

—Винда:

###remote 192.168.16.15
###secret key.txt

dev tap

ifconfig 172.16.0.2 255.255.255.0

###comp-lzo
tls-server
dh keys/dh1024.pem
ca keys/ca.crt
cert keys/win0.crt
key keys/win0.key

— Linux

remote 192.168.16.197
dev tap
tls-client
ifconfig 172.168.0.1 255.255.255.0
dh dh1024.pem
ca ca.crt
cert roman.crt
key roman.key

Если при старте сервера на Windows возникнет ошибка:

system library:fopen:No such file or directory

Необходимо переместить каталог c:Progam FilesOpenVPNeasy-rsakeys в с:keys и после этого модифицировать конфиг:

dev tap
ifconfig 172.16.0.2 255.255.255.0
tls-server
dh c:\keys\dh1024.pem
ca c:\keys\ca.crt
cert c:\keys\win0.crt
key c:\keys\win0.key

Теперь запустим сервер vpn из cmd под Windows с помощью следующей команды:

C:Documents and SettingsAdministrator>openvpn --config "c:Program FilesOpenVPNconfigsample.ovpn"
Tue Jul 12 17:02:23 2011 us=612115 Current Parameter Settings:
Tue Jul 12 17:02:23 2011 us=612409   config = 'c:Program FilesOpenVPNconfigsample.ovpn'
Tue Jul 12 17:02:23 2011 us=612634   mode = 0
Tue Jul 12 17:02:23 2011 us=612791   show_ciphers = DISABLED
Tue Jul 12 17:02:23 2011 us=612953   show_digests = DISABLED
Tue Jul 12 17:02:23 2011 us=613112   show_engines = DISABLED
Tue Jul 12 17:02:23 2011 us=613270   genkey = DISABLED
Tue Jul 12 17:02:23 2011 us=613427   key_pass_file = '[UNDEF]'
Tue Jul 12 17:02:23 2011 us=613591   show_tls_ciphers = DISABLED
Tue Jul 12 17:02:23 2011 us=613753   proto = 0
Tue Jul 12 17:02:23 2011 us=613910 NOTE: --mute triggered...
Tue Jul 12 17:02:23 2011 us=614111 178 variation(s) on previous 10 message(s) suppressed by --mute
Tue Jul 12 17:02:23 2011 us=614331 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct  1 2006
Tue Jul 12 17:02:23 2011 us=615260 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment
.  OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Tue Jul 12 17:02:23 2011 us=615596 WARNING: --ping should normally be used with --ping-restart or --ping-exit
Tue Jul 12 17:02:23 2011 us=671943 Diffie-Hellman initialized with 1024 bit key
Tue Jul 12 17:02:23 2011 us=675391 Control Channel MTU parms [ L:1573 D:138 EF:38 EB:0 ET:0 EL:0 ]
Tue Jul 12 17:02:23 2011 us=680475 TAP-WIN32 device [Local Area Connection 4] opened: \.Global{DDA59CFF-B7AE-4F0E-91DA-C111AF5139B
Tue Jul 12 17:02:23 2011 us=680823 TAP-Win32 Driver Version 8.4
Tue Jul 12 17:02:23 2011 us=681026 TAP-Win32 MTU=1500
Tue Jul 12 17:02:23 2011 us=681234 Notified TAP-Win32 driver to set a DHCP IP/netmask of 172.16.0.2/255.255.255.0 on interface {DDA59
E-4F0E-91DA-C111AF5139B5} [DHCP-serv: 172.16.0.0, lease-time: 31536000]
Tue Jul 12 17:02:23 2011 us=716919 Successful ARP Flush on interface [196612] {DDA59CFF-B7AE-4F0E-91DA-C111AF5139B5}
Tue Jul 12 17:02:23 2011 us=725976 Data Channel MTU parms [ L:1573 D:1450 EF:41 EB:4 ET:32 EL:0 ]
Tue Jul 12 17:02:23 2011 us=726302 Local Options String: 'V4,dev-type tap,link-mtu 1573,tun-mtu 1532,proto UDPv4,ifconfig 172.16.0.0
.255.0,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server'
Tue Jul 12 17:02:23 2011 us=726626 Expected Remote Options String: 'V4,dev-type tap,link-mtu 1573,tun-mtu 1532,proto UDPv4,ifconfig 1
.0 255.255.255.0,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client'
Tue Jul 12 17:02:23 2011 us=726987 Local Options hash (VER=V4): '79e31c21'
Tue Jul 12 17:02:23 2011 us=727192 Expected Remote Options hash (VER=V4): '5a258ee1'
Tue Jul 12 17:02:23 2011 us=727475 Socket Buffers: R=[8192->8192] S=[8192->8192]
Tue Jul 12 17:02:23 2011 us=727723 UDPv4 link local (bound): [undef]:1194
Tue Jul 12 17:02:23 2011 us=727898 UDPv4 link remote: [undef]

Затем на клиенте дадим команду:

sudo openvpn --config /etc/openvpn/sample.conf

И смотрим на продолжение вывода на сервере:

Tue Jul 12 17:05:23 2011 us=993139 TLS: Initial packet from 192.168.16.15:1194, sid=76cd5180 622a0d09
Tue Jul 12 17:05:24 2011 us=505011 VERIFY OK: depth=1, /C=UA/ST=Kiev/L=Kiev/O=TechExpert/OU=IT/CN=win0/emailAddress=otradnyi@mail.ru
Tue Jul 12 17:05:24 2011 us=506441 VERIFY OK: depth=0, /C=UA/ST=Kiev/O=TechExpert/OU=IT/CN=roman/emailAddress=otradnyi@mail.ru
Tue Jul 12 17:05:24 2011 us=567168 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Tue Jul 12 17:05:24 2011 us=567435 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Jul 12 17:05:24 2011 us=567739 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Tue Jul 12 17:05:24 2011 us=567977 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Tue Jul 12 17:05:24 2011 us=569802 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Tue Jul 12 17:05:24 2011 us=570075 [roman] Peer Connection Initiated with 192.168.16.15:1194
Tue Jul 12 17:05:26 2011 us=153485 TEST ROUTES: 0/0 succeeded len=-1 ret=1 a=0 u/d=up
Tue Jul 12 17:05:26 2011 us=153796 Initialization Sequence Completed

И проверяем

ping 172.16.0.2 -c 4
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=128 time=8.91 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=128 time=1.00 ms
64 bytes from 172.16.0.2: icmp_seq=3 ttl=128 time=1.23 ms
64 bytes from 172.16.0.2: icmp_seq=4 ttl=128 time=1.34 ms

[править] Создание сертификатов на Debian с использованием easy-rsa

ls -l /usr/share/doc/openvpn/examples/easy-rsa/
итого 80
drwxr-xr-x 2 root root 4096 2011-07-13 00:18 2.0
-rwxr-xr-x 1 root root  242 2011-07-13 13:06 build-ca
-rwxr-xr-x 1 root root  228 2011-07-13 13:06 build-dh
-rwxr-xr-x 1 root root  529 2011-07-13 13:06 build-inter
-rwxr-xr-x 1 root root  516 2011-07-13 13:06 build-key
-rwxr-xr-x 1 root root  424 2011-07-13 13:06 build-key-pass
-rwxr-xr-x 1 root root  695 2011-07-13 13:06 build-key-pkcs12
-rwxr-xr-x 1 root root  662 2011-07-13 13:06 build-key-server
-rwxr-xr-x 1 root root  466 2011-07-13 13:06 build-req
-rwxr-xr-x 1 root root  402 2011-07-13 13:06 build-req-pass
-rwxr-xr-x 1 root root  280 2011-07-13 13:06 clean-all
-rw-r--r-- 1 root root  264 2011-07-13 13:06 list-crl
-rw-r--r-- 1 root root  268 2011-07-13 13:06 make-crl
-rw-r--r-- 1 root root 7487 2011-07-13 13:06 openssl.cnf
-rw-r--r-- 1 root root 2619 2011-07-13 13:06 README.gz
-rw-r--r-- 1 root root  268 2011-07-13 13:06 revoke-crt
-rwxr-xr-x 1 root root  593 2011-07-13 13:06 revoke-full
-rwxr-xr-x 1 root root  411 2011-07-13 13:06 sign-req
-rw-r--r-- 1 root root 1266 2011-07-13 13:06 vars
sudo mkdir /usr/share/doc/openvpn/examples/easy-rsa/keys
sudo touch /usr/share/doc/openvpn/examples/easy-rsa/keys/index.txt
sudo touch /usr/share/doc/openvpn/examples/easy-rsa/keys/serial
sudo sh -c "echo 01 > /usr/share/doc/openvpn/examples/easy-rsa/keys/serial"
egrep -v '^ *$|^#' vars

export D=`pwd`
export KEY_CONFIG=$D/openssl.cnf
export KEY_DIR=$D/keys
echo NOTE: when you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export KEY_SIZE=1024
export KEY_COUNTRY=UA
export KEY_PROVINCE=Kiev
export KEY_CITY=Kiev
export KEY_ORG="TechExpert"
export KEY_EMAIL="otradnyi@mail.ru"
# . vars

NOTE: when you run ./clean-all, I will be doing a rm -rf on /usr/share/doc/openvpn/examples/easy-rsa/keys
# echo $KEY_
$KEY_CITY      $KEY_COUNTRY   $KEY_EMAIL     $KEY_PROVINCE
$KEY_CONFIG    $KEY_DIR       $KEY_ORG       $KEY_SIZE

# echo $KEY_CITY
Kiev

# echo $KEY_CONFIG
/usr/share/doc/openvpn/examples/easy-rsa/openssl.cnf
# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
..................................................+.+.............
..................................................................
........................................+..+......................
............+........+............................................
........+.........................................+...............
...............................................+..................
..................................................................
..................................................................
..........................+.......................................
...................................................+..............
....+.......................................................+.....
.......................................+...........+..............
....+........+....................................................
..................+........+...............+......................
..................+...............................................
........................................................+.......+.
...................................+..........+....+..........+...
...............+..................................+...............
.........................................................+........
....................+...++*++*++*
# ./build-ca
Generating a 1024 bit RSA private key
.....................................................++++++
..........++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:
State or Province Name (full name) [Kiev]:
Locality Name (eg, city) [Kiev]:
Organization Name (eg, company) [TechExpert]:
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:roman
Email Address [otradnyi@mail.ru]:
# ls keys/
ca.crt  ca.key  dh1024.pem  index.txt  serial
# ./build-key-server roman
Generating a 1024 bit RSA private key
.............++++++
........++++++
writing new private key to 'roman.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:
State or Province Name (full name) [Kiev]:
Locality Name (eg, city) [Kiev]:
Organization Name (eg, company) [TechExpert]:
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:roman
Email Address [otradnyi@mail.ru]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'UA'
stateOrProvinceName   :PRINTABLE:'Kiev'
localityName          :PRINTABLE:'Kiev'
organizationName      :PRINTABLE:'TechExpert'
organizationalUnitName:PRINTABLE:'IT'
commonName            :PRINTABLE:'roman'
emailAddress          :IA5STRING:'otradnyi@mail.ru'
Certificate is to be certified until Jul  13 09:00:09 2017 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
# ls keys/
01.pem  ca.crt  ca.key  dh1024.pem  index.txt  index.txt.attr  index.txt.old  serial  serial.old  roman.crt  roman.csr  roman.key
# ./build-key student
Generating a 1024 bit RSA private key
.++++++
....................++++++
writing new private key to 'student.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [UA]:
State or Province Name (full name) [Kiev]:
Locality Name (eg, city) [Kiev]:
Organization Name (eg, company) [TechExpert]:
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:student
Email Address [otradnyi@mail.ru]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /usr/share/doc/openvpn/examples/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'UA'
stateOrProvinceName   :PRINTABLE:'Kiev'
localityName          :PRINTABLE:'Kiev'
organizationName      :PRINTABLE:'TechExpert'
organizationalUnitName:PRINTABLE:'IT'
commonName            :PRINTABLE:'student'
emailAddress          :IA5STRING:'otradnyi@mail.ru'
Certificate is to be certified until Jul  13 10:06:23 2017 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
cp keys/student1.crt ; keys/student1.key ; keys/ca.crt и keys/dh1024.pem на Windows

Конфиг сервера:

# cat /etc/openvpn/student1.conf
dev tap
ifconfig 172.16.0.1 255.255.255.0
tls-server
dh keys/dh1024.pem
ca keys/ca.crt
cert keys/roman.crt
key  keys/roman.key

Конфиг клиента:

dev tap
tls-client
dh c:\keys\dh1024.pem
ca c:\keys\ca.crt
cert c:\keys\student.crt
key c:\keys\student.key
ifconfig 172.16.0.2 255.255.255.0

Запуск openvpn на сервере:

# openvpn --config /etc/openvpn/student1.conf
Wed Jul  13 13:11:59 2011 OpenVPN 2.0.9 i486-pc-linux-gnu [SSL] [LZO] [EPOLL] built on Jan 21 2007
Wed Jul  13 13:11:59 2011 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Wed Jul  13 13:12:00 2011 TUN/TAP device tap0 opened
Wed Jul  13 13:12:00 2011 /sbin/ifconfig tap0 172.16.0.1 netmask 255.255.255.0 mtu 1500 broadcast 172.16.0.255
Wed Jul  13 13:12:00 2011 UDPv4 link local (bound): [undef]:1194
Wed Jul  13 13:12:00 2011 UDPv4 link remote: [undef]

Запуск на Windows клиенте из cmd:

C:Documents and SettingsAdministrator>openvpn --config "c:Program FilesOpenV
PNconfigclient.ovpn"

Проверка:

# ping 172.16.0.2 -c 4
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=128 time=3.72 ms
64 bytes from 172.16.0.2: icmp_seq=2 ttl=128 time=1.35 ms
64 bytes from 172.16.0.2: icmp_seq=3 ttl=128 time=1.44 ms
64 bytes from 172.16.0.2: icmp_seq=4 ttl=128 time=1.49 ms

--- 172.16.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3052ms
rtt min/avg/max/mdev = 1.353/2.004/3.727/0.996 ms

# ifconfig tap0
tap0      Link encap:Ethernet  HWaddr 42:FC:5B:E3:33:D2
          inet addr:172.16.0.1  Bcast:172.16.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:42 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:6199 (6.0 KiB)  TX bytes:902 (902.0 b)

[править] Настройка пула адресов для получения их клиентами

Для этого необходимо использовать tun устройство или с использованием tap устройства необходимо будет прописывать для каждого клиента адрес и маску:

  • на сервере:
# cat /etc/openvpn/student1.conf
dev tap
ifconfig 172.16.0.1 255.255.0.0.
ifconfig-pool 172.16.0.2 172.16.0.253 255.255.0.0
mode server
tls-server
dh keys/dh1024.pem
ca keys/ca.crt
cert keys/serzh.crt
key  keys/serzh.key
plugin /usr/lib/openvpn/openvpn-auth-pam.so login
  • на клиенте:
pull
auth-user-pass 
dev tap
remote 10.0.17.1
tls-client
dh c:\keys\dh1024.pem
ca c:\keys\ca.crt
cert c:\keys\student1.crt
key c:\keys\student1.key

[править] Настройка парольной аутентификации системных пользователей для установки подключения

Для этого необходимо в файле /etc/openvpn/student1.conf дописать следующие строки:

plugin /usr/lib/openvpn/openvpn-auth-pam.so login

А в клиентском конфиге:

pull
auth-user-pass

[править] Настройка OpenVPN для работы в качестве сервера

  • Во-первых, необходимо создать конфигурационный файл сервера. Его можно скопировать из каталога /usr/share/doc/openvpn/examples/sample-config-files/ и затем распаковать:
gzip -cd /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz 
>> /etc/openvpn/server.conf
  • Затем необходимо отредактировать этот файл:
# egrep -v '^ *$|^#|;' /etc/openvpn/server.conf 

port 1194
proto tcp-server
dev tap
ca keys/ca.crt
cert keys/serzh.crt
key keys/serzh.key  
dh keys/dh1024.pem
ifconfig-pool-persist ipp.txt
ifconfig 172.16.0.1 255.255.255.0
server-bridge 172.16.0.1 255.255.255.0 172.16.0.2 172.16.0.253
client-config-dir ccd
client-to-client
keepalive 10 120
persist-key
persist-tun
status openvpn-status.log 3500
verb 3
plugin /usr/lib/openvpn/openvpn-auth-pam.so login
  • port 1194 — порт для прослушивания демоном openvpn
  • proto tcp-server — указание протокола соединения. Если опция не указана, то используется протокол не гарантированной доставки udp. Для tcp соединения необходимо указать онду из опций tcp-server или tcp-client для сервера и клиента соответственно. Демон, запущенный с опцией tcp-server ожидает входящие соединения. Демон, запущенный с опцией tcp-client, будет инициировать соединение и в случае неудачи будет производить повторные попытки подключения через каждые 5 секунд (определяется connect-retry опцией, 5 секунд — значение по умолчанию).
  • dev tap

.
.
.

  • ca keys/ca.crt — Опция ca определяет корневой (root) сертификат, которым подписаны клиентские пары сертификат/ключ. Значение этой опции keys/ca.crt указывает месторасположение этого сертификата относительно каталога /etc/openvpn. (Или, иными словами, это открытый ключ сервера)
  • cert keys/serzh.crt — Каждый участник OpenVPN соединения в TLS режиме должен иметь собственный сертификат и файл с закрытым ключом. Каждый сертификат должен быть подписан закрытым ключом центра сертификатов, чей открытый ключ указывается в опции ca.
  • key keys/serzh.key — Закрытый ключ, который генерируется вместе с сертификатом, указанным в опции cert
  • dh keys/dh1024.pem — Файл, содержащий параметры Diffie Hellman

.
.
.

  • ifconfig-pool-persist ipp.txt — Файл ассоциаций client <-> virtual IP.

Например:

# cat ipp.txt 
student1,172.16.0.2
natali,172.16.0.5

где первое поле — имя используемого с TLS режиме сертификата.

  • ifconfig 172.16.0.1 255.255.255.0 — IP-адрес, присваиваемый серверу на устройстве /dev/tap
  • server-bridge 172.16.0.1 255.255.255.0 172.16.0.2 172.16.0.253 — Использование сервера в режиме моста. Это дает возможность видеть клиетам не только сервер но и других клиентов (при указании опции client-to-client).
  • client-config-dir ccd — Опция определяет каталог в /etc/openvpn/ с конфигурационными файлами клиентов. В этих файлах могут быть переопределены опции основного конфигурационного файла для каждого из клиентов.
  • keepalive 10 120
  • persist-key — Не перечитывать заново файлы ключей при получении сигнала SIGUSR1 (переустановка соединения) или через интервал, указанный опцией ping-restart n (переустановить соединение через n секунд после отправки последнего icmp пакета клиенту, который остался без ответа)
  • persist-tun — Не закрывать или переоткрывать устройства TUN/TAP при получении сигнала SIGUSR1 или по прошествию интервала n опции ping-restart n.
  • status openvpn-status.log 3500 — В файл /etc/openvpn/openvpn-status.log будет записываться статус активных подключений каждые 5 минут
  • verb 3 — Уровень вывода отладочной информации.
  • plugin /usr/lib/openvpn/openvpn-auth-pam.so login — Подключение модуля аутентификации openvpn-auth-pam.so и использование программы login для аутентификации пользователей во время установки соединения.

Конфигурационный файл клиента:

pull
auth-user-pass 
dev tap
proto tcp-client
remote 10.0.17.1
tls-client
dh c:\keys\dh1024.pem
ca c:\keys\ca.crt
cert c:\keys\student1.crt
key c:\keys\student1.key

[править] Openvpn FreeBSD

Инсталляция:

$ cd /usr/ports/security/openvpn

$ sudo make install clean
___________________________________
 Options for openvpn 2.0.6_4  
[X] PW_SAVE  Interactive passwords may be read from a file   
___________________________________

Настройка:

$ sudo mkdir /usr/local/etc/openvpn

$ sudo openvpn --genkey --secret /usr/local/etc/openvpn/static.key

$ sudo sh -c 'cat << CONF >> /usr/local/etc/openvpn/sample.conf
dev tun
ifconfig 172.16.0.1 172.16.0.2
secret /usr/local/etc/openvpn/static.key
comp-lzo
CONF'

Копируем на Windows static.key в C:Program FilesOpenVPNstatic.key

Затем создаем конфигурационный файл клиента openvpn — C:Program FilesOpenVPNconfig на Windows:

remote 192.168.15.238
dev tun
ifconfig 172.16.0.2 172.16.0.1
secret "C:\Program Files\OpenVPN\config\static.key"
comp-lzo

Запускаем на сервере FreeBSD openvpn:

$ sudo openvpn --config /usr/local/etc/openvpn/sample.conf
Wed Aug 29 19:42:16 2007 OpenVPN 2.0.6 i386-portbld-freebsd6.2 [SSL] [LZO] built on Aug 29 2007
Wed Aug 29 19:42:16 2007 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Wed Aug 29 19:42:16 2007 LZO compression initialized
Wed Aug 29 19:42:16 2007 TUN/TAP device /dev/tun0 opened
Wed Aug 29 19:42:16 2007 /sbin/ifconfig tun0 172.16.0.1 172.16.0.2 mtu 1500 netmask 255.255.255.255 up
Wed Aug 29 19:42:16 2007 UDPv4 link local (bound): [undef]:1194
Wed Aug 29 19:42:16 2007 UDPv4 link remote: [undef]
.
.
.

И подключаемся с Windows клиентом:

C:Documents and SettingsAdministrator>openvpn --config "C:Program FilesOpenV
PNconfigsample.ovpn"
Wed Aug 29 19:44:50 2007 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct  1 2
006
Wed Aug 29 19:44:50 2007 IMPORTANT: OpenVPN's default port number is now 1194, b
ased on an official port number assignment by IANA.  OpenVPN 2.0-beta16 and earl
ier used 5000 as the default port.
Wed Aug 29 19:44:50 2007 LZO compression initialized
Wed Aug 29 19:44:50 2007 TAP-WIN32 device [??????????? ?? ????????? ???? 3] open
ed: \.Global{338C1B96-AA76-4B7F-8E7F-489452A64B06}.tap
Wed Aug 29 19:44:50 2007 Notified TAP-Win32 driver to set a DHCP IP/netmask of 1
72.16.0.2/255.255.255.252 on interface {338C1B96-AA76-4B7F-8E7F-489452A64B06} [D
HCP-serv: 172.16.0.1, lease-time: 31536000]
Wed Aug 29 19:44:50 2007 Successful ARP Flush on interface [131076] {338C1B96-AA
76-4B7F-8E7F-489452A64B06}
Wed Aug 29 19:44:50 2007 UDPv4 link local (bound): [undef]:1194
Wed Aug 29 19:44:50 2007 UDPv4 link remote: 192.168.15.238:1194
Wed Aug 29 19:45:01 2007 Peer Connection Initiated with 192.168.15.238:1194
Wed Aug 29 19:45:02 2007 Initialization Sequence Completed

И проверяем:

C:Documents and SettingsAdministrator>ping 172.16.0.1

Pinging 172.16.0.1 with 32 bytes of data:

Reply from 172.16.0.1: bytes=32 time=1ms TTL=64
Reply from 172.16.0.1: bytes=32 time<1ms TTL=64
Reply from 172.16.0.1: bytes=32 time<1ms TTL=64
Reply from 172.16.0.1: bytes=32 time<1ms TTL=64

Ping statistics for 172.16.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 1ms, Average = 0ms

[править] Дополнительная информация

  • OpenVPN HOWTOs
  • OpenVPN Static Key Mini-HOWTO
  • VPN Tunnelling through HTTP Proxy

[править] Материалы по OpenVPN на xgu.ru

  • OpenVPN
  • Два шлюза в Интернет и OpenVPN
  • OpenVPN в Windows
  • OpenVPN Bridge ­— передача тегированного трафика через VPN
  • OpenVPN Proxy ARP

Like this post? Please share to your friends:
  • Easy rsa openssl not found windows
  • Easy rsa 3 windows генерация ключа
  • Easy recovery essentials скачать бесплатно для windows
  • Easy recovery essentials windows 7 скачать для флешки торрент
  • Easy recovery essentials windows 7 iso