The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка OpenVPN c применением сертификатов X.509 вместо статических ключей (vpn tunnel auth crypt openvpn openssl)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: vpn, tunnel, auth, crypt, openvpn, openssl,  (найти похожие документы)
From: Mstyslav Dubchak <mstyslav@ukr.net.> Newsgroups: email Date: Mon, 12 Sep 2005 18:21:07 +0000 (UTC) Subject: Настройка OpenVPN c применением сертификатов X.509 вместо статических ключей Данная статья не претендует на исчерпывающее повествование по данной теме. В ней не раскрываются все возможности и опции настройки пакетов OpenSSL (http://www.openssl.org/) и OpenVPN (http://www.openvpn.net/). За более подробной информацией рекомендуется обратится на сайты разработчиков и man-страницы. Все Изложенное тут является результатом попытки автора решить прикладную задачу подключения удаленных клиентов к серверу не используя при этом статические ключи и дополнительное ПО для управления ключами и сертификатами. Статья писалась как пошаговое руководство-инструкция для начинающих, позволяющее "с нуля" настроить соединение 2-х и более машин по технологии VPN, используя свободно-распространяемое ПО. Начиная с версии 2 в пакете OpenVPN появилась возможность создавать соединения типа точка-многоточка с использованием на сервере одного виртуального адаптера - tap/tun - и как следствие использовать один процес демона OpenVPN. Установка и настройка производится на машине с установленной ОС FreeBSD, настроенной сетевой подсистемой и доступом в Интернет. Автор описал процесс настройки под FreeBSD 4.11-RELEASE-p11 и FreeBSD 5.3-RELEASE-p20, который проверил сам лично. На машине были установлены пакеты (устанавливалось из коллекции портов при помощи portinstall): - OpenSSL v. 0.9.7g - OpenVPN v. 2.0.2 Создание Certificate Authority (CA) После установки OpenSSL, файл конфигурации (openssl.cnf), потребуется отредактировать, чтобы при необходимости изменить каталоги в которых будут располагаться ключи, сертификаты и прочее во время настройки, а также имена и наименование организации. Как правило, конфиг располагается в каталоге /usr/local/openssl/, либо в /etc/ssl/. После редактирования openssl.cnf делаем следующее: Создаем файл /usr/local/openssl/serial c содержимым '01' # touch serial # echo 01 > serial Создаем каталоги /crl, /newcerts, /private # mkdir crl newcerts private Для каталога private, в целях безопастности частного ключа сервера, рекомендую установить права только для пользователя root # chmod go-rwx private Создаем пустой файл /usr/local/openssl/index: # touch index И наконец создаем сертификат CA # openssl req -nodes -config openssl.cnf -days 1825 \ -x509 -newkey rsa -out ca-cert.pem -outform PEM Создание сертификата X.509 Теперь, когда мы имеем CA, мы можем создавать сертификаты и ключи для машин, образующих туннель. Вместо host_x и client_x рекомендую указывать осмысленное имя вашей машины-сервера и клиентов, что бы потом не запутаться самому. Сгенерируем частный ключ для сервера, его настоятельно рекомендуется хранить в тайне: # openssl genrsa -out host_x.key Генерируем сертификат: # openssl req -new -nodes -key host_x.key -out host_x.csr # openssl ca -batch -config openssl.cnf -in host_x.csr -out host_x.cert Теперь повторим то же самое, но только для клиента: # openssl genrsa -out client_x.key # openssl req -new -nodes -key client_x.key -out client_x.csr # openssl ca -batch -config openssl.cnf -in client_x.csr -out client_x.cert И в конце создаем ключик ta.key. Этот ключ используется для предотвращения DoS атак и UDP port flooding # openvpn --genkey --secret ta.key Таким образом мы получили подписанный нами же сертификат X.509. Необходимо повторить эти действия для всех имеющихся у нас машин. Далее создать ключ Диффи Хельман (подробнее о нем http://www.rsasecurity.com/rsalabs/node.asp?id=2248).Этот ключ используется для шифрования трафика при установлении соединения: # openssl dhparam -out dh1024.pem 1024 Теперь переходим к конфигурированию самого OpenVPN. Файл конфигурации для сервера у меня находится в /usr/local/etc/openvpn/ и выглядит так: proto udp dev tap0 # использую tap, хотя можно и tun (рекомендуется) port 1194 # TLS parms tls-server ca /etc/ssl/ca-cert.pem cert /etc/ssl/host_x.cert key /etc/ssl/host_x.key dh /etc/ssl/dh1024.pem mode server ifconfig 10.10.10.10 255.255.255.248 ifconfig-pool 10.10.10.11 10.10.10.15 duplicate-cn tls-auth /etc/ssl/ta.key 0 #cipher BF-CBC # Blowfish (default) #cipher AES-128-CBC # AES cipher DES-EDE3-CBC # Triple-DES user nobody group nobody persist-key persist-tun comp-lzo keepalive 10 120 status /var/log/openvpn-status.log log /var/log/openvpn.log verb 3 Файл конфигурации для клиента у меня такой: client proto udp remote aaa.ccc.yyy.xxx port 1194 dev tap resolv-retry infinite persist-key persist-tun tls-client dh dh1024.pem ca ca-cert.pem cert client_x.cert key client_x.key #cipher BF-CBC # Blowfish (default) #cipher AES-128-CBC # AES cipher DES-EDE3-CBC # Triple-DES tls-auth ta.key 1 ping 10 comp-lzo verb 3 mute 10 После создания файлов конфигурации, запускаем демона openvpn на сервере: # sh /usr/local/etc/rc.d/openvpn.sh start (скрипт созданный при инсталляции) Проверяем запустился ли демон: # sockstat | grep openvpn Если видим что-то вроде: nobody openvpn 33072 3 udp4 *:1194 *:* значит сервер готово принимать входящие подключения. Далее запускаем клиента на своей машине. Рекомендую использовать GUI оболочку, если клиентом будет являться машина с Windows. Если клиентом выступает машина с FreeBSD , то запуск аналогичен серверной части. Для прояснения некоторых моментов образования соединения нелишним будет изучить вывод, который пишется в /var/log/openvpn.log. Именно используя его, автор получил большую часть информации пригодившейся при отладке конфигов. Регулировать детализацию логирования помогает ключик 'verb', Для более детального изучения возможностей OpenVPN, настоятельно рекомендую изучить примеры конфигов: http://openvpn.net/howto.html#examples Ну и конечно рекомендуется не забывать о том, что многие ошибки кто-то совершал и с проблемами сталкивался, а потому Google ваш помощник :)

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, Петр Стекунов (?), 14:23, 15/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вообще в коплекте openvpn есть каталог easy-rsa, в котором лежат скрипты, позволяющие не заморачиваться с многочисленными параметрами openssl.
     
  • 1.2, Mstyslav (?), 17:07, 18/09/2005 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не спорю, есть. Пробовал пользовать и даже читал мануал к нему. Однако, достьчь желаемого смог только таким путем как описал.
    Как действовать - вам ререшать. Я предложил свое решение.
     
  • 1.3, salex (??), 14:19, 13/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Сделал все как написано что-то вроде nobody openvpn 33072 3 udp4 1... большой текст свёрнут, показать
     
  • 1.4, ViktorK (ok), 16:17, 22/11/2006 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    сделал все как написано, в результате получил при создании сертификата вот, что:

    openssl ca -batch -in shop.csr -out shop.crt
    Using configuration from /etc/ssl/openssl.cnf
    wrong number of fields on line 1 (looking for field 6, got 1, '' left)


    в чем проблема?

     
     
  • 2.7, uri (??), 12:33, 17/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >сделал все как написано, в результате получил при создании сертификата вот, что:
    >
    >
    >openssl ca -batch -in shop.csr -out shop.crt
    >Using configuration from /etc/ssl/openssl.cnf
    >wrong number of fields on line 1 (looking for field 6, got
    >1, '' left)
    >
    >
    >в чем проблема?

    cat /dev/null > /usr/local/share/doc/openvpn/easy-rsa/keys/server/index.txt

     
  • 2.10, Ходил по граблям (?), 11:30, 31/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    В файле index.txt разделители полей - символ табуляции. Но иногда по разным причинам туда запихивают кучу пробелов в качестве разделителей. Отсюда и ошибка такая при парсинге файла.
     

  • 1.5, аноним (?), 04:58, 01/06/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > в коплекте openvpn есть каталог easy-rsa, в котором лежат скрипты, позволяющие не заморачиваться...
    да, оно просит текстовые файлы, index.txt пустой создать не проблема, а вот в serial даже "1" записать пробовал, не помогло...
    догадаться насчет "01", уж извиняйте, видимо не для моего уровня интеллекта
     
     
  • 2.6, roman (??), 15:25, 05/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    в каталоге easy-rsa есть куча скриптов
    vars
    init-config
    build-ca
    build-key-server
    ...
     

  • 1.8, дебианщик (?), 12:26, 29/01/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    How-to настрйка openvpn на debian
    http://linux.pageinpage.com/?p=345
     
     
  • 2.9, pavlinux (ok), 03:18, 25/05/2011 [^] [^^] [^^^] [ответить]  
  • +/
    404 - Not Found
     

  • 1.11, Евгений (??), 13:25, 29/01/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Куда засунуть лицензионный ключь*
     
  • 1.12, Светлана (??), 17:21, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Привет как дела?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру