PKCS12 это специальный бинарный формат контейнера для хранения криптографических ключей. По сути, это такой зашифрованный архив.
Допустим у нас есть контейнер PKCS12 с сертификатом и приватным ключом — container.p12
Чтобы открыть этот контейнер потребуется ввести пароль — Enter Import Password:
Конвертация PKCS#12 в PEM
PEM это тоже формат контейнера криптографических ключей, только в текстовом виде.
openssl pkcs12 -in container.p12 -out cert-and-key.pem -nodes
Экспорт сертификата и ключа в отдельные файлы
openssl pkcs12 -in container.p12 -out public-crt.pem -clcerts -nokeys openssl pkcs12 -in container.p12 -out private-key.pem -nocerts -nodes
Теперь имеем два разных файла:
public-crt.pem
— публичный сертификатprivate-key.pem
— закрытый ключ в открытом виде (!)
Шифрование ключа при экспорте
Обратите внимание, параметр -nodes
обозначает "no DES"
, т.е. отключение шифрования ключа. Если его убрать, то будет запрошен пароль (pass phrase) для шифрования приватного ключа.
openssl pkcs12 -in container.p12 -out private-key.pem -nocerts
Пароль к контейнеру PKCS12 из командной строки
Если нужно сразу передать пароль к контейнеру, то добавьте параметр -passin
openssl pkcs12 -in container.p12 -out public.crt -clcerts -nokeys -passin 'pass:P@s5w0rD'