Создание самоподписных сертификатов

В этой статье я расскажу о пожалуй самом простом способе создания самодписных сертификатов, как сертификатов сервера так и сертификатов клиента.

Для чего такие сертификаты нужны? В основном мне требуются такие сертификаты для использования в различных VPN туннелях таких как IPSEC или OpenVPN, но использование PKI инфраструктуры (инфраструктуры открытых ключей) этим не ограничивается, подробнее о PKI можно узнать здесь.

В интернете существует масса статьей о том каким способом можно создать самоподписной сертификат, но все эти статьи сложны для запоминания и требуют знания аргументов openssl, а их там довольно много, пару раз пробовал, иногда получалось =) Но позже когда я стал изучать вопрос создания OpenVPN туннелей я открыл для себя более простой способ - с помощью утилит входящих в комплект OpenVPN, об этом и пойдёт речь ниже.

Итак сначала нам необходим скачать сам пакет, он находится на сайте OpenVPN.net в разделе community (community downloads). Для написания примера была использована Windows 8.1, но как вы понимаете аналогичные действия можно проделать на любой другой ОС Windows начиная с 2000.

 openvpn website

В моём случае это Windows Installer 64-bit (битность выбирайте в зависимости от вашей ОС).

Установка openvpn

Начинаем установку

Установка OpenVPN выбор компонентов

Если вы хотите установить OpenVPN только для создания самоподписных сертификатов то выбираем только те пункты которые отмечены на скриншоте выше, если же вам нужен будет и сам OpenVPN отмечайте все пункты.

OpenVPN EasyRsa

Заходим в папку с программой и находим там папку easy-rsa, поскольку мы будем тренироваться, да и вообще на будущее, рекомендую скопировать папку например в easy-rsa-название, в моём случае это будет easy-rsa-cmp.

Переходим в эту папку, там есть файл Readme в котором описано всё что нужно сделать, но ридми как водится у нас никто не читает, поэтому продолжу описание.

Для начала переименовываем файл vars.bat.sample в vars.bat и редактируем его (правой кнопкой мыши - изменить)

 Содержание файла примерно такое:

@echo off

rem тут мы прописываем адрес нашей папки, папку то мы скопировали set HOME=%ProgramFiles%\OpenVPN\easy-rsa-cmp set KEY_CONFIG=openssl-1.0.0.cnf set KEY_DIR=keys rem Если вы считаете себя параноиком значение можно увеличить до 2048 rem но это может вызвать уменьшение производительности set KEY_SIZE=1024 rem В этом блоке можно ничего и не менять, но я поменяю :)
rem Эта информация будет предлагаться для заполнения по умолчанию
set KEY_COUNTRY=RU set KEY_PROVINCE=KRD set KEY_CITY=Krasnodar set KEY_ORG=CMP rem тут в общем можно и свой емайл указать set KEY_EMAIL=support@cmp.local rem дальше ничего не меняем set KEY_CN=changeme set KEY_NAME=changeme set KEY_OU=changeme set PKCS11_MODULE_PATH=changeme set PKCS11_PIN=1234

Файл затем надо будет сохранить, если у вас включён UAC (а по умолчанию он включён) сначала сохраните файл на рабочий стол, а потом скопируйте его в папку easy-rsa-cmp

 

 на этом подготовительный этап завершён и мы приступаем к работе с батниками через командную строку.

cmd запуск от имени администратора

В windows с uac жмём пуск и набираем cmd далее правой кнопкой мышки и запустить от имени администратора, в появившемся окошке набираем cd "адрес нашей папки easy-rsa" если в адресе есть пробелы набираем адрес в двойных кавычках, если пробелов нет кавычек можно не ставить. В windows без uac или с выключенным uac пуск - выполнить - cmd (win+r - cmd). Для удобства адрес сначала можно скопировать в адресной строке проводника, и затем вставить. В моём случае команда выглядит как cd "C:\Program Files\OpenVPN\easy-rsa-cmp" жмём интер.

Затем набираем vars , жмём интер окно cmd не закрываем до полной генерации всех сертификатов.

Eсли же вдруг окно закрыли, то перед тем как продолжать что-либо не забывайте каждый раз набирать vars, эта команда выполняется каждый раз перед тем как вы захотите что-либо сделать, она задаёт переменные, которые сохраняются пока открыто окно командной строки

После выполнения команды vars набираем clean-all и опять таки интер.

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

cmd easy rsa

следующий этап создание - Root CA

набираем build-ca и жмём интер, отвечаем на вопросы и переходим к созданию сертификата для сервера

команда build-key-server имя_сертификата и снова отвечаем на вопросы, обращаю внимание что поле commonName должно быть уникальным и не совпадать не с одним другим сертификатом.

Следующий шаг создание сертификата клиента

команда build-key имя_сертификата и отвечаем на вопросы, не забываем про уникальность commonName.

Вот и всё. Созданные сертификаты и ключи к ним лежат в папке keys.

ca.crt - открытый сертификат Root CA, можно распространять свободно.
ca.key - закрытый ключ сертификата.

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

 

test-server.crt - открытый сертификат сервера
test-server.key - закрытый ключ сервера

test-client.crt - открытый сертификат клиента
test-client.key - закрытый ключ клиента

Остальные файлы интереса особого для нас не представляют.

На этом всё, как обычно вопросы и пожелания можно оставлять в комментариях ниже.

Zo2 Framework Settings

Select one of sample color schemes

Google Font

Menu Font
Body Font
Heading Font

Body

Background Color
Text Color
Link Color
Background Image

Header Wrapper

Background Color
Modules Title
Text Color
Link Color
Background Image
Background Color
Modules Title
Text Color
Link Color
Background Image
 
Top of Page