![Как экспортировать закрытый ключ из цепочки сертификатов?](https://rvso.com/image/1414689/%D0%9A%D0%B0%D0%BA%20%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B7%D0%B0%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%B9%20%D0%BA%D0%BB%D1%8E%D1%87%20%D0%B8%D0%B7%20%D1%86%D0%B5%D0%BF%D0%BE%D1%87%D0%BA%D0%B8%20%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D0%B2%3F.png)
Я создаю хранилище ключей, и из этого хранилища ключей я генерирую файл 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
параметров, и это работает как часы, это также работает для самоподписанных сертификатов.