Создание VPN (Сервер - сертификаты)

В наличии есть 2 домашние сети. В 1-ой трафиком управляет IBM совместимый ПК под управлением windows 2k3 (172.16.100.0/28), во 2-ой роутер asus wl500w с linux на борту (172.16.102.0/28). Нужно создать виртуальную частную сеть между указанными сетями.

В этой статье будет написана настройка серверной части, т.е. windows 2k3.
Качаем и устанавливаем дистрибутив: openvpn.net/index.php/open-source/downloads.html. Следующим шагом будет создание сертификатов и ключей.

Создание самоподписного доверенного сертификата (CA)


В командной строке выполнить

cd "путь к установленной OpenVPN"/OpenVPN/easy-rsa
Выполнить командный файл init-config. Далее редактируем vars.bat устанавливая значения для KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, и KEY_EMAIL. Эти параметры заполнять обязательно!

Затем выполняем в командной строке находясь в каталоге "путь к установленной OpenVPN"/OpenVPN/easy-rsa (инициализация PKI):

vars
clean-all
build-ca

Последняя команда (build-ca) создает certificate authority (CA) сертификат и ключ при помощи интерактивной openssl команды

Generating a 1024 bit RSA private key 
............++++++ 
...........++++++ 
writing new private key to 'ca.key' 
----- 
You are about to be asked to enter information that will be incorporated 
into your certificate request. 
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter '.', the field will be left blank. 
----- 
Country Name (2 letter code) [RU]: 
State or Province Name (full name) [MO]: 
Locality Name (eg, city) [Moskou]: 
Organization Name (eg, company) [SM8]: 
Organizational Unit Name (eg, section) []: 
Common Name (eg, your name or your server's hostname) []:magic-wand.ru 
Email Address [sm8-postbox@ya.ru]:
В приведенном выше коде многие параметры стоят по умолчанию, заданы они в файле vars.bat.

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


В командной строке выполнить находясь в каталоге "путь у устновленой OpenVPN"/OpenVPN/easy-rsa:

build-key-server server
Как и при создании (CA) сертификата, большинство параметров можно оставить по умолчанию. Когда запросит Common Name ввести "server". Два других вопроса требуют положительного ответа (Yes): "Sign the certificate? [y/n]" и "1 out of 1 certificate requests certified, commit? [y/n]".

Создание сертификата для клиента


Создание сертификата клиента похоже на предыдущие шаги. В командной строке выполнить находясь в каталоге "путь у устновленой OpenVPN"/OpenVPN/easy-rsa:

build-key client1
Если вы хотите защитить паролем ключи клиента, используйте скрипт build-key-pass.

При желании создать большее количество клиентов нужно учитывать что у каждого клиента должно быть свое Common Name, т.е. "client1", "client2", и "client3". Для каждого клиента всегда нужно использовать уникальное имя.

Создание файла параметров Диффи-Хэлмана

В командной строке выполнить находясь в каталоге "путь у устновленой OpenVPN"/OpenVPN/easy-rsa:

build-dh
При выполнении отобразится следующее в консоле:

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

Файлы ключей и сертификатов



Вновь созданные ключи и сертификаты находятся в каталоге keys OpenVPN. Окончательный шаг - копирование всех файлов на требуемые машины, при этом ключи желательно передавать по защищенному каналу или на внешнем насителе исключив возможность их перехвата третьими лицами.

Список файлов получившихся при генерации на 1-го клиента:
  1. ca.crt (Root CA certificate),  должен хранится на сервере и на всех клиантах
  2. ca.key (Root CA key), должен находится на подписывающей машине в данном случае на сервере
  3. dh{n}.pem (Diffie Hellman), должен хранится на сервере
  4. server.crt (сертификат), должен хранится на сервере
  5. server.key (ключ), должен хранится на сервере
  6. client1.crt (сертификат), должен хранится на client1
  7. client1.key (ключ), должен хранится на client1
Прочли: 7848 | Изменено: 11 ноября 2012 | Добавлено: 29 марта 2011 | На главную