OPENVPN - The Easy Tutorial - PKI

OpenVPN SSL & PKI
Last Update: Mar 05 2008


Tool
Install
Ergonomy
Forum



details Что такое OpenVPN?
Снимки экрана
Установка
Руководство по OpenVPN
-----SECURITY MODE-----------
Прозрачный туннель
Статический ключ
SSL & PKI (Сертификаты)
-----CASE STUDY-----------
IP VPN (TUN)
Ethernet VPN (TAP)
VPN Advanced Settings
----------------
Bridging
Routing

Russian translation by Sergiy Uvarov.




VENEZ VISITER NOTRE NOUVEAU SITE WEB SUR LES ACTIVITES A VISITER EN SUISSE ROMANDE.

HAVE A LOOK AT OUR NEW WEBSITE DEDICATED TO ACTIVITIES TO VISIT IN THE FRENCH PART OF SWITZERLAND



Инфраструктура Открытых Ключей (Public Key Infrastructure, PKI):

Задачей PKI является создание сертификатов, которые гарантируют что открытые ключи принадлежат указанным людям.

Идея::

Идея PKI (также известно как асимметричное шифрование) основана на том, что каждый узел имеет открытый и секретный ключ. SSL использует PKI для аутентификации OpenVPN узлов перед передачай шифрованный данных.

Секретные ключи и сертификаты:

Секретный ключ должен держаться в секрете, а открытый ключ должен распространяться через Сертификаты.
Цель сертификата заверить, что открытый ключ принадлежит тому кто утверждает, что это его ключ (т.е. владеет соответствующим секретным ключом).
Без сертификата вы не можете быть уверены, что открытый ключ соответствует тому кто владеет соответствующим секретным ключом.

Центр сертификации (Certification Authority, CA):

Для заверения подлинности сертификат подписывается организацией, которой все доверяют.
Некоторые организации такие как VeriSign и Comodo делают свой бизнес продавая такие сертификаты.
Возможно также создание своего CA во внутренней сети в целях тестирования. Это как раз то, что мы будет делать в нашем руководстве.

CA сертификат:

CA подписывает сертификаты своим секретным ключом и публикует свой открытый ключ в виде сертификата. CA сертификат подписывается собственным секретным ключом.

Например вы можете проверить CA сертификаты, также называемые корневыми сертификатами, в вашем веб браузере. (нажмите на ссылку для того, чтобы увидеть снимки экрана)
Opera 9:

FireFox 2:
IE 7:
 
Tools -> Preferences -> Advanced tab -> Security -> Manage certificates Authorities tab.
Tools -> Options -> Advanced -> View Certificates -> Authorities tab.
Tools -> Internet Options -> Content tab -> Encryption tab -> Certificates -> Trusted Root Certification Authorities.
Секретный ключ и создание сертификата:

В первую очередь клиент должен создать секретный ключ и файл для запроса сертификата использую RSA алгоритм. Этот файл необходимо отравить в Центр сертификации, который создаст сертификат и отправит его обратно клиенту.

В нашем случае, так как мы находимся в лаборатории, мы воспользуется более простым вариантом.
Секретный ключ клиента создается на компьютере который является Центром сертификации вместе с сертификатом. Клиенту не нужно посылать запрос на сертификат в CA.
Секретный ключ и сертификат копируются с CA компьютера на клиентский. Конечно же такой способ создания сертификатов должен использоваться только в целях тестирования.
Так как секретный ключ может быть перехвачен во время копирования.
В первом варианте описанном выше секретный ключ никогда не покидает компьютер клиента.

Использование асимметричных ключей:

На примере Элис и Боба покажем использование асимметричный ключей.

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

Создание разделяемого ключа используемого для симметричного шифрование
Элис использует свой секретный ключ и открытый ключ Боба для создания разделяемого ключа, который будет такой же как и у Боба созданного из его секретного ключа и открытого ключа Элис. Этот разделяемый ключ используется такими симметричными алгоритмами как DES или AES. Симметричные алгоритмы работают на много быстрее чем асимметричные.

Шифрование данных
Когда Элис хочет отправить шифрованные данные Бобу, она использует его сертификат для шифрования данных. Используя свой секретный ключ Боб сможет расшифровать данные. Так как секретный ключ известен только Бобу, то он будет единственным человеком, который сможет расшифровать данные.
Создание PKI:

OpenVPN предлагает набор скриптов основанных на OpenSSL для облегчения создания сертификатов и генерации ключей. Мы рассмотрим создание PKI на Linux и Windows платформах.

Для того чтобы узнать больше о OpenSSL смотрите сайт OpenSSL.

На Linux, скопируйте OpenVPN файлы в вашу директорию:

#cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /home/user/openvpn/ -R
#cd /home/user/openvpn/

Начнем создание PKI:

На Windows вам возможно понадобиться создать два файла:

C:\Program Files\OpenVPN\easy-rsa>init-config.bat
C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
The system cannot find the file specified.

C:\Program Files\OpenVPN\easy-rsa>copy openssl.cnf.sample openssl.cnf
1 file(s) copied.

Установим переменные:

Отредактируем "C:\Program Files\OpenVPN\easy-rsa\vars.bat" (Microsoft Windows) или "/home/user/openvpn/vars" (Linux) файл и установим переменные.

set KEY_COUNTRY=US
set KEY_PROVINCE=CA
set KEY_CITY=San Francisco
set KEY_ORG=OpenManiak
set KEY_EMAIL=webmaster@openvpntest.com


Инициализируем переменные:

C:\Program Files\OpenVPN\easy-rsa>vars
/home/user/openvpn/#. ./vars

Удалим старые ключи:

#clean-all.bat
/home/user/openvpn/#./clean-all
1 file(s) copied.
1 file(s) copied.

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

Создадим секретный ключ центра сертификации и сертификат. Сертификат включает в себя открытый ключ.

C:\Program Files\OpenVPN\easy-rsa>build-ca.bat
/home/user/openvpn/#./build-ca

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
...++++++
.........++++++
writing new private key to 'keys\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) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [OpenManiak]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
master-openmaniak
Email Address [TeddyBear@openvpntest.com]:

Будут созданы два файла:
секретный ключ центра сертификации и CA сертификат.
CA сертификат подписывается собственным секретным ключом и включает открытый ключ.

Создадим секретный ключ и сертификат для OpenVPN сервера.

C:\Program Files\OpenVPN\easy-rsa>build-key-server.bat server
/home/user/openvpn/#./build-key-server server

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
........................................................++++++
.........................++++++
writing new private key to 'keys\server.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) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [OpenManiak]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
server
Email Address [TeddyBear@openvpntest.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from openssl.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :PRINTABLE:'CA'
localityName :PRINTABLE:'SanFrancisco'
organizationName :PRINTABLE:'OpenManiak'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'TeddyBear@openvpntest.com'
Certificate is to be certified until Sep 6 17:36:18 2017 GMT (3650 days)
Sign the certificate? [y/n]:
y


1 out of 1 certificate requests certified, commit? [y/n]
y
Write out database with 1 new entries
Data Base Updated
Этот скрипт выполнить две openssl команды, первая создаст секретный ключ и файл запроса сертификата, а вторая создаст сертификат.

Создадим секретный ключ и сертификат для OpenVPN клиента.

C:\Program Files\OpenVPN\easy-rsa>build-key.bat client
/home/user/openvpn/#./build-key client

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
........................................................++++++
.........................++++++
writing new private key to 'keys\client.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) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [OpenManiak]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
client
Email Address [TeddyBear@openvpntest.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from openssl.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :PRINTABLE:'CA'
localityName :PRINTABLE:'SanFrancisco'
organizationName :PRINTABLE:'OpenManiak'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'TeddyBear@openvpntest.com'
Certificate is to be certified until Sep 6 17:36:18 2017 GMT (3650 days)
Sign the certificate? [y/n]:
y


1 out of 1 certificate requests certified, commit? [y/n]
y
Write out database with 1 new entries
Data Base Updated
Теперь мы имеем сертификаты и секретные ключи для OpenVPN сервера и клиента. Их необходимо скопировать на соответствующие OpenVPN узлы.

Очень важное замечание:

Как уже обсуждалось выше, мы использовали Центр Сертификации для создания секретных ключей и сертификатов. Эта процедура должна использоваться только в лабораторных условиях в виду того, что CA должен копировать секретный ключ клиенту.

Алгоритм Диффи-Хеллмана

Алгоритм Диффи-Хеллмана (Diffie- Hellman, DH) позволяет двум узлам получить общий секретный ключ используя незащищенный канал связи.

Давайте создадим настройки для алгоритма Диффи-Хеллмана.

C:\Program Files\OpenVPN\easy-rsa>build-dh.bat
/home/user/openvpn/#./build-dh

Loading 'screen' into random state - done
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................................................................
....+.................................................+..........
.....................+.....+......................+..............
.............................................+...................
.....+...........................................................
..............................................................+..
.................+............+............................+.....
.......+.....................................................+...
...+......+..+...........................+.........+...+.........
..............................++*++*++*

Настройка алгоритма DH нужна только для OpenVPN сервера, OpenVPN клиенты не нуждаются в настройке DH.

Top of the page





If you liked our tutorials, don't hesitate to support us and visit our sponsors!
Si vous aimez nos tutoriaux, n'hésitez pas à nous supporter et visiter nos sponsors!