Вчера реших да си направя 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 комуникацияата, между сървъра и клиента/ите е готова. В следващият пост ще обясня за конфигурацията.
0 comments:
Post a Comment