Вводные данные.
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
Далее генерируем *.der и *.pfx
openssl x509 -in D:\openssl\key\prochor.crt -outform der -out D:\openssl\key\prochor.der
openssl pkcs12 -inkey D:\openssl\key\prochor.key -in D:\openssl\key\prochor.crt -export -out D:\openssl\key\prochor.pfx
Далее загружаем на аппаратный ключ сертификаты или просто импортируем.
Проверяем наличие через Панель управления Рутокен
Удачи всем!