Автор Тема: OpenVPN и Веб - интерфейс  (Прочитано 3734 раз)

Оффлайн Евгений

  • Давно тут
  • **
  • Сообщений: 31
OpenVPN и Веб - интерфейс
« : 19.08.2015 20:02:38 »
На сервере поднято два OpenVPN сервера - tun0 и tun1. На веб-морде цепляется tun1. Чтобы поработать с нужным сертификатом в Удостоверяющем Центре, нужно подцепиться к корневому сертификату сервера на tun0 интерфейсе. Как это сделать?

еще вопросы:
1. Как отозвать клиентский сертификат. То есть создать файл crl.pem чтобы добавить в файл openvpn сервера строку вида crl-verify /путь/crl.pem
2. Через веб-интерфейс такое возможно сделать?
3. Почему в дистрибутивах в синаптике немогу найти пакет easy-rsa? Качать rpm с сизифа?
« Последнее редактирование: 20.08.2015 19:25:53 от Евгений »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: OpenVPN и Веб - интерфейс
« Ответ #1 : 20.08.2015 20:20:09 »
очему в дистрибутивах в синаптике немогу найти пакет easy-rsa? Качать rpm с сизифа?
Наверное, потому, что только появился в Сизифе.

http://packages.altlinux.org/en/Sisyphus/srpms/easy-rsa/changelog
Цитировать
2015-06-17 Vladimir Didenko <cow at altlinux.org> 3.0.0-alt1

    - Initial build for Sisyphus


Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 923
    • Домашняя страница
    • Email
Re: OpenVPN и Веб - интерфейс
« Ответ #2 : 20.08.2015 21:30:12 »
Сбэкпортирую, раз собрали.
#147927 BUILDING #1 [locked] [test-only] p7 easy-rsa.git=3.0.0-alt0.M70P.1
Андрей Черепанов (cas@)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 041
  • ITS
Re: OpenVPN и Веб - интерфейс
« Ответ #3 : 21.08.2015 11:55:57 »
очему в дистрибутивах в синаптике немогу найти пакет easy-rsa? Качать rpm с сизифа?
Наверное, потому, что только появился в Сизифе.

http://packages.altlinux.org/en/Sisyphus/srpms/easy-rsa/changelog
Цитировать
2015-06-17 Vladimir Didenko <cow at altlinux.org> 3.0.0-alt1

    - Initial build for Sisyphus

Установил easyrsa, клиентские ключи создал на 90 дней. Теперь можно подписывать и отзывать сертификаты. Вот если бы web-альтератор по центру сертификации  довели бы до логического конца, ему бы цены не было.  Это один из ключевых узлов "дистрибостроения" тем более в настоящее время. Стоит на это обратить внимание, думаю для тех кто занимается веб программированием это не составит особого труда. В консоли как-то не очень удобно, сыро и темно. Вот по этому мануалу http://notessysadmin.com/quickstart-openvpn-server на мой взгляд удобно с easyrsa разбираться.

ps. извиняюсь, что с разных аккаунтов зашел. С разных устройств заходил. То нашел, то потерял пароль, как-то давно.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 923
    • Домашняя страница
    • Email
Re: OpenVPN и Веб - интерфейс
« Ответ #4 : 21.08.2015 12:06:07 »
Вот если бы web-альтератор по центру сертификации  довели бы до логического конца, ему бы цены не было.  Это один из ключевых узлов "дистрибостроения" тем более в настоящее время. Стоит на это обратить внимание, думаю для тех кто занимается веб программированием это не составит особого труда.
Доработка этого модуля запланирована в ближайшее время. Правда, нужны для этого навыки в Scheme/Bash, а не веб-программировании.
Андрей Черепанов (cas@)

Оффлайн NecroJoke

  • Давно тут
  • **
  • Сообщений: 455
    • Email
Re: OpenVPN и Веб - интерфейс
« Ответ #5 : 24.08.2015 05:43:44 »
Т.е. через альтератор на сегодняшний день отозвать сертификаты нельзя? Как сделать ручками? Где что сгенерировать применительно к p7?

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 923
    • Домашняя страница
    • Email
Re: OpenVPN и Веб - интерфейс
« Ответ #6 : 24.08.2015 08:13:44 »
Создавать отзывы на сертификаты вручную. Читайте про OpenVPN.
Андрей Черепанов (cas@)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 041
  • ITS
Re: OpenVPN и Веб - интерфейс
« Ответ #7 : 24.08.2015 10:29:06 »
Создавать отзывы на сертификаты вручную. Читайте про OpenVPN.
Где находятся в каталогах AltLinux p7 ключ и сертификат центра сертификации? Если этот ключ и сертификат скормить  утилите easyrsa и они подхватятся ей, то возможно и получиться корректно создать файл crl.pem ( Список отозванных сертификатов).

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 19 923
    • Домашняя страница
    • Email
Re: OpenVPN и Веб - интерфейс
« Ответ #8 : 24.08.2015 10:46:22 »
Создавать отзывы на сертификаты вручную. Читайте про OpenVPN.
Где находятся в каталогах AltLinux p7 ключ и сертификат центра сертификации? Если этот ключ и сертификат скормить  утилите easyrsa и они подхватятся ей, то возможно и получиться корректно создать файл crl.pem ( Список отозванных сертификатов).
Смотрите в исходном коде /usr/lib/alterator/backend3/openvpn-server:
/etc/openvpn/keys
Андрей Черепанов (cas@)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 041
  • ITS
Re: OpenVPN и Веб - интерфейс
« Ответ #9 : 24.08.2015 13:53:40 »
Смотрите в исходном коде /usr/lib/alterator/backend3/openvpn-server:
/etc/openvpn/keys
Значит в моем случае:
- создаем инфраструктуру открытых ключей
# easyrsa init-pki
- создем корневой сертификат и ключ УЦ (без пароля)
# easyrsa build-ca nopass
- заменяем созданный нами ключ и сертификат УЦ на ключ и сертификат созданный УЦ альтов через вебку
# cp /var/lib/ssl/certs/ca-root.pem ./pki/ca.crt
# cp /var/lib/alterator-ca/CA/private/cakey.pem ./pki/private/ca.key
- на всякий случай обновим базу
# easyrsa update-db
- создадим запрос на создание сертификата для ovpn сервера
# easyrsa gen-req vpn-server nopass
- создадим сам сертификат сервера
# easyrsa sign-req server vpn-server
- тоже самое для клиента
# easyrsa gen-req vpn-client nopass
# easyrsa sign-req client vpn-client
- генерируем файл отозванных ключей
# easyrsa gen-crl
- отзываем сертификат к примеру vpn-client
# easyrsa revoke vpn-client
- смотрим базу
# cat pki/index.txt
V       250821095632Z           01      unknown /CN=vpn-server
R       250821095753Z   150824095939Z   02      unknown /CN=vpn-client
v - валидный, R - отозванный
Вроде получилось. осталось в конфиг сервера /etc/net/ifaces/tunX/ovpnoptions добавить
строчку: crl-verify /путь\ к файлу\ отозванных\ лицензий/crl.pem

Если также скопировать клиентские пары key/crt из каталогов /var/lib/ssl/certs/ и /var/lib/ssl/private в каталог ./pki/issued для сертификатов и ./pki/private для ключа,  и выполнить команду "easyrsa revoke скопированный_сертификат" и "easyrsa gen-crl", то в файл crl.pem добавиться запись на отзыв этого сертификата.
Теперь кто бы проверил, как все это будет работать?

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 041
  • ITS
Re: OpenVPN и Веб - интерфейс
« Ответ #10 : 25.08.2015 16:18:30 »
Вроде получилось. осталось в конфиг сервера /etc/net/ifaces/tunX/ovpnoptions добавить
строчку: crl-verify /путь\ к файлу\ отозванных\ лицензий/crl.pem
Ну наконец сам проверил. В конфиге OpenVPN сервера нужно указать crl-verify crl.pem а файл разместить в каталоге /var/lib/openvpn, иначе тунель не поднимется.

Вот еще одна справка для создания ключей к openvpn серверу: (проверил на AltLinux p7 systemd)
за основу взял "самоподписанный" ман )) http://forum.ubuntu.ru/index.php?topic=182135.0

Открываем файл /var/lib/ssl/openssl.cnf и меняем значение параметра policy на:
policy = policy_anything
Это для того, чтобы можно было подписывать любые сертификаты. После чего создаем следующие папки и файлы (я все делал в каталоге /root/CA):
mkdir -p ./demoCA/newcerts
touch ./demoCA/index.txt
echo '01' > ./demoCA/serial
echo '01' > ./demoCA/crlnumber

(без этого OpenSSL будет сильно ругаться!!! ответ кроется в файле /var/lib/ssl/openssl.cnf ).
Создадим самоподписанный сертификат и закрытый ключ, которыми мы будем заверять ключи и сертификаты клиентов, желающих подключиться к нашему серверу. Я не стал использовать скрипты, поставляемые в комплекте с OpenVPN, потому что хотел сам разобраться что к чему и как работает.

Делается это с помощью консольной утилиты:
openssl req -new -x509 -keyout my-ca.pem -out my-ca.crt
Подробнее: req - запрос на создание сертификата, -x509 - создать самоподписанный сертификат стандарта X.509 (в Википедию, если интересно), -keyout - записать закрытый ключ в файл, -out - записать сертификат в файл. В процессе создания, первым делом, нам предложат ввести пароль для закрытого ключа (крайне важно). Придумываем пароль, вводим, подтверждаем. Далее, будет задано несколько вопросов о том, кто мы такие. Вводим международное обозначение страны, например RU, UA, CN, далее указываем регион, город/село/деревню, название нашей организации, свои ФИО, адрес электронной почты. Все. Наш корневой самоподписанный сертификат готов к употреблению.Далее, нам потребуется создать пару "ключ-сертификат" для сервера и каждого клиента, желающего подключиться к нашему серверу.

Создание ключа и запроса на подпись для сервера:
openssl req -new -nodes -keyout server.pem -out server.crs

И подписываем запрос на сертификат своим самоподписанным:
openssl ca -cert my-ca.crt -keyfile my-ca.pem -days 3650 -in server.crs -out server.crt
-cert, корневой сертификат удостоверяющего центра
-keyfile, секретный ключ удостоверяющего центра

Теперь генерируем запрос на сертификат для каждого пользователя:
openssl req -new -nodes -keyout user_1.pem -out user_1.crs

И подписываем запрос на сертификат своим самоподписанным:
openssl ca -cert my-ca.crt -keyfile my-ca.pem -days 365 -in user_1.crs -out user_1.crt
-nodes - означает, что шифровать закрытый ключ не нужно (иначе при каждом запуске туннеля надо будет вводить пароль на ключ). Так же вводим описание для владельца ключа, как и ранее.

Отвечаем два раза положительным "игреком" (y), в итоге, получаем связку "ключ-сертификат" для пользователя user_1.Если пользователей много, то можно автоматизировать процесс, задействовав скрипты из комплекта OpenVPN.

Последние действие - создание параметров Диффи-Хеллмана (исключительно для сервера):

openssl gendh -out server.dh 2048

В общем-то, с криптографией больше возиться не придется. Файлы запросов на сертификаты можно удалить:
rm *.crs

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

Для создания списка отзыва сертификатов необходимо выполнить следующую команду
openssl ca -cert my-ca.crt -keyfile my-ca.pem -gencrl -out crl.pem

отозвать серификат user_1.crt:
openssl ca -cert my-ca.crt -keyfile my-ca.pem -revoke  -out crl.pem user_1.crt

обновить список:
openssl ca -cert my-ca.crt -keyfile my-ca.pem -gencrl -out crl.pem

просмотр crl.pem:
openssl crl -noout -text -in crl.pem


Для AltLinux файл crl.pem поместить в каталог /var/lib/openvpn

PS. Как все сложно без альтовской вебки (хотя кому как). Через месяц все забуду и опять буду тыкаться в свой мануал. Надеюсь все-таки центр сертификации допилят.
« Последнее редактирование: 25.08.2015 16:53:00 от rabochyITs »

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 041
  • ITS
Re: OpenVPN и Веб - интерфейс
« Ответ #11 : 25.08.2015 16:31:12 »
Чтобы понять что куда:
Конфиг сервера:
port 1194
proto tcp-server
dev-type tun
ca   /root/CA/my-ca.crt
cert /root/CA/server.crt
key  /root/CA/server.pem
dh   /root/CA/server.dh
crl-verify crl.pem #/var/lib/openvpn
server 192.168.101.0 255.255.255.0
user openvpn
group openvpn
ifconfig-pool-persist ipp.txt
keepalive 10 120
client-config-dir /etc/openvpn/ccd
persist-key
persist-tun
client-to-client
script-security 2
status openvpn-status.log
log /root/CA/ovpn.log
verb 9
comp-lzo
# Server networks start
push "route 10.9.8.0 255.255.255.0"

Конфиг Windows клиента:
remote 192.168.8.83 1194
client
dev tun
proto tcp
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca c:\\key\\keyhv\\my-ca.crt
cert c:\\key\\keyhv\\user_1.crt
# mv user_1.pem user_1.key
key c:\\key\\keyhv\\user_1.key
comp-lzo
verb 3

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: OpenVPN и Веб - интерфейс
« Ответ #12 : 25.08.2015 16:38:40 »
А вы на Wiki запишите - может ещё кому-то пригодится.

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 041
  • ITS
Re: OpenVPN и Веб - интерфейс
« Ответ #13 : 25.08.2015 16:51:17 »
А вы на Wiki запишите - может ещё кому-то пригодится.
Материал сырой. Надо еще на практике погонять, да кто бы еще проверил и дополнил. У меня знаний по данной утилите (openssl) недостаточно. Сейчас народ обленился, хочет из дома работать. А тут просят дай доступ. Вот и пришлось в плотную заняться, так как в альтах оказалось, что УЦ с урезанным функционалом. Ранее для связки нескольких хозяйств хватало, а теперь народ повалил нужно подготовиться. )) 

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 251
  • Учиться .... Телепатами не рождаются, ими ....
    • Email
Re: OpenVPN и Веб - интерфейс
« Ответ #14 : 25.08.2015 22:44:57 »
Ну - сырой-не сырой, а тот, кто пойдёт за вами уже будет обладать этой информации.
Можете в статье прямо и честно указать, что материал сырой и требует доработки. Не вы, так кто-нибудь другой своё добавит и доработает, а так всё потонет внутри этого форума.