7

Я запускаю эту команду на моем компьютере (версия Openssl: 1.0.1):

openssl pkcs8 -inform DER -in file.key -passin pass:12345678a -outform PEM -out key.pem

и я получил этот key.pem:

-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANCFPVXwO+6qQdOs
...
wVauPfh0cGEf1Kc=
-----END PRIVATE KEY-----

Но когда я запускаю ту же команду с моего сервера (версия Openssl: 0.9.8e-fips-rhel5), я получаю такой вывод:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDQhT1V8DvuqkHTrMPFUUAXUl0ihDGoiD86SqK8Z3n19yp1VrJf
...
zHY0343VXnpM2opKwG2E1zgfHfbcLMFWrj34dHBhH9Sn
-----END RSA PRIVATE KEY-----

Внутри Base64 разные, а также заголовки:

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

Первый работает для меня, как я могу получить ----- BEGIN PRIVATE KEY ----- в версии 0.9.8?

Я нашел это в примечаниях к патчу OpenSsl:

Измените формат закрытого ключа по умолчанию на PKCS # 8.

так что это может быть главной проблемой, я надеюсь, что кто-то может помочь мне с этим, я не могу найти способ получить закрытый ключ, но не ключ BEGIN RSA PRIVATE KEY.

Спасибо

1 ответ1

22

Выполните openssl pkcs8 -topk8 чтобы преобразовать закрытый ключ из традиционного формата в формат pkcs # 8.

Этот формат

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

называется "формат SSLeay" или "традиционный формат" для закрытого ключа.

Я не уверен, в каком формате ваш ключ, поэтому я продемонстрирую идею с помощью закрытого ключа, сгенерированного genrsa . Когда вы делаете genrsa в OpenSSL 0.9.8x, сгенерированный ключ находится в традиционном формате. То есть после

openssl genrsa -out file.key 1024

вы получите ключ RSA в традиционном формате

-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQC3TyaSzsJO92/Ahq5rxRI1T0JSC0iF...
-----END RSA PRIVATE KEY-----

Затем выполните pkcs8 с -topk8 чтобы преобразовать этот ключ из традиционного формата в формат pkcs # 8.

openssl pkcs8 -topk8 -inform pem -in file.key -outform pem -nocrypt -out file.pem

Вот что вы получите:

-----BEGIN PRIVATE KEY-----
MIICdQIBADANBgkqhkiG9w0BA...
-----END PRIVATE KEY-----

Все вышеперечисленное сделано с помощью OpenSSL 0.9.8x. В нем рассказывается, как сгенерировать ключ формата PKCS # 8 из ключа традиционного формата. С другой стороны, вы всегда можете запустить это на OpenSSL 1.0.1, чтобы сделать ключ совместимым со старой версией:

openssl rsa -in file.pem -text > key.pem

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .