форумы  рассылка  download Перейти на новую версию сайта:
www.slackware.ru
Искать    где:    






    
slackware.ru > Дистрибутив > Установка и настройка > НАСТРОЙКА Certificate Authority (CA) И ГЕНЕРИРОВАНИЕ СЕРТИФИКАТОВ И КЛЮЧЕЙ ДЛЯ OpenVPN СЕРВЕРА И КЛИЕНТОВ. ID:4133
 
2009-07-14 hunter
НАСТРОЙКА Certificate Authority (CA) И ГЕНЕРИРОВАНИЕ СЕРТИФИКАТОВ И КЛЮЧЕЙ ДЛЯ OpenVPN СЕРВЕРА И КЛИЕНТОВ.
НАСТРОЙКА Certificate Authority (CA) И ГЕНЕРИРОВАНИЕ СЕРТИФИКАТОВ И
КЛЮЧЕЙ ДЛЯ OpenVPN СЕРВЕРА И КЛИЕНТОВ.

(Выборочный вольный перевод документации на OpenVPN)

ВВЕДЕНИЕ

Первый шаг в построении конфигурации OpenVPN 2.0 - создание PKI (public
key infrastructure)

PKI состоит из:

* отдельных сертификатов (также известых как public key или открытый
ключ) и private key (закрытый ключ, далее по тексту просто ключ) для
сервера и каждого из клиентов;

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

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

Оба. сервер и клиент, будут идентифицироваь друг друга сначала проверяя,
что сертификат был подписан главным сертификатом CA, а затем проверяя
информацию в заголовке только-что идентифицированного сертификата, такую,
как например, "Common Name" или "Type".

Данная модель безопасности имеет ряд хороших особенностей:

* серверу необходим только свой собственный сертификат/ключ - ему не
требуется знать сертификат каждого из клиентов, которые могут к нему
подключиться;

* сервер будет принимать только те сертификаты клиентов, которые были
подписаны главным сертификатом CA. А поскольку сервер может выполнить
проверку этой подписи без использования ключа CA, то возможно переместить
ключ CA (наиболее чувствительный ключ PKI) на другую машину, при этом
она может даже не иметь подключения к сети.

* если ключ скомпрометирован, то он может быть исключён путём внесения
его в CRL (certificate revocation list) - список аннулированных
сертификатов. CRL позволяет избирательно отвергать скомпрометированные
сертификаты без необходимости перестроения всей PKI;

* сервер может принудительно устанавливать права доступа каждому из
клиентов, основываясь на встроенных полях сертификата, например таких:
как Common Name.

ГЕНЕРИРОВАНИЕ ГЛАВНОГО СЕРТИФИКАТА И КЛЮЧА CA

В данном разделе будем генерировать главный сертификат/ключ CA,
сертификат/ключ сервера и сертификаты/ключи для 3-х клиентов.

Для управления PKI будем использовать скрипты, поставляемые вместе
с OpenVPN.

Переместимся в поддиректорию easy-rsa (в Slackware она размещается в
/usr/doc/openvpn-2.0*). Лучше всего скопировать данную поддиректорию
в другое место, например, в /etc/openvpn, тогда модернизация версии
(upgrade) OpenVPN не затронет сделанные изменения.

Теперь редактируем файл vars и обязательно устанавливаем нужные значения
для параметров KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG и KEY_EMAIL.

Далее инициализируем PKI:

# . ./vars
# ./clean-all
# ./build-ca

Последняя команда создает сертификат и ключ CA путём интерактивного
вызова команды openssl:

ai:easy-rsa # ./build-ca
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) [KG]:
State or Province Name (full name) [NA]:
Locality Name (eg, city) [BISHKEK]:
Organization Name (eg, company) [OpenVPN-TEST]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:OpenVPN-CA
Email Address [me@myhost.mydomain]:

Заметим, что в приведённой последовательности большая часть запрашиваемых
параметров по умолчанию устанавливается в значения взятые из файла
vars. Только один параметр должен быть введён явно - "Common Name",
двнном примере использован "OpenVPN-CA".

ГЕНЕРИРОВАНИЕ СЕРТИФИКАТА И КЛЮЧА ДЛЯ СЕРВЕРА.

Теперь сгенерируем сертификат и ключ сервера;

# ./build-key-server server

Как и в предыдущем случае большая часть параметров подставляется по
умолчанию. На запрос "Common Name" следует ввести server. Два последующих
запроса; "Sign the certificate? [y/n]" и "1 out of 1 certificate requests
certified, commit? [y/n]", требуют положительного ответа.

ГЕНЕРИРОВАНИЕ СЕРТИФИКАТОВ И КЛЮЧЕЙ ДЛЯ 3-Х КЛИЕНТОВ

Генерирование клиентских сертификатов очень похоже на предыдущие шаги;

# ./build-key client1
# ./build-key client2
# ./build-key client3

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

Важно помнить, что для каждого клиента необходимо вводить соответствующее
ему "Common Name", т.е. client1, client2 или client3. Всегда используйте
уникальное значение "Common Name" для каждого клиента.

ГЕНЕРИРОВАНИЕ ПАРАМЕТРОВ Diffie-Hellman

Для сервера OpenVPN должны быть сгенерированы параметры Diffie-Hellman
;

Вывод команды;

ai:easy-rsa # ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................+...........................................
...................+.............+.................+.........
......................................

ФАЙЛЫ КЛЮЧЕЙ

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

*Filename* *Needed By* *Purpose* *Secret*
ca.crt server + Root CA certificate NO
all clients
ca.key key signing Root CA key YES
machine only
dh{n}.pem server only Diffie Hellman NO
parameters
server.crt server only Server Certificate NO
server.key server only Server Key YES
client1.crt client1 only Client1 Certificate NO
client1.key client1 only Client1 Key YES
client2.crt client2 only Client2 Certificate NO
client2.key client2 only Client2 Key YES
client3.crt client3 only Client3 Certificate NO
client3.key client3 only Client3 Key YES

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



оставить комментарий
Как Вы оцениваете эту статью? 
коментарии к статье

 развернуть комментарии (всего 0,персональных 0)