В этой статье я расскажу о пожалуй самом простом способе создания самоподписных сертификатов, как сертификатов сервера так и сертификатов клиента.
Для чего такие сертификаты нужны? В основном мне требуются такие сертификаты для использования в различных VPN туннелях таких как IPSEC или OpenVPN, но использование PKI инфраструктуры (инфраструктуры открытых ключей) этим не ограничивается, подробнее о PKI можно узнать здесь.
В интернете существует масса статьей о том каким способом можно создать самоподписной сертификат, но все эти статьи сложны для запоминания и требуют знания аргументов openssl, а их там довольно много, я пару раз пробовал, иногда получалось =) Но позже когда я стал изучать вопрос создания OpenVPN туннелей я открыл для себя более простой способ — с помощью утилит входящих в комплект OpenVPN, об этом и пойдёт речь ниже.
установка необходимого по
Итак сначала нам необходим скачать сам пакет, он находится на сайте OpenVPN.net в разделе community (community downloads). Для написания примера была использована Windows 8.1, но как вы понимаете аналогичные действия можно проделать на любой другой ОС Windows начиная с 2000.
в моём случае это Windows Installer 64-bit (битность выбирайте в зависимости от вашей ОС).
Если вы хотите установить OpenVPN только для создания самоподписных сертификатов то выбираем только те пункты которые отмечены на скриншоте выше, если же вам нужен будет и сам OpenVPN отмечайте все пункты.
подготовка
Заходим в папку с программой и находим там папку easy-rsa, поскольку мы будем тренироваться, да и вообще на будущее, рекомендую скопировать папку например в easy-rsa-название, в моём случае это будет easy-rsa-cmp.
Переходим в эту папку, там есть файл Readme в котором описано всё что нужно сделать, но ридми как водится у нас никто не читает, поэтому продолжу описание.
Для начала переименовываем файл vars.bat.sample в vars.bat и редактируем его (правой кнопкой мыши — изменить)
Содержание файла примерно следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
@echo off rem Edit this variable to point to rem the openssl.cnf file included rem with easy-rsa. rem Automatically set PATH to openssl.exe FOR /F "tokens=2*" %%a IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN"') DO set "PATH=%PATH%;%%b\bin" rem Alternatively define the PATH to openssl.exe manually rem set "PATH=%PATH%;C:\Program Files\OpenVPN\bin" rem тут мы прописываем адрес нашей папки, папку то мы скопировали set HOME=%ProgramFiles%\OpenVPN\easy-rsa-cmp set KEY_CONFIG=openssl-1.0.0.cnf set KEY_DIR=keys set DH_KEY_SIZE=2048 rem Private key size set KEY_SIZE=4096 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 не закрываем до полной генерации всех сертификатов.
После выполнения команды vars набираем clean-all и опять таки интер.
следующий этап создание — Root CA
набираем build-ca и жмём интер, отвечаем на вопросы и переходим к созданию сертификата для сервера
командой, исполняемой программой или пакетным файлом.
В vars.bat пишем rem вначале строки 7 и удаляем rem вначале строки 10. Запускаем vars.bat ещё раз.
команда build-key-server имя_сертификата и снова отвечаем на вопросы. Обращаю внимание что поле commonName должно быть уникальным и не совпадать не с одним другим сертификатом.
Следующий шаг создание сертификата клиента
команда build-key имя_сертификата и отвечаем на вопросы
the end
Вот и всё. Созданные сертификаты и ключи к ним лежат в папке keys.
ca.crt — открытый сертификат Root CA, можно распространять свободно.
ca.key — закрытый ключ сертификата.
test-server.crt — открытый сертификат сервера;
test-server.key — закрытый ключ сервера;
test-client.crt — открытый сертификат клиента;
test-client.key — закрытый ключ клиента.
Остальные файлы интереса особого для нас не представляют.
На этом всё, как обычно вопросы и пожелания можно оставлять в комментариях ниже.