Автор Тема: Ковчег сервер + OpenVPV сервер + OpenVPN клиент на винде [решено]  (Прочитано 3712 раз)

Оффлайн freeak

  • Участник
  • *
  • Сообщений: 14
Подскажите пожалуйста как заставить коннектиться виндовый клиент OpenVPN к серверу на ковчеге.
Что и как делаю:
 - Сгенерировал сертификат сервера, подписал.
Цитировать
# rpm -qa | grep openvpn
alterator-net-openvpn-0.8.2-alt1
alterator-openvpn-server-0.8.0-alt1
openvpn-2.0.9-alt2
openvpn-server-CA.crt
openvpn-server.sert
openvpn-server.csr
openvpn-server.key
это появляется в расзных папках /var/lib/ssl/

Генерирую сертификат для клиента(тоже на сервере через ВЕБ интерфейс в закладке OpenVPN-соединения), получаю:
client.cert
client.csr
client.key
openvpn-client-CA.srt - Этот файл появляется только когда в закладке OpenVPN-соединения добавляю подписанный удостоверяющим центром сертификат(output.pem)
Перекидываю это на клиента кроме запроса на подпись.
При коннекте выпадает следующая ошибка:
Клиент:
Цитировать
Tue May 31 18:53:13 2011 us=559000 NOTE: OpenVPN 2.1 requires '--script-security 2' or higher to call user-defined scripts or executables
Tue May 31 18:53:13 2011 us=559000 Re-using SSL/TLS context
Tue May 31 18:53:13 2011 us=559000 LZO compression initialized
Tue May 31 18:53:13 2011 us=559000 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Tue May 31 18:53:13 2011 us=589000 Socket Buffers: R=[8192->8192] S=[8192->8192]
Tue May 31 18:53:13 2011 us=589000 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Tue May 31 18:53:13 2011 us=599000 Local Options String: 'V4,dev-type tun,link-mtu 1542,tun-mtu 1500,proto UDPv4,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-client'
Tue May 31 18:53:13 2011 us=599000 Expected Remote Options String: 'V4,dev-type tun,link-mtu 1542,tun-mtu 1500,proto UDPv4,comp-lzo,cipher BF-CBC,auth SHA1,keysize 128,key-method 2,tls-server'
Tue May 31 18:53:13 2011 us=599000 Local Options hash (VER=V4): '41690919'
Tue May 31 18:53:13 2011 us=599000 Expected Remote Options hash (VER=V4): '530fdded'
Tue May 31 18:53:13 2011 us=619000 UDPv4 link local: [undef]
Tue May 31 18:53:13 2011 us=619000 UDPv4 link remote: 10.45.1.2:1194
Tue May 31 18:53:13 2011 us=649000 TLS: Initial packet from 10.45.1.2:1194, sid=9bd9d36c 7842a248
Tue May 31 18:53:13 2011 us=679000 VERIFY ERROR: depth=0, error=unable to get local issuer certificate: /C=RU/O=siid/OU=siid_main_office/CN=siid.lan
Tue May 31 18:53:13 2011 us=679000 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Tue May 31 18:53:13 2011 us=679000 TLS Error: TLS object -> incoming plaintext read error
Tue May 31 18:53:13 2011 us=689000 TLS Error: TLS handshake failed
Tue May 31 18:53:13 2011 us=699000 TCP/UDP: Closing socket
Tue May 31 18:53:13 2011 us=699000 SIGUSR1[soft,tls-error] received, process restarting
Tue May 31 18:53:13 2011 us=709000 Restart pause, 2 second(s)

Сервак:
Цитировать
May 31 18:53:54 shserver openvpn[8700]: 10.45.10.4:1631 TLS Error: TLS handshake failed
May 31 18:53:54 shserver openvpn[8700]: 10.45.10.4:1631 SIGUSR1[soft,tls-error] received, client-instance restarting
May 31 18:53:55 shserver openvpn[8700]: read UDPv4 [ECONNREFUSED]: Connection refused (code=111)
May 31 18:53:55 shserver last message repeated 4 times
May 31 18:53:56 shserver openvpn[8700]: 10.45.10.4:1632 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
И ничего не получается, чего я только не делал :(
В принципе я так понимаю конфиги тут не сильно важны, скорее всего тут с ключами что-то, ну если надо могу сбросить (клиента, т.к. сервер настраивается через веб интерфейс и где он хранит настройки я просто в душе не знаю). Вроде как нужен TLS ключ для аутентификации, сгенерировать то его конечно можно, но как его на сервере то добавить.

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

Помогите, пожалуйста, разобраться может я что-то с генерацией сертификатов не так делаю, если у кого есть опыт подключения именно Вин юзеров по VPN поделитесь как настраивали?
« Последнее редактирование: 01.06.2011 21:52:08 от freeak »

Оффлайн speccyfan

  • Участник
  • *
  • Сообщений: 522
  • CCNA
    • speccyfan (Примеры различных конфигураций сетевых сервисов)
Дата/Время на сервере и клиенте синхронизировано? Хотя тут больше похоже на то, что связь не стабильная  ???
With best regards, Yury Konovalov aka 2:453/53

Оффлайн freeak

  • Участник
  • *
  • Сообщений: 14
Что клиент что сервер берут время с инета с pool.ntp.org, а связь не может быть не стабильной, т.к. разделяют их 2 хаба и максимум пол сотни метров витухи. Так что врятли в этом проблема...

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 048
1) Версия openvpn на клиенте совпадает с сервером?
2) На клиенте ничто не мешает прохождению пакетов на сервер (брандмауэр, антивирус) ?
3) Проблема с сертификатами, судя по логам, действительно имеет место. Может быть стоит попробовать сгенерировать сертификаты по рецептам для случая, когда клиент и сервер виндовые (поставить локально на клиента сервер openvpn для винды, произвести всю настройку, генерацию ключей и проверку работы), а потом файлы раскидать по необходимым папкам, проверяя при этом пути в конфигах сервера и клиента. Немного костыльный метод, скорее всего :)

Оффлайн freeak

  • Участник
  • *
  • Сообщений: 14
Ну в общем как оказалось сам дурак :)
Решение как ни странно пришло во сне(честное слово думал свистит Менделеев что таблицу там увидел), проснулся посреди ночи и чуть не закричал Эврика, но понял что это будет перебор :)

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

Сразу говорю что пишу чисто про ключи, настройки OpenVPN не затрагиваю
1) В Центре управления системой заходим в пункт "Управление ключами SSL" и удаляем все ключи(а так же сертификаты и запросы на подпись) которые связаны с openvpn сервером. Ну это так чтобы наверняка нигде ошибка не вкралась
2) Заходим в пункт "OpenVPN-сервер" (предполагаю что нужные настройки его уже сделаны, он запущен и прослушивает нужный вам порт), нажимаем кнопку "Сертификат и ключ SSL", так как мы удалил старые данные откроется окно для ввода данных сертификата, заполняем поля(как я понял здесь ничего критичного нет, главное чтобы страна была из 2 букв, и заполнить первое поле - Общее имя (CN):), ставим галочку "(Пере)создать ключ и запрос на подпись" (ну чтобы уж совсем наверняка ошибка не вкралась), нажимаем "Подтвердить", нажимаем кнопку "Забрать запрос на подпись" и сохраняем файл на машинке.
3) Теперь в пункте "Управление ключами SSL" в списке должен появится пункт "openvpn-server(Нет сертификата)"
4) Идем в пункт "Удостоверяющий Центр" нажимаем кнопку "Обзор" и выбираем сохраненный вами файл, затем жмем "Загрузить запрос", после загрузки нажимаем кнопку внизу страницы "Подписать" и сохраняем выданный вам в ответ output.pem
5) В этом же пункте переходим по ссылке "Управление УЦ" и нажимаем на ссылку "Сертификат: ca-root.pem" сохраняем файл. (На счет него-то и был мой весчий сон :) )
6) Теперь переходим в пункт "Сертификат и ключ SSL", выбираем в списке openvpn-server и нажимаем кнопку "Изменить", жмем внизу кнопку "Обзор", выбираем только что сохраненный файл, затем жмем "Положить".
7) Теперь при переходе в пункт "Сертификат и ключ SSL" видим что в скобках в пункте openvpn-server появился срок годности.
после этого мы имеем в папке /var/lib/ssl/private:
openvpn-server.dh
openvpn-server.key
openvpn-server.pem
и в /var/lib/ssl/сerts:
openvpn-server.сert
8) Переходим в пункт "OpenVPN-сервер", в строке "Положить сертификат УЦ:" нажимаем "Обзор", выбираем ранее сохраненный ca-root.pem и жмем "Пложить"(вот тут то и была моя ошибка, так сказать клал я сюда немного не то что нужно, файл я добавлял не ca-root а тот который получал при подписи сертификата openvpn сервера, тобиш output.pem который выдавался по нажатию кнопки Подписать в удостоверяющем центра, в чем собственно и был дураком), после этого в папке /var/lib/ssl/сerts появляется openvpn-server-CA.сrt
Все! На этом этапе можно считать что с ключами сервера у нас вообще все ровно!!

Теперь о настройке клиента:
Чтобы не заморачиваться с генерацией ключей на винде я их сгенерировал на этом же сервере.
1) Идем в пункт "Управление ключами SSL" нажимаем "Новый"
2) В открывшемся окне заполняем данные (у меня от данных для сервеного ключа отличались только пункты "Общее имя (CN):" и "Подразделение (OU):", e-mail вообще не заполнял ни там ни там, для примера буду называть ключи "Client"), нажимаем "Подтвердить". Забираем запрос на подпись, сохраняем и идем в "Удостоверяющий центр"
3) В "Удостоверяющий Центр" нажимаем кнопку "Обзор" и выбираем сохраненный вами файл, затем жмем "Загрузить запрос", после загрузки нажимаем кнопку внизу страницы "Подписать" и сохраняем выданный вам в ответ output.pem
4) Теперь переходим в пункт "Управление ключами SSL", выбираем в списке ключ нашего клиента и нажимаем кнопку "Изменить", жмем внизу кнопку "Обзор", выбираем только что сохраненный файл, затем жмем "Положить". В пункте "Управление ключами SSL" так же на против нашего ключа появится срок годности.
5) Теперь можно сказать самое важное - идем в пункт "OpenVPN-соединения" в самом низу "Положить сертификат УЦ:" выбираем и ложим так сказать ранее сохраненный файл ca-root.pem, после чего в папке /var/lib/ssl/certs появляется openvpn-client-CA.crt
6) Копируем файлы Client.cert(или как вы его там назвали при генерации клиентского сертификата) из /var/lib/ssl/certs, Client.key из /var/lib/ssl/private и конечно же openvpn-client-CA.crt(он имеет права только для рута так что возможно придется их поменять для копирования с фтп) из /var/lib/ssl/certs на клиентскую виндовую машину в каталог конфигурации с конфигом клиента.
7) Теперь правим конфиг клиента(ну там пути к ключам и т.п.), переименовываем openvpn-client-CA.crt в ca.crt(для удобства).
Ну вот теперь можно сказать что и с ключами для клиента у нас тоже все ровно!!

При таком клиентсвокм конфиге, все завелось с полпинка:
Цитировать
client
dev tun
proto udp
remote ваш_адрес_VPN_сервера 1194
resolv-retry infinite
nobind
persist-key
persist-tun

ca ca.crt
cert Имя_вашего_клиентского_сертификата.cert
key Имя_вашего_клиентского_ключа.key

comp-lzo
verb 5


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

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 048
Ну раз так, то осталось в название темы дописать решено ;D

Оффлайн NecroJoke

  • Участник
  • *
  • Сообщений: 457
ага и инструкцию на wiki

Оффлайн Nagohak

  • Участник
  • *
  • Сообщений: 306
Добавлю еще вдруг кому пригодится: у мня после всех этих манипуляций соединялось, но локальных ресурсов не видел.
В логе было:
Mon Nov 28 23:59:25 2011 us=784806 ROUTE: route addition failed using CreateIpForwardEntry: Неверны один или несколько аргументов.   [if_index=35]
Mon Nov 28 23:59:25 2011 us=784878 Route addition via IPAPI failed
Mon Nov 28 23:59:25 2011 us=784930 route ADD 10.8.0.0 MASK 255.255.255.0 10.8.0.9
Mon Nov 28 23:59:25 2011 us=814019 ROUTE: route addition failed using CreateIpForwardEntry: Неверны один или несколько аргументов.   [if_index=35]
Mon Nov 28 23:59:25 2011 us=814090 Route addition via IPAPI failed
Mon Nov 28 23:59:25 2011 us=814129 Initialization Sequence Completed

Добавил в конфиг на клиенте:

route-method exe
route-delay 2

Все завелось.