Easy rsa error unknown cert type server

My system FreeBSD gw.1ok 10.2-RELEASE FreeBSD 10.2-RELEASE #0 r286666: Wed Aug 12 19:31:38 UTC 2015 root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC i386 My openVPN version openvpn --versi...

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account


Closed

glafir opened this issue

Apr 8, 2016

· 7 comments


Closed

Unknown cert type ‘ca’ or ‘server’ or ‘client’

#93

glafir opened this issue

Apr 8, 2016

· 7 comments

Comments

@glafir

My system
FreeBSD gw.1ok 10.2-RELEASE FreeBSD 10.2-RELEASE #0 r286666: Wed Aug 12 19:31:38 UTC 2015 root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC i386

My openVPN version

openvpn --version
OpenVPN 2.3.10 i386-portbld-freebsd10.1 [SSL (OpenSSL)] [LZO] [MH] [IPv6] built on Apr  3 2016
library versions: OpenSSL 1.0.1p-freebsd 9 Jul 2015, LZO 2.09
Originally developed by James Yonan
Copyright (C) 2002-2010 OpenVPN Technologies, Inc. <sales@openvpn.net>
Compile time defines: enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=needless enable_fragment=yes enable_http_proxy=yes enable_iproute2=no enable_libtool_lock=yes enable_lzo=yes enable_lzo_stub=no enable_management=yes enable_multi=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no enable_pf=yes enable_pkcs11=no enable_plugin_auth_pam=yes enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_small=no enable_socks=yes enable_ssl=yes enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=no enable_win32_dll=yes enable_x509_alt_username=no with_crypto_library=openssl with_gnu_ld=yes with_mem_check=no with_plugindir='$(libdir)/openvpn/plugins' with_sysroot=no

I generate Ca-key and Ca-cert

./easyrsa.real sign-req ca CA

Note: using Easy-RSA configuration from: ./vars

Easy-RSA error:

**Unknown cert type 'ca'**

or

./easyrsa.real sign-req 'server' vpn.1-ok.com

Note: using Easy-RSA configuration from: ./vars

Easy-RSA error:

Unknown cert type 'server'

How can fix it?

@RobertLarsen

I’m seeing the same on Ubuntu 14.04:

$ ./easyrsa build-server-full VPN nopass
Generating a 2048 bit RSA private key
.....................+++
..+++
writing new private key to '/home/vagrant/CA/pki/private/VPN.key.f4i5UyAahh'
-----

Easy-RSA error:

Unknown cert type 'server'

@RobertLarsen

I fixed my own problem. The x509-types directory needed to be located in the same directory as the ‘easyrsa’ script. I had created a new directory and simply symlinked the easyrsa script and the openssl-1.0.cnf file. After having symlinked x509-types everything worked.

merlinthemagic, jeremyvisser, juanrmn, kuznetsss, giovanifss, wikt0r, linsong, nickto, builditzach, HidekiAI, and 11 more reacted with thumbs up emoji
TomOtero1984 and pavelmetalarm reacted with hooray emoji
vadviktor, walkerlala, jeremyvisser, mnme, ppc52776, TomOtero1984, pavelmetalarm, and urpylka reacted with heart emoji

@glafir

Yes! Thanks! I already understanded this!

@RdL87

Hi,
i’m facing the same issue on the following stack:

  • CentOS Linux release 7.7.1908 (Core)
  • OpenVPN 2.4.7 x86_64-redhat-linux-gnu
  • Easy-RSA 3.0.6

Hi tried a solution that mentions this issue but i have always same error:

Note: using Easy-RSA configuration from: ./vars

Easy-RSA error:

Unknown cert type 'server'

@mmrvelj

I had this problem as well on Centos 7.7 with easyrsa-3.0.6 and found out that the issue is incorrect setting of the variable EASYRSA_EXT_DIR which is set in «vars» file. After correcting it to point to correct location of x509-types folder everything works as expected.

@motorollo

I use easyrsa-3.0.7 and OpenVPN-2.5.0-I601-amd64.msi and
easyrsa sign-req client rechner.domäne.de dosnt’t work.
I get the message: Unknown cert type ‘client’
The x509-types-folder is in place and a file client is there.
easyrsa-3.0.8, which is delivered with OpenVPN-2.5.0-I601-amd64.msi has other problems.

The solution with the sym-link is not suitable for Windows.
https://forum.openwrt.org/t/problem-in-openvpn-basic-instructions-and-workaround/39530

@noah-seltzer

@motorollo I had the same problem on windows, copying the /x509-types folder into the pki folder made it work for me

Содержание

  1. Unknown cert type ‘ca’ or ‘server’ or ‘client’ about easy-rsa HOT 7 CLOSED
  2. Comments (7)
  3. Related Issues (20)
  4. Recommend Projects
  5. React
  6. Vue.js
  7. Typescript
  8. TensorFlow
  9. Django
  10. Laravel
  11. Recommend Topics
  12. javascript
  13. server
  14. Machine learning
  15. Visualization
  16. Recommend Org
  17. Facebook
  18. Microsoft
  19. OpenVPN Support Forum
  20. Unknown cert type ‘server’
  21. Unknown cert type ‘server’
  22. Re: Unknown cert type ‘server’
  23. Re: Unknown cert type ‘server’
  24. Re: Unknown cert type ‘server’
  25. Пятитысячное хауту по OpenVPN
  26. Сервер
  27. Конфиг сервера
  28. Центр авторизации и ключи
  29. Клиент
  30. Ключи
  31. Конфиг
  32. Отзыв сертификатов
  33. Минимальная настройка Iptables для доступа OpenVPN клиентов к локальной сети
  34. Настройка OpenVPN для выхода в интернет
  35. Минимальная настройка Iptables для выхода OpenVPN клиентов в интернет
  36. Некоторые замечания
  37. Список валидных и отозванных сертификатов
  38. Если клиент на Windows
  39. Похожие записи
  40. Комментарии к посту “ Пятитысячное хауту по OpenVPN ”

Unknown cert type ‘ca’ or ‘server’ or ‘client’ about easy-rsa HOT 7 CLOSED

I fixed my own problem. The x509-types directory needed to be located in the same directory as the ‘easyrsa’ script. I had created a new directory and simply symlinked the easyrsa script and the openssl-1.0.cnf file. After having symlinked x509-types everything worked.

noah-seltzer commented on January 15, 2023 6

@motorollo I had the same problem on windows, copying the /x509-types folder into the pki folder made it work for me

mmrvelj commented on January 15, 2023 4

I had this problem as well on Centos 7.7 with easyrsa-3.0.6 and found out that the issue is incorrect setting of the variable EASYRSA_EXT_DIR which is set in «vars» file. After correcting it to point to correct location of x509-types folder everything works as expected.

RobertLarsen commented on January 15, 2023

I’m seeing the same on Ubuntu 14.04:

glafir commented on January 15, 2023

Yes! Thanks! I already understanded this!

RdL87 commented on January 15, 2023

Hi,
i’m facing the same issue on the following stack:

  • CentOS Linux release 7.7.1908 (Core)
  • OpenVPN 2.4.7 x86_64-redhat-linux-gnu
  • Easy-RSA 3.0.6

Hi tried a solution that mentions this issue but i have always same error:

motorollo commented on January 15, 2023

I use easyrsa-3.0.7 and OpenVPN-2.5.0-I601-amd64.msi and
easyrsa sign-req client rechner.domäne.de dosnt’t work.
I get the message: Unknown cert type ‘client’
The x509-types-folder is in place and a file client is there.
easyrsa-3.0.8, which is delivered with OpenVPN-2.5.0-I601-amd64.msi has other problems.

  • Function `read_db()`does not recognise expired certificates HOT 1
  • status reports do not work when CN is not equal to FILENAME
  • Windows: `build-ca` requires `req -passin` option HOT 1
  • Command `build-ca` does not work with OpenSSL 3.0.7 HOT 2
  • `renew()`: Unexpected `shift`
  • `renew()`: Input request [CSR] is a hard requirement
  • show-expire might fail when LC_TIME is not en_US (or C) HOT 5
  • Should old `openssl-easyrsa.cnf` be a FATAL error ? HOT 2
  • Create `$EASYRSA_REQ_CN_PREFIX`
  • Make old `openssl-easyrsa.cnf` a FATAL error
  • Allow external `vars` and PKI `vars` to co-exist
  • Consider making `init-pki` default be `soft` HOT 1
  • Global option `—use-algo` does not work
  • `cleanup()` processes exit codes out of order
  • `build-full-*`: Always enable creating inline files
  • EASYRSA_NO_PASS conflict with —passin and —passout HOT 4
  • Global options`—passin/—passout` conflict with command option `nopass` HOT 1
  • Documentation: `doc/EasyRSA-Passphrase-Automation.md` HOT 3
  • Ten year [Tin] anniversary for MIRBSD KSH
  • Point command without options to help

Recommend Projects

React

A declarative, efficient, and flexible JavaScript library for building user interfaces.

Vue.js

🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

Typescript

TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

TensorFlow

An Open Source Machine Learning Framework for Everyone

Django

The Web framework for perfectionists with deadlines.

Laravel

A PHP framework for web artisans

Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

javascript

JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

Some thing interesting about web. New door for the world.

server

A server is a program made to process requests and deliver data to clients.

Machine learning

Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

Visualization

Some thing interesting about visualization, use data art

Some thing interesting about game, make everyone happy.

Recommend Org

Facebook

We are working to build community through open source technology. NB: members must have two-factor auth.

Microsoft

Open source projects and samples from Microsoft.

Источник

OpenVPN Support Forum

Community Support Forum

Unknown cert type ‘server’

Unknown cert type ‘server’

Post by borman/m » Fri Mar 29, 2019 8:35 pm

I’m having difficulty figuring out how to have easyrsa create a signed certificate
I’ve run the following commands
easyrsa.real init-pki
easyrsa.real build-ca nopass
easyrsa.real build-server-full openvpn-server nopass
But this is the error when I try to run it.
_____________________________________________________
Using SSL: openssl OpenSSL 1.0.2r-freebsd 26 Feb 2019

Unknown cert type ‘server’
______________________________________________________
openvpn 2.4.7
freebsd 11.2 Stable
The x509-types directory in to be located in the same directory as the ‘easyrsa’ script.
Any ideas of what I could be doing wrong?

Re: Unknown cert type ‘server’

Post by TinCanTech » Sat Mar 30, 2019 3:29 pm

Re: Unknown cert type ‘server’

Post by Pippin » Sat Mar 30, 2019 5:03 pm

Re: Unknown cert type ‘server’

Post by TinCanTech » Sun Mar 31, 2019 4:57 am

muchas gracias

I think people should not use Free— bla, if they don’t understand how it works

Or people could, at least, try to read the excellent docs these projects offer.

Источник

Пятитысячное хауту по OpenVPN

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

Сервер

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

Поставить OpenVPN и создать одноименного пользователя, под которым будет работать демон:

Создать конфиг сервера openvpn со следующим содержимым:

Создать каталоги для логов и хранения IP адресов клиентов:

Центр авторизации и ключи

Перейти в домашний каталог, скачать и распаковать easyrsa 3 версии:

Перейти в каталог easyrsa3 и объявить для него переменные:

Инициализировать PKI (Public Key Infrastructure — Инфраструктура открытых ключей):

Создать корневой сертификат. Обязательно ввести сложный пароль и Common Name сервера, например my vpn server :

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

Создать запрос на сертификат для сервера OVPN. Обращаю внимание, что сертификат будет незапаролен (параметр nopass ), иначе при каждом старте OpenVPN будет запрашивать этот пароль:

Создать сам сертификат сервера OVPN:

Скопировать полученные ключи в рабочий каталог openvpn:

Создать «HMAC firewall» для защиты от DoS аттак и флуда UDP порта:

Клиент

Ключи

Создание запроса запароленного ключа для клиента (потребуется вводить при каждом подключении) с именем User:

Если авторизация будет внешней (например ADшная), то пароль не потребуется. Создание запроса без парольного ключа для клиента:

Создание ключа пользователя (по дефолту из vars сроком на 10 лет):

Или с ограничением действия сертификата в 90 дней (после истечения срока можно только перевыпустить):

Клиенту передать эти файлы:

Конфиг

Для удобства все пять клиентских файлов можно объединить в один

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

Генерация файла отозванных ключей:

Сделать символическую ссылку в каталог с ключами (конечно, файл можно и скопировать, но придется делать каждый раз при отзыве сертификата):

В /etc/openvpn/server.conf добавить строку

Отзыв сертификата пользователя User:

Каждый раз при отзыве сертификата необходимо обновлять crl.pem , чтобы внести в него изменения:

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

Минимальная настройка Iptables для доступа OpenVPN клиентов к локальной сети

Настройка OpenVPN для выхода в интернет

Наткнулся на тред, поржал и решил дополнить заметку. Если OpenVPN нужен для выхода в интернет — надо сделать, чтобы OpenVPN был шлюзом по умолчанию (default gateway) и подправить правила iptables.
Собственно, конфиг для сервера:

Конфиг для клиента не будет отличаться от приведенного выше.

Минимальная настройка Iptables для выхода OpenVPN клиентов в интернет

Некоторые замечания

Для исключения возможности mitm атаки, ошибка которого так выглядит в логах клиента:

Служит параметр remote-cert-tls server , который уже присутствует в конфиге клиента.

Список валидных и отозванных сертификатов

Список валидных и отозванных сертификатов можно посмотреть в файле

/easy-rsa-master/easyrsa3/pki/index.txt. Начало строки оисания каждого сертификата начинается с букв V или R , что значит Valid и Revoked, например:

Как видно, первый и пятый сертификаты валидны, 2-4 отозваны.

Если клиент на Windows

Поставить OpenVPN GUI, скачав отсюда. Скопировать клиентские ключи в C:Program FilesOpenVPNconfig . Скопировать конфиг клиента и вставить в файл client.ovpn , положить туда же. Всего в этом каталоге должно получиться пять файлов — User.crt, User.key, ca.crt, ta.key, client.ovpn .
Обязательно запустить OpenVPN GUI от имени администратора, иначе в сиситеме не поднимутся маршруты, и произвести подключение двойным кликом по иконке в трее (такая область около часов, обычно в правом нижнем углу).

Похожие записи

Комментарии к посту “ Пятитысячное хауту по OpenVPN ”

Что делать, если

./easyrsa.real sign-req server vpn.1-ok.com
Note: using Easy-RSA configuration from: ./vars
Easy-RSA error:
Unknown cert type ‘server’

Скорее всего нарушена структура каталогов. В исходнике написано:

т.е. $EASYRSA_EXT_DIR = easy-rsa-master/easyrsa3/x509-types . Предположу, что нет этого каталога или его содержимого.
Скачайте easy-rsa3 по новой и все взлетит.

Версия у вас какая? У меня на версии 3.0.6 не заработало. а на 3.0.4 всё норм. Попробуйте 3.0.3 или 3.0.4(точно рабочая)

Привет! Спасибо!
застряла на пункте конфиг клиента, т.е. на стороне клиента в папке etc/openvpn создала файл client.conf с предлагаемым содержанием ( поменяла только xxx.xxx.xxx.xxx на ip сервера), ключи и сертификаты сгенерированные сервером выложила в папку /etc/openvpn/easy-rsa/keys.
Дальше как?

Если это Linux без GUI, то /etc/init.d/openvpn restart
Если с GUI, то настроить соединение через Network Manager
Если винда, то скачать клиента и подсунуть ему файлы.

Спасибо! Клиент на raspberry (raspbian wheezy)
на команду: openvpn /etc/openvpn/client.conf выдает следующее:

Thu Apr 21 13:19:10 2016 OpenVPN 2.2.1 arm-linux-gnueabihf [SSL] [LZO2] [EPOLL] [PKCS11] [eurephia] [MH] [PF_INET6] [IPv6 payload 20110424-2 (2.2RC2)] built on Dec 1 2014
Thu Apr 21 13:19:10 2016 NOTE: OpenVPN 2.1 requires ‘—script-security 2’ or higher to call user-defined scripts or executables
Thu Apr 21 13:19:10 2016 Cannot load certificate file User.crt: error:02001002:system library:fopen:No such file or directory: error:20074002:BIO routines:FILE_CTRL:system lib: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
Thu Apr 21 13:19:10 2016 Exiting

переделать все сначала? что не так?

Ясно же говорит — нет файла User.crt Cannot load certificate file User.crt . No such file or directory . Предположу, что
1. Надо запускать от рута, т.е. в случае Raspberry использовать sudo
2. Перед запуском сделать cd /path/to/keys или использовать абсолютные пути в конфиге

У меня не пинговались клиенты с сервера, после этого правила:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT —to-source x.x.x.x

Заработало только когда сделал так:
iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -j SNAT —to-source x.x.x.x
iptables -t nat -A POSTROUTING -o eth0 -j SNAT —to-source x.x.x.x

Вы путаете таблицы nat и filter. Таблица nat не должна фильтровать пакеты. Своим же правилом Вы только разрешили хождение пакетов через NAT с eth0 интерфейса.

Доброго времени суток, хотелоcь бы делать редирект только на локальную сеть к базе данных openvpn при этом . остальной трафик должен идти не через openvpn, а прямо в сеть в сеть.
Со стороны клиента использую :
client
port 1179
proto udp
dev tun
cipher AES-256-CBC
ca ca.crt
cert user1.crt
key user1.key
remote **.**.**.**
#no-bind
comp-lzo
remote-cert-tls server
persist-key
persist-tun
tls-auth ta.key 1
verb 5
#route 172.30.0.0 255.255.0.0
—redirect-gateway def1
#route-no-pull

Со стороны сервера:
ca ca.crt
cert aurora.crt
key aurora.key
dh dh2048.pem
tls-auth ta.key 0
cipher AES-256-CBC
server 172.30.3.0 255.255.255.0
#for windows clients
#topology subnet
keepalive 10 120
comp-lzo
persist-key
persist-tun
#push «redirect-gateway»
client-config-dir ccd
verb 5
user nobody
group nogroup
client-to-client
status aurora-status.log
log /var/log/aurora.log
sndbuf 0
rcvbuf 0
route 172.30.3.0 255.255.255.0
push «dhcp-option DNS 8.8.8.8»

Не понял формулировку задачи, опишите пожалуйста подробнее.
1. Что хотите слелать
2. Что сделали
3. Что идет не так, как Вы ожидали

Задача была обеспечить шифрование данных с помощью openVPN. При этом необходимо что бы обычный трафик шел обычным образом, а обращения (на пример к базе данных) к ресурсу исключительно через openVPN, при этом понятно , что БД находится в одной локальной сети с прокси сервером .

В статье именно об этом и написано. Хотите конкретики — следуйте шаблону из предыдущего моего коммента.

на ubuntu 16.04.4 openvpn не стартовал
сначала в /etc/default/openvpn раскомментировать строку AUTOSTART=»all»
Если после этого при запуске
sudo systemctl start openvpn@[ИМЯ ФАЙЛА КОНФИГА].service
появляется ошибка
«daemon() failed or unsupported: Resource temporarily unavailable (errno=11)»
Делаем следующее
sudo systemctl edit openvpn@ [tab]
В редакторе вставляем строки
[Service]
LimitNPROC=infinity

Это создаст файл
/etc/systemd/system/openvpn@.service.d/override.conf
Затем запускаем
sudo systemctl daemon-reload
sudo systemctl start openvpn@[ИМЯ ФАЙЛА КОНФИГА].service

p.s.: как тут форматировать текст?

Стандартная HTML разметка. Для кода испольльзуйте теги code или pre

PS:
Я оставил этот момент на пользователя, поскольку считал его знакомым с systemd. Спасибо за дополнение!

Большое спасибо за статью!
Сделал ключи клиентов. Пинги от клиента до сервера идут.Возникло несколько вопросов.
1. Подскажите, пожалуйста, как подключить mikrotik в качестве ovpn клиента? Импортирую в mikrotik user.crt, user.key, ca.crt. В меню PPP добавляю данные OVPN Client: адрес сервера, порт, клиентский сертификат и тип шифрования (AES-256). Но маршрутизатор отказывается устанавливать соединение с сервером.
2. Как предоставить удаленным клиентам, подключенным к ovpn серверу, доступ к локальным ресурсам mikrotika?

Спасибо за отзыв )
1. Не могу ни чего сказать, смотрите логи на микротике. Как правило, достаточно бывает поиграть настройками шифрования, если все остальное не вызывает сомнений.
2. Надо сделать роутинг — на этих клиентах добавить маршрут в подсеть миркотика через OVPN сервер. Что-то типа ip route add 192.168.20.0/24 dev tun0 , где 192.168.20.0/24 — локальная подсеть за микротиком, tun0 — OVPN интерфейс на клиенте, которому нужен доступ в подсеть за микротиком.

PS. Чтобы клиенты имели возможность видеть друг друга, необходимо с конфиг сервера добавить опцию client-to-client , без нее не заработает.

2. push «route 10.10.10.0 255.255.255.0 10.0.0.2 1» — отправит маршрут клиенту (микроитку) и он сможет видеть маршруты вашей сети
route 192.168.3.0 255.255.255.0 172.16.254.3 в openvpn.conf скажет серверу openvpn что у одного из клиентов есть такие адреса, дальше через ccd, в директории создать файл с именем равным имени пользователя клиента или common name сертификата, в котором прописать iroute 192.168.3.0 255.255.255.0. На свои адреса только поменять.

admin, wf, спасибо за помощь!
Первый вопрос решил. Микротик не дружит с протоколом UDP, а так же не поддерживает сжатие и TLS-аутентификацию.
Не могу победить второй вопрос. Сеть 192.168.1.* (микротик 1.1). Сеть удаленного клиента 192.168.2.* (маршрутизатор 1.1).
В server.conf прописал следующее:
client-config-dir /etc/openvpn/ccd
ifconfig-pool-persist /etc/openvpn/ccd/ipp.txt
server 10.15.0.0 255.255.255.0
route-gateway 10.15.0.1
route 10.15.0.1 255.255.255.0
topology subnet
client-to-client

В сcd User1 прописал доступ к одному ip: push «route 192.168.1.3 255.255.255.255».
У клиента добавил следующий маршрут: route add 10.15.0.6 mask 255.255.255.255 10.15.0.6.
Ping от клиента к удаленному устройству (1.3) не проходи.

Источник

Быстрое поднятие OpenVPN сервера на Debian, Ubuntu

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

Сервер

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

Поставить OpenVPN и создать одноименного пользователя, под которым будет работать демон:

apt install openvpn
adduser --system --no-create-home --disabled-login --group openvpn

Создать конфиг сервера openvpn со следующим содержимым:

mcedit /etc/openvpn/server.conf

port 1194
proto udp
dev tun
#user openvpn
#group openvpn
dh /etc/openvpn/keys/dh.pem
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
tls-auth /etc/openvpn/keys/ta.key 0
#crl-verify  /etc/openvpn/keys/crl.pem
script-security 2
cipher AES-256-CBC
tls-server
comp-lzo
mute 10
persist-key
persist-tun
max-clients 50
keepalive 10 900
client-config-dir /etc/openvpn/ccd
ifconfig-pool-persist /etc/openvpn/ccd/ipp.txt
server 10.15.0.0 255.255.255.0
### Эти параметры требуют пояснений.
# Пушить (передавать клиенту) свой DNS север
push "dhcp-option DNS 192.168.0.1"
# Пушить название домена
push "dhcp-option DOMAIN mydomain.com"
# Пушить маршрут локальной подсети. Для того, чтобы у клиентов был доступ до нее
push "route 192.168.0.0 255.255.254.0"
###
status /var/log/openvpn/openvpn-status.log 1
status-version 3
log-append /var/log/openvpn/openvpn-server.log
verb 5

Создать каталоги для логов и хранения IP адресов клиентов:

mkdir /var/log/openvpn/
mkdir /etc/openvpn/ccd

Центр авторизации и ключи

Перейти в домашний каталог, скачать и распаковать easyrsa 3 версии:

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

Перейти в каталог easyrsa3 и объявить для него переменные:

cd ~/easy-rsa-master/easyrsa3
cp ~/easy-rsa-master/easyrsa3/vars.example ~/easy-rsa-master/easyrsa3/vars

Инициализировать PKI (Public Key Infrastructure — Инфраструктура открытых ключей):

./easyrsa init-pki

Создать корневой сертификат. Обязательно ввести сложный пароль и Common Name сервера, например my vpn server:

./easyrsa build-ca

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

./easyrsa gen-dh

Создать запрос на сертификат для сервера OVPN. Обращаю внимание, что сертификат будет незапаролен (параметр nopass), иначе при каждом старте OpenVPN будет запрашивать этот пароль:

./easyrsa gen-req vpn-server nopass

Создать сам сертификат сервера OVPN:

./easyrsa sign-req server vpn-server

Скопировать полученные ключи в рабочий каталог openvpn:

mkdir -p /etc/openvpn/keys
cp ~/easy-rsa-master/easyrsa3/pki/ca.crt /etc/openvpn/keys
cp ~/easy-rsa-master/easyrsa3/pki/issued/vpn-server.crt /etc/openvpn/keys
cp ~/easy-rsa-master/easyrsa3/pki/private/vpn-server.key /etc/openvpn/keys
cp ~/easy-rsa-master/easyrsa3/pki/dh.pem /etc/openvpn/keys

Создать «HMAC firewall» для защиты от DoS аттак и флуда UDP порта:

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

Запустить openvpn:

/etc/init.d/openvpn start

Клиент

Ключи

Создание запроса запароленного ключа для клиента (потребуется вводить при каждом подключении) с именем User:

cd ~/easy-rsa-master/easyrsa3
./easyrsa gen-req User

Если авторизация будет внешней (например ADшная), то пароль не потребуется. Создание запроса без парольного ключа для клиента:

./easyrsa gen-req User nopass

Создание ключа пользователя (по дефолту из vars сроком на 10 лет):

./easyrsa sign-req client User

Или с ограничением действия сертификата в 90 дней (после истечения срока можно только перевыпустить):

./easyrsa sign-req client User -days 90

Клиенту передать эти файлы:

~/easy-rsa-master/easyrsa3/pki/issued/User.crt
~/easy-rsa-master/easyrsa3/pki/private/User.key
~/easy-rsa-master/easyrsa3/pki/ca.crt
/etc/openvpn/keys/ta.key

Конфиг

client
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194
cipher AES-256-CBC
tls-client
ca "ca.crt"
tls-auth "ta.key" 1
cert "User.crt"
key "User.key"
remote-cert-tls server
comp-lzo
tun-mtu 1500
mssfix 1450
verb 3
nobind
resolv-retry infinite

Для удобства все пять клиентских файлов можно объединить в один

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

Генерация файла отозванных ключей:

cd ~/easy-rsa-master/easyrsa3
./easyrsa gen-crl

Сделать символическую ссылку в каталог с ключами (конечно, файл можно и скопировать, но придется делать каждый раз при отзыве сертификата):

ln -s ~/easy-rsa-master/easyrsa3/pki/crl.pem /etc/openvpn/keys

В /etc/openvpn/server.conf добавить строку

crl-verify /etc/openvpn/keys/crl.pem

Отзыв сертификата пользователя User:

./easyrsa revoke User

Каждый раз при отзыве сертификата необходимо обновлять crl.pem, чтобы внести в него изменения:

./easyrsa gen-crl

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

failed to update database
Easy-RSA error:
signing failed (openssl output above may have more detail)

Минимальная настройка Iptables для доступа OpenVPN клиентов к локальной сети

# Включить форвард в ядре
echo "1" > /proc/sys/net/ipv4/ip_forward
# Разрешить входящие соединения на порт OVPN
iptables -A INPUT -p UDP --dport 1194 -j ACCEPT
# Разрешить форвард между подсетью OVPN и локальной
# При чем, ставить их в начале цепочки, если правил много
iptables -A FORWARD -s 10.15.0.0/24 -d 192.168.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.15.0.0/24 -s 192.168.0.0/24 -j ACCEPT

Настройка OpenVPN для выхода в интернет

Наткнулся на тред, поржал и решил дополнить заметку. Если OpenVPN нужен для выхода в интернет — надо сделать, чтобы OpenVPN был шлюзом по умолчанию (default gateway) и подправить правила iptables.
Собственно, конфиг для сервера:

port 1194
proto udp
dev tun
dh /etc/openvpn/keys/dh.pem
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/vpn-server.crt
key /etc/openvpn/keys/vpn-server.key
tls-auth /etc/openvpn/keys/ta.key 0
crl-verify  /etc/openvpn/keys/crl.pem
script-security 2
cipher AES-256-CBC
tls-server
comp-lzo
mute 10
persist-key
persist-tun
max-clients 50
keepalive 10 900
client-config-dir /etc/openvpn/ccd
ifconfig-pool-persist /etc/openvpn/ccd/ipp.txt
server 10.15.0.0 255.255.255.0
push "redirect-gateway def1"
status /var/log/openvpn/openvpn-status.log 1
status-version 3
log-append /var/log/openvpn/openvpn-server.log
verb 5

Конфиг для клиента не будет отличаться от приведенного выше.

Минимальная настройка Iptables для выхода OpenVPN клиентов в интернет

Правила iptables:

# Включить форвард в ядре
echo "1" > /proc/sys/net/ipv4/ip_forward
# Разрешить входящие соединения на порт OVPN
iptables -A INPUT -p UDP --dport 1194 -j ACCEPT
# Разрешить ходить транзитным пакетам для подсети OpenVPN 
iptables -A FORWARD -s 10.15.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.15.0.0/24 -j ACCEPT
# x.x.x.x - внешний IP сервера, если он статический
iptables -t nat -A POSTROUTING -s 10.15.0.0/24 -j SNAT --to-source x.x.x.x
# Если внешний IP сервера динамический, то вместо предыдущего правила использовать это
# iptables -t nat -A POSTROUTING -s 10.15.0.0/24 -j MASQUERADE

Некоторые замечания

Для исключения возможности mitm атаки, ошибка которого так выглядит в логах клиента:

WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.

Служит параметр remote-cert-tls server, который уже присутствует в конфиге клиента.

Список валидных и отозванных сертификатов

Список валидных и отозванных сертификатов можно посмотреть в файле ~/easy-rsa-master/easyrsa3/pki/index.txt. Начало строки оисания каждого сертификата начинается с букв V или R, что значит Valid и Revoked, например:

V       241019110411Z                   01      unknown /CN=vpn-server
R       241019110842Z   141202085241Z   02      unknown /CN=User1
R       241020105823Z   141201103442Z   03      unknown /CN=test
R       150301095139Z   141202085814Z   04      unknown /CN=User2
V       141203091049Z                   05      unknown /CN=User3

Как видно, первый и пятый сертификаты валидны, 2-4 отозваны.

Если клиент на Windows

Поставить OpenVPN GUI, скачав отсюда. Скопировать клиентские ключи в C:Program FilesOpenVPNconfig. Скопировать конфиг клиента и вставить в файл client.ovpn, положить туда же. Всего в этом каталоге должно получиться пять файлов — User.crt, User.key, ca.crt, ta.key, client.ovpn.
Обязательно запустить OpenVPN GUI от имени администратора, иначе в сиситеме не поднимутся маршруты, и произвести подключение двойным кликом по иконке в трее (такая область около часов, обычно в правом нижнем углу).


Ссылки по теме:
Описание параметров конфигурационных файлов.
Как сделать центр сертификации по феншую.
Отзыв сертификата Easy-RSA без .crt файла
Как прикрутить доменную авторизацию через AD к openvpn

Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

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

OpenVPN – это набор open source программ, который заслуженно является одним из самых популярных и легких решений для реализации защищенной VPN сети. OpenVPN позволяет объединить в единую сеть сервер и клиентов (даже находящиеся за NAT или файерволами), или объединить сети удаленных офисов. Серверную часть OpenVPN можно развернуть практически на всех доступных операционных системах (пример настройки OpenVPN на Linux). Вы можете установить OpenVPN сервер даже на обычный компьютер с десктопной редакцией Windows 10.

В этой статье, мы покажем, как установить OpenVPN сервер на компьютер с Windows 10, настроить OpenVPN клиент на другом Windows хосте и установить защищенное VPN подключение.

Содержание:

  • Установка службы OpenVPN сервера в Windows
  • Создаем ключи шифрования и сертификаты для OpenVPN
  • Конфигурационный файл OpenVPN сервера в Windows
  • Настройка OpenVPN клиента в Windows

Установка службы OpenVPN сервера в Windows

Скачайте MSI установщик OpenVPN для вашей версии Windows с официального сайта (https://openvpn.net/community-downloads/). В нашем случае это OpenVPN-2.5.5-I602-amd64.msi (https://swupdate.openvpn.org/community/releases/OpenVPN-2.5.5-I602-amd64.msi).

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

Если вы планируете, OpenVPN сервер работал в автоматическом режиме, можно не устанавливать OpenVPN GUI. Обязательно установите OpenVPN Services.

установка openvpn сервера в windows 10

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

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

WinTun драйвер openvpn

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

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

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

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

Создаем ключи шифрования и сертификаты для OpenVPN

OpenVPN основан на шифровании OpenSSL. Это означает, что для обмена трафиком между клиентом и серверов VPN нужно сгенерировать ключи и сертификаты с использованием RSA3.

Откройте командную строку и перейдите в каталог easy-rsa:

cd C:Program FilesOpenVPNeasy-rsa

Создайте копию файла:

copy vars.example vars

Откройте файл vars с помощью любого текстового редактора. Проверьте пути к рабочим директориям.

Обязательно поправьте переменную EASYRSA_TEMP_DIR следующим образом:

set_var EASYRSA_TEMP_DIR "$EASYRSA_PKI/temp"

EASYRSA_TEMP_DIR

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

set_var EASYRSA_REQ_COUNTRY "RU"
set_var EASYRSA_REQ_PROVINCE "MSK"
set_var EASYRSA_REQ_CITY "MSK"
set_var EASYRSA_REQ_ORG "IT-Company"
set_var EASYRSA_REQ_EMAIL " [email protected] "
set_var EASYRSA_REQ_OU " IT department "

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

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

#set_var EASYRSA_CA_EXPIRE 3650
#set_var EASYRSA_CERT_EXPIRE 825

Сохраните файл и выполните команду:

EasyRSA-Start.bat

Следующие команды выполняются в среде EasyRSA Shell:

Инициализация PKI:

./easyrsa init-pki

Должна появится надпись:

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: C:/Program Files/OpenVPN/easy-rsa/pki

Теперь нужно сгенерировать корневой CA:

./easyrsa build-ca

Задайте дважды пароль для CA:

CA creation complete and you may now import and sign cert requests.

Данная команда сформировала:

  • Корневой сертификат центра сертификации: «C:Program FilesOpenVPNeasy-rsapkica.crt»
  • Ключ центра сертификации «C:Program FilesOpenVPNeasy-rsapkiprivateca.key»

Теперь нужно сгенерировать запрос сертификата и ключ для вашего сервера OpenVPN:

./easyrsa gen-req server nopass

Утилита сгенерирует два файла:

req: C:/Program Files/OpenVPN/easy-rsa/pki/reqs/server.req
key: C:/Program Files/OpenVPN/easy-rsa/pki/private/server.key

Подпишем запрос на выпуск сертификата сервера с помощью нашего CA:

./easyrsa sign-req server server

Подтвердите правильность данных, набрав yes.

Затем введите пароль CA от корневого CA.

В каталоге issued появится сертификат сервера («C:Program FilesOpenVPNeasy-rsapkiissuedserver.crt»)

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

Теперь можно создать ключи Диффи-Хеллмана (займет длительное время):
./easyrsa gen-dh

Для дополнительной защиты VPN сервера желательно включить tls-auth. Данная технология позволяет использовать подписи HMAC к handshake-пакетам SSL/TLS, инициируя дополнительную проверку целостности. Пакеты без такой подписи будут отбрасываться VPN сервером. Это защитит вас от сканирования порта VPN сервера, DoS атак, переполнения буфера SSL/TLS.

Сгенерируйте ключ tls-auth:

cd C:Program FilesOpenVPNbin
openvpn --genkey secret ta.key

Должен появиться файл «C:Program FilesOpenVPNbinta.key». Переместите его в каталог C:Program FilesOpenVPNeasy-rsapki

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

Есть несколько способов генерации ключей и передачи их клиентам. В следующем примере, мы создадим на сервере ключ клиента и защитим его паролем:

./easyrsa gen-req kbuldogov
./easyrsa sign-req client kbuldogov

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

Данный ключ («C:Program FilesOpenVPNeasy-rsapkiprivatekbuldogov.key») нужно передать клиенту и сообщить пароль. Клиент может снять защиту паролем для ключа:

openssl rsa -in "C:Program FilesOpenVPNeasy-rsapkiprivatekbuldogov.key"-out "C:Program FilesOpenVPNeasy-rsapkiprivatekbuldogov_use.key"

снять защиту паролем с ключа клиента

Если вы хотите сгенерировать ключ, не защищенный паролем, нужно выполнить команду:

./easyrsa gen-req имяклиента nopass

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

Вы можете отохвать скомпрометированные сертификаты клиентов:
cd C:Program FilesOpenVPNeasy-rsa
EasyRSA-Start.bat
./easyrsa revoke kbuldogov

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

Конфигурационный файл OpenVPN сервера в Windows

Скопируйте типовой конфигурационный файл OpenVPN сервера:

copy "C:Program FilesOpenVPNsample-configserver.ovpn" "C:Program FilesOpenVPNconfig-autoserver.ovpn"

Откройте файл server.ovpn в любом текстовом редакторе и внесите свои настройки. Я использую следующий конфиг для OpenVPN:

# Указываем порт, протокол и устройство
port 1194
proto udp
dev tun
# Указываем пути к сертификатам сервера
ca "C:\Program Files\OpenVPN\easy-rsa\pki\ca.crt"
cert "C:\Program Files\OpenVPN\easy-rsa\pki\issued\server.crt"
key "C:\Program Files\OpenVPN\easy-rsa\pki\private\server.key"
dh "C:\Program Files\OpenVPN\easy-rsa\pki\dh.pem"
# Указываем настройки IP сети, адреса из которой будет будут получать VPN клиенты
server 10.24.1.0 255.255.255.0
#если нужно разрешить клиентам подключаться под одним ключом, нужвно включить опцию duplicate-cn (не рекомендуется)
#duplicate-cn
# TLS защита
tls-auth "C:\Program Files\OpenVPN\easy-rsa\pki\ta.key" 0
cipher AES-256-GCM
# Другая параметры
keepalive 20 60
persist-key
persist-tun
status "C:\Program Files\OpenVPN\log\status.log"
log "C:\Program Files\OpenVPN\log\openvpn.log"
verb 3
mute 20
windows-driver wintun

Сохраните файл.

OpenVPN позволяет использовать как TCP, так и UDP для подключения. В этом примере я запустил OpenVPN на 1194 UDP. Рекомендуется использовать протокол UDP, это оптимально как с точки зрения производительности, так и безопасности.

Не забудьте открыть на файерволе порты для указанного вами порта OpenVPN на клиенте и на сервере. Можно открыть порты в Windows Defender с помощью PowerShell.
Правило для сервера:

New-NetFirewallRule -DisplayName "AllowOpenVPN-In" -Direction Inbound -Protocol UDP –LocalPort 1194 -Action Allow

Правило для клиента:

New-NetFirewallRule -DisplayName "AllowOpenVPN-Out" -Direction Outbound -Protocol UDP –LocalPort 1194 -Action Allow

Теперь нужно запустить службу OpenVPN и изменить тип ее запуска на автоматический. Воспользуйтесь таким командами PowerShell, чтобы включить службу:

Set-Service OpenVPNService –startuptype automatic –passthru
Get-Service OpenVPNService| Start-Service

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

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

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

Если при запуске OpenVPN вы видите в логе ошибку:

Options error: In C:Program FilesOpenVPNconfig-autoserver.ovpn:1: Maximum option line length (256) exceeded, line starts with..

Смените в файле server.ovpn символы переноса строки на Windows CRLF (в notepad++ нужно выбрать Edit -> EOL Conversion -> Windows CR LF). Сохраните файл, перезапустите службу OpevVPNService.

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

Включить опцию IPEnableRouter в реестре (включает IP маршрутизацию в Windows, в том числе включает маршрутизацию меду сетями Hyper-V): reg add «HKLMSYSTEMCurrentControlSetServicesTcpipParameters» /v IPEnableRouter /t REG_DWORD /d 1 /f

Добавьте в конфгурационный файл сервера OpenVPN маршруты до внутренней IP сети:

push "route 10.24.1.0 255.255.255.0"
push "route 192.168.100.0 255.255.255.0"

Если нужно, назначьте клиенту адреса DNS серверов:

push "dhcp-option DNS 192.168.100.11"
push "dhcp-option DNS 192.168.100.12"

Если нужно завернуть все запросы клиента (в том числе Интернет трафик) на ваш OpenVPN сервер, добавьте опцию:

push "redirect-gateway def1"

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

Создайте на сервере шаблонный конфигурационный файла для клиента VPN (на базе iшаблона client.ovpn) со следующими параметрами (имя файла kbuldovov.ovpn)

client
dev tun
proto udp
remote your_vpn_server_address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert kbuldogov.crt
key kbuldogov.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
connect-retry-max 25
verb 3

В директиве remote указывается публичный IP адрес или DNS имя вашего сервера OpenVPN.

Скачайте и установите клиент OpenVPN Connect для Windows (https://openvpn.net/downloads/openvpn-connect-v3-windows.msi).

установка openvpn connect в windows

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

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

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

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

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

Проверьте теперь лог OpenVPN на клиенте «C:Program FilesOpenVPN Connectagent.log»

Mon Dec 27 08:09:30 2021 proxy_auto_config_url
Mon Dec 27 08:09:31 2021 TUN SETUP
TAP ADAPTERS:
guid='{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}' index=22 name='Local Area Connection'
Open TAP device "Local Area Connection" PATH="\.Global{25EE4A55-BE90-45A0-88A1-8FA8FEF24C42}.tap" SUCCEEDED
TAP-Windows Driver Version 9.24
ActionDeleteAllRoutesOnInterface iface_index=22
netsh interface ip set interface 22 metric=1
Ok.
netsh interface ip set address 22 static 10.24.1.6 255.255.255.252 gateway=10.24.1.5 store=active
IPHelper: add route 10.24.1.1/32 22 10.24.1.5 metric=-1

Клиент успешно подключится к OpenVPN серверу и получил IP адрес 10.24.1.6.

Проверьте теперь лог на сервере («C:Program FilesOpenVPNlogopenvpn.log»). Здесь также видно, что клиент с сертификатом kbuldogov успешно подключится к вашему серверу.

2021-12-27 08:09:35 192.168.13.202:55648 [kbuldogov] Peer Connection Initiated with [AF_INET6]::ffff:192.168.13.202:55648
2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI_sva: pool returned IPv4=10.24.1.6, IPv6=(Not enabled)
2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: Learn: 10.24.1.6 -> kbuldogov/192.168.13.202:55648
2021-12-27 08:09:35 kbuldogov/192.168.13.202:55648 MULTI: primary virtual IP for kbuldogov/192.168.13.202:55648: 10.24.1.6

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Easyanticheat error failed to create igameclient
  • Easyanticheat error failed to create game client instance check that the game
  • Easyanticheat error createservice failed 1072
  • Easyanticheat error copyfile failed with 32
  • Easyanticheat error code 30005 war thunder

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии