Создание самоподписанного сертификата в OpenSSL для подписывания документов

OpenSSL slogan

  1. Найти, скачать и установить подходящий OpenSSL, начинать искать можно отсюда.
  2. Если при старте OpenSSL в консоли есть ошибка «Can't open config file /usr/local/ssl/openssl.cnf» необходимо создать системную переменную, например в cmd.exe так: set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg.
  3. Подменить дефолтный openssl.cnf на приложенный openssl.cfg.
  4. Выполнить в консоли OpenSSL команду: req -x509 -new -out server.crt -days 365


Приложенный openssl.conf:
openssl.conf

Ключевым местом для возможности подписывания документов в этом конфиге является строчка keyUsage = digitalSignature.

Связь сертификата с закрытым ключом

Необходимость связать сертификат с закрытым ключом возникает, например, при появлении сообщении об ошибке Cannot find the certificate and private key for decryption. (0x8009200B) в частности в браузерном плагине Crypto-Pro.

Цепочка создания закрытого ключа, запроса на подпись сертификата, сертификата и .p12-файла будет такой:

Для начала надо убедиться, что в openssl.cfg, в секции [ req ] добавлена строка req_extensions = v3_req, а в секции [ v3_req ] есть нужное нам расширение keyUsage = digitalSignature.

#Создание приватного ключа
openssl genrsa -des3 -out test.key 2048

#Удаление фразы пароля — опционально
openssl rsa -in test.key -out test.nopass.key

#Создание запроса на подпись сертификата для нашего ключа
openssl req -new -key test.nopass.key -out test.csr -config openssl.cfg

#Проверка подключения нужных расширений в запрос, в частности keyUsage = digitalSignature
openssl req -text -noout -in test.csr

#Генерация самоподписанного сертификата
openssl x509 -req -days 3650 -in test.csr -signkey test.nopass.key -out test.crt -extensions v3_req -extfile openssl.cfg

#Получение p12
openssl pkcs12 -export -in test.crt -inkey test.nopass.key -out test.p12

Ну и бонусная картинка, чтобы не ходить лишний раз в википедию за ответом на вопрос «что-такое OpenSSL» если вдруг позабылось:
OpenSSL slide

Комментариев: 2

  • 27.10.2014 мимокрок:

    еще тут можно сгенерировать сертификат www.cryptopro.ru/certsrv/certrqma.asp

  • 13.01.2015 aprogrammer:

    Спасибо за статью. Правда, еще можно немного добавить команд по генерации csr,key и crt в разных ситуациях (на лету без вопросом, с готовым ключом, с ключом без пароля, и тп.), как пишут здесь — sysadm.pp.ua/internet/pou...x-ssl-setup.html


Добавление комментария:

 css.php