В сертификате openssl .p12 есть только одна из сцепленных данных сертификата .pem - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть два сертификата .p12, которые я преобразовал в файлы .pem с помощью этой команды:

openssl pkcs12 -in cert1.p12 -out cert1.pem -nodes

openssl pkcs12 -in cert2.p12 -out cert2.pem -nodes

Затем я скопировал два файла .pem в один файл .pem:

cat cert1.pem cert2.pem > combo.pem

Затем я преобразовал combo.pem в сертификат .p12:

openssl pkcs12 -export -in combo.pem -out combo.p12

Но когда я пошел проверить содержимое сертификата combo.p12, он имел информацию только для cert1.pem:

keytool -v -list -keystore combo.p12

Я хочу, чтобы в сертификате combo.p12 были оба сертификата .pem. Что я делаю не так?

1 Ответ

0 голосов
/ 18 сентября 2018

Для иллюстрации рассмотрим, что происходит при повторении эксперимента с использованием цепочки сертификатов 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

Я мог бы на самом деле задать другой ТАК вопрос об этом сам :-). Это важно для вашей ситуации или просто еще один шаг проверки?

...