Само подписанный сертификат на Рутокен ЭЦП 2.0

Вводные данные.
OpenSSL установлен в D:\openssl

Для правильной работы используйте свои названия файлов для сертификатов.

Для устанвки вайла конфигурации в вести команду

WIN+R CMD ENTER

set OPENSSL_CONF=D:\openssl\openssl.cfg

cd D:\openssl

Для начала создаем приватный ключ для корневого сертификата:
openssl genrsa -out D:\openssl\key\rootca.key 2048

Потом на основе этого ключа создаем корневой сертификат, действующий 50 лет:
openssl req -x509 -new -nodes -key D:\openssl\key\rootca.key -days 18250 -out D:\openssl\key\rootca.crt

В интерактивном меню вас попросят ввести двухбуквенный код страны, провинцию, город, организацию, подразделение, Common Name и e-mail адрес. Нужно заполнить все поля на свое усмотрение.

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Теперь нужно создать другой сертификат, подписанный корневым сертификатом.

Создаем еще один ключ:

openssl genrsa -out D:\openssl\key\prochor.key 2048

Создаем запрос на подпись:
В интерактивном меню вам потребуется ответить на те же вопросы, что и при создании корневого сертификата. Нужно, чтобы введенный вами Common Name отличался от Common Name у корневого сертификата, это важно!

openssl req -new -key D:\openssl\key\prochor.key -out D:\openssl\key\prochor.csr

Теперь подписываем этот запрос корневым сертификатом:

openssl x509 -req -in D:\openssl\key\prochor.csr -CA D:\openssl\key\rootca.crt -CAkey D:\openssl\key\rootca.key -CAcreateserial -out D:\openssl\key\prochor.crt -days 18250

На всякий случай можно проверить, что подписано все правильно:

openssl verify -CAfile D:\openssl\key\rootca.crt D:\openssl\key\rootca.crt
openssl verify -CAfile D:\openssl\key\rootca.crt D:\openssl\key\prochor.crt
openssl verify -CAfile D:\openssl\key\prochor.crt D:\openssl\key\prochor.crt

Первая команда должна вернуть OK, потому что корневой сертификат — самоподписанный.

Вторая команда должна вернуть ОК, потому что prochor.crt подписан корневым сертификатом.

Последняя команда должна вернуть ошибку, потому что prochor.crt не является самоподписанным. Если последняя команда возвращает OK, значит что-то пошло не так. В моем случае для исправления нужно было всего лишь сделать Common Name у обоих сертификатов различающимся.

И напоследок, нам еще понадобится DH-параметры, которые нужны для Протокола Диффи — Хеллмана, нужно их сгенерировать. Генерация займет некоторое время:

openssl dhparam -out D:\openssl\key\dh2048.pem 2048

Далее загружаем на аппаратный ключ сертификаты.

Проверяем наличие через Панель управления Рутокен

Удачи всем!