Назад | Перейти на главную страницу

Всегда ли openssl шифрует закрытый ключ?

При использовании openssl 0.9.8 для создания нового самозаверяющего сертификата + ключа существует -nodes параметр, который можно использовать, чтобы указать openssl не шифровать создаваемый закрытый ключ. Например:

openssl req -x509 -nodes -days 365 \
    -subj '/C=US/ST=Florida/L=Jupiter/CN=test.com' \
    -newkey rsa:1024 -keyout mykey.pem -out mycert.pem

Но с новым openssl v1.0.1 кажется, что -nodes параметр игнорируется. Насколько я могу судить, закрытый ключ всегда зашифрован. Я неправильно использую openssl? Есть ли другой параметр, который я должен использовать вместо этого?

В -nodes Параметр задокументирован как означающий:

if this option is specified then if a private
key is created it will not be encrypted

Источник: http://www.openssl.org/docs/apps/req.html#item__nodes


Более подробная информация по запросу:

С openssl 0.9.8 ключ + сертификат можно напрямую импортировать на другие сторонние устройства, которые у нас есть, которые ожидают незашифрованные ключи и сертификаты. Это работает без проблем.

Но при использовании openssl 1.0.1 эти сторонние устройства жалуются, что ключ недействителен. Точное сообщение об ошибке:

ERROR: Private key for 'My Cert' does not appear to be a valid
RSA private key in PEM format.

Это система с закрытым исходным кодом, и она не предоставляет дополнительных сведений. Сегодня, играя с ним, я обнаружил, что я запускаю закрытый ключ v1.0.1 с помощью этой команды:

openssl rsa -in mykey.pem -out decryptedkey.pem

... то в этот момент у этой сторонней системы нет проблем с импортом сертификата и дешифрованного ключа. И когда я запускаю эту команду с ключом v1.0.1:

 openssl rsa -text -in mykey.pem

... текст закрытого ключа не такой, как в файле mykey.pem v1.0.1. Вот почему я подумал, что ключ каким-то образом зашифрован.

Похоже, что в более поздних версиях формат по умолчанию изменился. Более ранние версии, похоже, создают формат RSAPrivateKey PKCS # 1, как обозначено

-----BEGIN RSA PRIVATE KEY-----

а более поздние версии генерируют формат PKCS # 8 PrivateKeyInfo, как обозначено

-----BEGIN PRIVATE KEY-----

когда ты openssl rsa -in mykey.pem -out decryptedkey.pem вы конвертируете из #8 к #1