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

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

Более простой способ, использовать Cert Manager в дистрибутиве Pfsense

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

установка необходимого по

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

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

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

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

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

подготовка

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

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

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

Содержание файла примерно следующее:

Файл затем надо будет сохранить, если у вас включён 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 выполняется всего один раз. Эта команда стирает папку с ключами и сертификатами и/или создаёт заново необходимые для генерации файлы. Поэтому рекомендую быть крайне внимательными к этой команде.

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

Если появляется ошибка «openssl» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
В vars.bat пишем rem вначале строки 7 и удаляем rem вначале строки 10. Запускаем vars.bat ещё раз.

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

Обратите внимание на поле commonName, это поле должно быть уникальным. Именно это поле определяет имя сертификата.

Следующий шаг создание сертификата клиента
команда build-key имя_сертификата и отвечаем на вопросы

build-key

the end

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

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

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


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

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

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

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

  • Виктор Горшков

    Спасибо, земляк. 😉

Комментарии для сайта Cackle