Для иллюстрации рассмотрим, что происходит при повторении эксперимента с использованием цепочки сертификатов StackExchange.com. Я скачал их с веб-сайта и преобразовал их в PEM и объединил их в один файл PEM, так же, как вы это сделали. Это называется SE.pem
. Затем, преобразовав их в PKCS#12
формат, можно получить:
$ openssl pkcs12 -export -in SE.pem -out SE.p12
unable to load private key
140736004633472:error:0906D06C:PEM routines:PEM_read_bio:no start line:crypto/pem/pem_lib.c:686:Expecting: ANY PRIVATE KEY
Вы не упомянули об этом. Дополнительный параметр, необходимый для работы без закрытых ключей: -nokeys
, например:
$ openssl pkcs12 -export -in SE.pem -out SE.p12 -nokeys
Enter Export Password:
Verifying - Enter Export Password:
Затем проверяем, что в результирующем файле .p12
есть все:
$ openssl pkcs12 -info -in SE.p12 | grep subject=
Enter Import Password:
MAC:sha1 Iteration 2048
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Certificate bag
Certificate bag
subject=/C=US/ST=NY/L=New York/O=Stack Exchange, Inc./CN=*.stackexchange.com
subject=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA
subject=/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
Мне не удалось выяснить, почему keytool
не перечисляет сертификаты должным образом, эти два инструмента, похоже, ожидают различного содержимого для пакета .p12
:
$ keytool -list -v -keystore SE.p12 -storetype pkcs12
Enter keystore password:
Keystore type: PKCS12
Keystore provider: SunJSSE
Your keystore contains 0 entries
Я мог бы на самом деле задать другой ТАК вопрос об этом сам :-). Это важно для вашей ситуации или просто еще один шаг проверки?