9/14/2010

OpenVPN в кратки стъпки [1]

Вчера реших да си направя VPN между работната ми машина и тази в къщи. За целта избрах OpenVPN, защото подръжката му е прекрасна и Fedora го препоръчват. Ето в няколко стъпки как се конфигурира този страхотен софтуер.

1. Инсталираме openvpn пакета. В стандартната дистрибуция на Fedora 13 това става така:
# yum install openvpn
2. Създаваме директория, където ще се пазят инструментите за създаване на ключове и променливите.
# mkdir ~/easy-rsa
# mkdir ~/easy-rsa/keys

3. Копираме инструментите и някои стандартни файлове в директорията, която създадохме:
# cp /usr/share/openvpn/easy-rsa/2.0/* ~/easy-rsa
4. На този етап е хубаво да отворим файла vars за да променим аргументите на:
# cd ~/easy-rsa/
# cat vars

export KEY_COUNTRY=""
export KEY_PROVINCE=""
export KEY_CITY=""
export KEY_ORG=""
export KEY_EMAIL=""

/намират се най-долу на примерният файл/
5. Задаваме vars на обвивката за изпълнение:
# source vars
6. Почистваме за всеки случай:
# ./clean-all

=============================================

Така сме готови да създадем PKI (Public Key Infrastructure), която се състои от:

* отделен сертификат (публичен ключ) за сървъра и за всеки един клиент по отделно.
* главен Certificate Authority (CA) сертификат и ключ, с който се подписват всички други сертификати за сървъра и клиентите.

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

И клиента и сървъра трябва първо да удостоверят, че и двата ключа са подписани с CA сертификата на сървъра. След това се проверяват заглавните файлове за съответсвие на името и типа на сертификата.

Как да генерираме тези сертификати и ключове?

1. Влизаме в директорията, където преместихме инструментите по-горе
# cd ~/easy-rsa
След това изпълняваме скрипта, който ще генерира Certificate Authority (CA) сертификат:
# ./build-ca
Ще ви бъдат зададени, няколко въпроса. Хубаво е да отбележим, че този скрипт взима аргументите на променливите от файла vars, който променихме по-горе, като единственото по-различно е Common Name, което трябва да въведем сами. При мен използвах: lateralus

Country Name (2 letter code) [BG]:
State or Province Name (full name) [SF]:
Locality Name (eg, city) [SOFIA]:
Organization Name (eg, company) [OpenVPN]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []: lateralus
Email Address [me@myhost.mydomain]:


2. След това трябва да създадем сертификат и ключ за сървъра. За целта изпълняваме:

# ./build-key-server server

( На мястото на аргумента 'server' може да поставим каквото си поискаме ).
Повечето неща, може да ги пропусне, защото са по подразбиране. Единственото, което трябва да въведем сами е Common Name. Две функции, ще изискат потвърждение "Sign the certificate? [y/n]" и "1 out of 1 certificate requests certified, commit? [y/n]". Естествено потвърждаваме!

3. Следва да създадем сертификати и ключове за клиентите. Например за клиента homebox изпълняваме:

# ./build-key homebox

Ще ви бъдат зададени познатите въпроси, след което ще се генерират сертификат и ключ. Това трябва да се изпълни за всеки един клиент по-отделно като трябва да внимаваме да няма клиенти със едно и също име.

4. Генериране на Diffie-Hellman параметрите:

# ./build-dh

Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................+...........................................
...................+.............+.................+.........
......................................


С това работата ни по сертификатите и ключовете за удостоверяване на VPN комуникацияата, между сървъра и клиента/ите е готова. В следващият пост ще обясня за конфигурацията.

No comments:

Post a Comment