Это руководство проведет вас через извлечение информации из файла PKCS # 12 с помощью OpenSSL. PKCS # 12 (также известный как PKCS12 или PFX) - это двоичный формат для хранения цепочки сертификатов и закрытого ключа в одном зашифрованном файле. Файлы PKCS # 12 обычно используются для импорта и экспорта сертификатов и личных ключей на компьютерах с Windows и MacOS и обычно имеют расширения имени файла. .p12
or .pfx
.
Чтобы получить дополнительные полезные инструкции и последние новости о кибербезопасности, подпишитесь на информационный бюллетень SSL.com здесь:
Что такое OpenSSL?
OpenSSL - очень полезный набор инструментов командной строки с открытым исходным кодом для работы с X.509 сертификаты, запросы на подпись сертификатов (CSRs) и криптографические ключи. Если вы используете вариант UNIX, такой как Linux или macOS, OpenSSL, вероятно, уже установлен на вашем компьютере. Если вы хотите использовать OpenSSL в Windows, вы можете включить Подсистема Linux в Windows 10 или установить Cygwin, Вы также можете легко Создайте файл PKCS # 12 с openSSL.
SSL.com предоставляет широкий выбор SSL /TLS сертификаты сервера для сайтов HTTPS.
Видео
Во всех приведенных ниже примерах подставьте имена файлов, с которыми вы фактически работаете. INFILE.p12
, OUTFILE.crt
качества OUTFILE.key
.
Просмотр информации PKCS # 12 на экране
Чтобы вывести всю информацию из файла PKCS # 12 на экран в Формат PEM, используйте эту команду:
openssl pkcs12 -info -in INFILE.p12 -nodes
Затем вам будет предложено ввести пароль файла PKCS # 12:
Введите пароль для импорта:
Введите пароль, введенный при создании файла PKCS # 12, и нажмите enter
. OpenSSL выведет на экран все сертификаты и закрытые ключи из файла:
Атрибуты пакета localKeyID: AC 3E 77 9A 99 62 84 3D 77 CB 44 0D F9 78 57 7C 08 28 05 97 subject = / CN = Aaron Russell/emailAddress=*********@gmail.com эмитент = / C = US / ST = Texas / L = Houston / O = SSL Corp / CN = SSL.com Client Certificate Intermediate CA RSA R1 ----- BEGIN CERTIFICATE ----- MIIF1DCCA7ygAwIBAgIQcOrAJCMayJsZBKJsyz / aQDANBgkqhkiG9w0BAQsFADB + MQswCQYDVQQGEwJVUzEOMAwGA1UECAwFVGV4YXMxEDAOBgNVBAcMB0hvdXN0b24x ETAPBgNVBAoMCFNTTCBDb3JwMTowOAYDVQQDDDFTU0wuY29tIENsaWVudCBDZXJ0 ... bwK6ABAZUq6QcvhD0LYsXya + ncDCR6wxb9E0DWd4ATQMzxGTu / yE3kT + 9Ef6IY + n armh3HZUfan2Hb64YD0tjLMca / PC + sKAZu28gB / 3HQRHIFugvh6RO3bIoorl0jUg biMl1r2 -----
Зашифровать закрытый ключ
Если вы хотите зашифровать закрытый ключ и защитить его паролем перед выводом, просто опустите -nodes
флаг из команды:
openssl pkcs12 -info -in INFILE.p12
В этом случае вам будет предложено ввести и проверить новый пароль после того, как OpenSSL выдаст какие-либо сертификаты, а закрытый ключ будет зашифрован (обратите внимание, что текст ключа начинается с -----BEGIN ENCRYPTED PRIVATE KEY-----
):
Введите PEM фразу: контролирующая - Enter PEM фразу: ----- BEGIN зашифрованного Частного KEY ----- MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIGwhJIMXRiLQCAggA MBQGCCqGSIb3DQMHBAiXdeymTYuedgSCBMjwGg78PsqiNJLfpDFbMxL98u3tK9Cs ... SGVCCBj5vBpSbBXAGbOv74h4satKmAMgGc8SgU06geS9gFgt / wLwehMJ / H4BSmex 4S / 2tYzZrDBJkfH9JpggubYRTgwfAGY2BkX03dK2sqfu + QVTVTKMj2VI0sKcFfLZ BDW = ----- END зашифрованы ЧАСТНЫЙ КЛЮЧ -----
Извлечь только сертификаты или закрытый ключ
Если вы хотите вывести только закрытый ключ, добавьте -nocerts
в команду:
openssl pkcs12 -info -in INFILE.p12 -nodes -nocerts
Если вам нужны только сертификаты, используйте -nokeys
(и поскольку нас не интересует закрытый ключ, мы также можем спокойно опустить -nodes
):
openssl pkcs12 -info -in INFILE.p12 -nokeys
Сохранить сертификаты и личные ключи в файлы
Вы можете экспортировать сертификаты и закрытый ключ из файла PKCS # 12 и сохранить их в формате PEM в новый файл, указав выходное имя файла:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nodes
Вам снова будет предложено ввести пароль файла PKCS # 12. Как и раньше, вы можете зашифровать закрытый ключ, удалив -nodes
пометка из команды и / или добавление -nocerts
or -nokeys
выводить только закрытый ключ или сертификаты. Итак, для генерации файла закрытого ключа мы можем использовать эту команду:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.key -nodes -nocerts
И чтобы создать файл, включающий только сертификаты, используйте это:
openssl pkcs12 -in INFILE.p12 -out OUTFILE.crt -nokeys
Конвертировать закрытый ключ в формат PKCS # 1
Приведенные выше примеры выводят закрытый ключ в OpenSSL по умолчанию. PKCS # 8 формат. Если вы знаете, что вам нужно PKCS # 1 вместо этого вы можете передать вывод утилиты OpenSSL PKCS # 12 ее утилите RSA или EC в зависимости от типа ключа. Обе команды ниже выведут файл ключа в формате PKCS # 1:
RSA
openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl rsa -out OUTFILE.key
ECDSA
openssl pkcs12 -in INFILE.p12 -nodes -nocerts | openssl ec -out OUTFILE.key
Примечание: Вы можете увидеть разницу между файлами закрытого ключа PKCS # 8 и PKCS # 1, посмотрев на первую строку текста. В файлах PKCS # 1 будет указан алгоритм:
-----BEGIN RSA PRIVATE KEY-----
Файлы PKCS # 8 не показывают алгоритм, а также могут быть зашифрованы:
-----BEGIN PRIVATE KEY-----
or
-----BEGIN ENCRYPTED PRIVATE KEY-----