При использовании 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