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

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

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

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

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

2 ответа2

0

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

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

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

Таким образом, единственное отличие заключается в добавлении параметров -nodes -nocerts , и это работает как шарм, это также работает для самозаверяющих сертификатов.

0

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

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

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

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

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

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