Вот мы и добрались до создания самоподписанных сертификатов.
Где применяются самоподписанные сертификаты? Конечно, с самоподписанным сертификатом вы не сможете зарегистрироваться на сайте Госуслуг или подать подписанную декларацию в ФНС. Но для внутрикорпоративного документооборота их вполне можно использовать. Можно также использовать их для защиты личной почтовой переписки, в VPN-сетях и т.п. Но наиболее часто используют самоподписанные SSL-сертификаты для обеспечения защищенного доступа по https-протоколу к Web-приложениям. Самым популярным средством для создания самоподписанных сертификатов остается OpenSSL. Процедура получения SSL-сертификатов с помощью того же OpenSSL хороша описана здесь. Но там вы не найдете упоминая о ГОСТ-овых сертификатах, о токенах PKCS#11 и т.п. Здесь мы рассмотрим простой графический интерфейс, который позволяет получать сертификаты на базе ГОСТ Р 34.10-2012 и без всякого использования OpenSSL.
Саму утилиту cryptoarmpkcs можно получить здесь

Итак, нажимаем кнопку «Самоподписанный сертификат»:



Как видим, эта вкладка мало чем отличается от аналогичной вкладки при создании запроса на сертификат. Здесь появились кнопки выбора типа генерируемого сертификата «Тип сертификата»:
— пользовательский сертификат (кнопка User);
— корневой сертификат (кнопка CA);
— SSL-сертификат (кнопка SSL).
Естественно, начинать работу надо с выпуска корневого сертификата, на базе которого затем будут выпускаться все остальные сертификаты. При создании корневого сертификата не забудьте включить флажок «Подпись сертификата» в назначении (использование) ключа:



Опускаем заполнение основных полей сертификата, они ничем не отличаются от заполнения аналогичных полей для запроса, а сразу переходим к завершающим страницам. Вот первая из них:



На этой странице необходимо выбрать папку, в которой будет сохранен корневой сертификат и его закрытый ключ. Именно эту папку затем необходимо будет указывать при выпуске других сертификатов. Необходимо также определить срок действия сертификата. Можно задать также точку, в которой можно будет получить корневой сертификат. При выпуске сертификат и закрытый ключ будут упакованы в так многими любимый защищенный контейнер PKCS#12. В связи с этим необходимо задать пароль для контейнера. В итоге, после нажатия кнопки «Finish», будет получен корневой сертификат:



При выпуске сертификата мы получаем четыре файла в указанном каталоге:
  • rootCA.cer с самим сертификатом в формате (PEM/DER), который выбрали;
  • rootCA.csr с запросом на сертификат;
  • кootCA.pfx защищенный на пароле контейнер PKCS#12 с сертификатом и закрытым ключом;
  • rootCA.key с закрытым ключом в формате (PEM/DER), который выбрали.

Файл rootCA.key, если вы не собираетесь его использовать, лучше сразу уничтожить. В противном случае храните его в месте, недоступном другим людям. Также скрывайте от посторонних глаз пароль к контейнеру rooCA.pfx.
Теперь, когда мы имеем корневой сертификат, можно приступить к выпуску пользовательских сертификатов, включая SSL-сертификаты:



После выбора типа сертификата (SSL-сертификат), типа ключа, его параметров и как он (ключ) будет использоваться, переходим к следующей странице:



На этой странице задается основное имя домена, которое будет занесено в поле Common Name, а также можно задать дополнительные (альтернативные ) имена вашего домена. Также можно прописать IP-адреса, где может располагаться ваш домен. Все это делается ради "вожделенного зеленого замочка".
Разобравшись с доменами, IP-адресами переходим к следующим вкладкам. Там все как обычно. Единственное отличие состоит в том, что после нажатия кнопки «Finish» будет затребован пароль к корневому контейнеру rootCA.pfx:



После успешного ввода пароля также получим четыре файла:



Все замечания, касающиеся пароля и закрытого ключа, высказанные выше применительно к корневому сертификату, относятся и к остальным сертификатом. Все сертификаты мы выпустили. Что дальше?
Использовать их. Если это пользовательские сертификаты, то вы их можете использовать в этой же утилите через контейнеры PKCS#12, в документообороте для подписания документов, например:



Что касается SSL-сертификатов, то их надо использовать по назначению для организации защищенного канала с Web-приложением. В качестве такого приложения мы взяли УЦ, на котором доступ к его ресурсам для администраторов организован по ГОСТ-вому https. УЦ развернуто на базе Apache2-2.4.10 с модулем mod_ssl, который поддерживает российские шифрсьюты. На сервере (у нас это Linux) кладем полученный SSL-сертификат (<ваш каталог>/self_xxx.cer) и его закрытый ключ (<ваш каталог>/sel_xxx.key) в папку /etc/ssl и прописываем пути к ним в файле /etc/apache2/sites-available/default-ssl:
...
SSLCertificateFile <ваш каталог>/self_xxx.cer
SSLCertificateKeyFile <ваш каталог>/self_xxx.key
....

Перезапускаем apache2:
#service pache2 restart
#

На рабочем месте (у меня это Linux) в браузере с поддержкой российской криптографии устанавливаем наш корневой сертификат (<ваш каталог>/rootCA.cer) с указанием доверия к нему. На рабочем компьютере в файл /etc/hosts добавляем следующую строку:
192.168.0.233 www.shield-ra.ru shield-ra.ru shield-ra


и идем по одному из этих адресов:



Горит, горит «вожделенный зеленый замочек».
Проверим и остальные адреса:



Зелено вокруг. И наконец, посмотрим какой шифрсьют мы задействовали:



Для создания самоподписанных сертификатов по созданным ранее запросам на сертификат расширен функционал страницы «Просмотр запроса/сертификата»:



Как видно из скриншота, теперь можно не только просмотреть запрос, но и выдать по нему сертификат. В качестве корневого сертификата используется все тот же контейнер rootCA.pfx. При нажатии кнопки «Выпуск» появится окно с запросом, просмотрев который вы можете нажать кнопку «Выпуск сертификата»:



После нажатия кнопки будет запрошен пароль к корневому контейнеру и в итоге выпущен сертификат:



Кстати, просмотреть полученный сертификат можно на этой же странице (кнопка «Файл сертификата»).
Итак, наша криптографическая утилита cryptoarmpkcs позволяет:
— работать с токенами PKCS#11 с поддержкой российской криптографии;
— создавать запросы на сертификаты;
— создавать и проверять электронную подпись (вплоть до CAdes XLT1) с использованием токенов PKCS#11;
— создавать электронную подпись (вплоть до CAdes XLT1) с использованием контейнеров PKCS#12;
— выпускать самоподписанные сертификаты;
— просматривать сертификаты и запросы.
Наверное, что-то в ней не хватает, подскажите, учтем. Спасибо за долготерпение.

Комментарии (2)


  1. Alesh
    26.09.2019 15:04

    Мда, в Линукс версии вся бы статья уместилась бы в два абзаца и три строчки кода ;)


    1. saipr Автор
      26.09.2019 15:11

      Если не секрет, это как?