Как преобразовать закрытый ключ PEM в формате PKCS#8 в традиционный формат?
Из OpenSSL 1.0 журнал изменений:
Сделайте PKCS#8 форматом записи по умолчанию для закрытых ключей, заменив традиционный формат. Эта форма стандартизирована, более безопасна и не включает в себя неявную зависимость MD5. [Стив Хенсон]
Однако мне нужен файл закрытого ключа в предыдущем традиционном формате. Можно ли преобразовать файл pem из PKCS#8 в традиционный формат (с помощью приложения OpenSSL.exe)?
Большое спасибо!
3 ответа
Успешно решить это таким образом - запрос:
openssl req -configconfigfile.cfg -newkey rsa:2048 -keyout newkey.pem -out newreq.pem 365
Затем я преобразовал его в формат RSA:
openssl rsa -in newkey.pem -out newkey.pem
Надеюсь, что это кому-то поможет.
Использование Openssl 3.0: https://www.openssl.org/docs/man3.0/man1/openssl-pkey.html
Преобразование из PKCS#1 в PKCS#8:
$ cat pkcs1.pem
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
$ openssl pkey -in pkcs1.pem
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Преобразование из PKCS#8 в PKCS#1:
$ cat pkcs8.pem
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
$ openssl pkey -in pkcs8.pem -traditional
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
См /questions/34036365/razlichiya-mezhdu-begin-rsa-private-key-i-begin-private-key/34036387#34036387 для описания PKCS#1 и PKCS#8.
- закрытый ключ rsa
Чтобы преобразовать PKCS#1 в PKCS#8:
openssl pkcs8 -topk8 -inform pem -in private_pkcs1.pem -outform pem -nocrypt -out private_pkcs8.pem
Чтобы преобразовать PKCS#8 в PKCS#1:
openssl rsa -in private_pkcs8.pem -out private_pkcs1.pem
- открытый ключ rsa
Чтобы преобразовать PKCS#8 в PKCS#1:
openssl rsa -pubin -in public_pkcs8.pem -RSAPublicKey_out -out public_pkcs1.pem
Чтобы преобразовать PKCS#1 в PKCS#8:
openssl rsa -RSAPublicKey_in -in public_pkcs1.pem -pubout -out public_pkcs8.pem