Как экспортировать закрытый ключ из цепочки сертификатов?

Как экспортировать закрытый ключ из цепочки сертификатов?

Я создаю хранилище ключей, и из этого хранилища ключей я генерирую файл CSR, и когда я получаю подписанный сертификат от CA, я импортирую корневой и промежуточный сертификаты в свое хранилище ключей и, наконец, свой подписанный сертификат. После добавления подписанного сертификата я получаю ответ "certificate response was installed in keystore". В этом формате я могу использовать свое хранилище ключей в Tomcat, однако для другого контейнера приложений мне нужен только закрытый ключ, содержащий файл в кодировке pem. И

keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs -srcstoretype JKS -deststoretype PKCS12

openssl pkcs12 -in server.pkcs -out server.pem

кажется, не работает. Я получаю pem-файл, который содержит только информацию о сертификате, а не закрытый ключ.

Так возможно ли экспортировать закрытый ключ после создания цепочки сертификатов? Если да, то как?

решение1

Использованная вами команда openssl pkcs12 также должна экспортировать закрытый ключ.

openssl pkcs12 -in server.pkcs -out server.pem

Я предполагаю, что входной файл p12 не содержит закрытого ключа.

Вы уверены, что при экспорте ключа из файла p12 нет какого-либо предупреждения?

Важно то, что, похоже, JKS поддерживает отдельный пароль ключа и пароль хранилища. При экспорте p12 из JKS может случиться так, что пароль для p12 будет отличаться от пароля для ключа. Похоже, что openssl это не поддерживает (только что попробовал) и приводит к ошибке «плохого дешифрования». Вам следует убедиться, что пароль ключа совпадает с паролем p12.

решение2

Экспорт закрытого ключа из цепочки сертификатов я использовал следующие запросы:

keytool -importkeystore -srckeystore server.jks -destkeystore server.pkcs 
-srcstoretype JKS -deststoretype PKCS12

openssl pkcs12 -in thekeystore.p12 -nocerts -nodes -out serverkey.pem

Единственное отличие — это добавление -nodes -nocertsпараметров, и это работает как часы, это также работает для самоподписанных сертификатов.

Связанный контент