Создание секретного ключа RSA из файла PFX (PKCS # 12)

Я пытаюсь получить частный ключ RSA из файла pkcs # 12.

Я попробовал запустить стандартный

openssl pkcs12 -nocerts -out priv.pem -in domain.com.pfx

Однако это приводит к ключевому файлу, подобному приведенному ниже:

Bag Attributes
Microsoft Local Key set: <No Values>
localKeyID: 01 00 00 00 
friendlyName: xxxxxxxx
Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
Key Attributes
X509v3 Key Usage: 10
-----BEGIN ENCRYPTED PRIVATE KEY-----

Сервер, который мне нужно поместить в canot, обрабатывает ключевой файл, и когда я смотрю на данные примеров, я вижу файл, как показано ниже

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,2CF27DD60B8BB3FF

И причина в том, что ключ присутствует в обоих файлах. Однако кажется, что сервер будет принимать только файл ключей RSA Private, и мне кажется, что вывод, который я получаю, представляет собой файл X509v3, любой знает, как получить это в файле ключей RSA Private?

Ответ 1

Хорошо - использование текстового редактора для удаления оскорбительных строк может быть проще всего. В противном случае ниже будут очищены атрибуты мешка:

openssl pkcs12 -in x.pfx  -nocerts -nodes -passin pass:123456 | openssl rsa -out privkey.pem

и может также использоваться для получения der/net

openssl pkcs12 -in x-fred.p12  -nocerts -nodes -passin pass: | openssl rsa -outform DER -out privkey.der

который может быть фактически форматом, который вы хотите. Достаточно часто для инструментов не принимать пароли менее закрытого ключа (и много инструментов будет тихо проваляться, если число символов не меньше 4 или 6). Поэтому в этих случаях хеддайн меняет:

.... | openssl rsa -passout pass:123456 -out privkey.pem
.... | openssl rsa -passout pass:123456 -out privkey.der -outform der

Ответ 2

В Windows 7 64bit вы можете просто использовать команду. Но в mac и linux вы должны сделать следующие шаги:

1, создайте свой файл pem:
openssl pkcs12 -in xxx.pfx -out xxx.pem

2, создайте свой закрытый ключ rsa:
openssl pkcs12 -in xxx.pfx -passin pass: yourpassword | openssl rsa -des3 -passout pass: yourpassowrd -out xxx.key

этот шаг создаст файл ключа с контентом: ----- НАЧАТЬ ЧАСТНЫЙ КЛЮЧ RSA ----- Proc-Type: 4, ENCRYPTED DEK-Info: DES-EDE3-CBC, 2CF27DD60B8BB3FF "

3, откройте файл .pem и .key в текстовом редакторе и замените исходный ключ "----- НАЧАТЬ ENCRYPTED PRIVATE KEY -----" в файле .pem с ключом rsa в файле .key.

Ответ 3

Это работает для меня:

openssl pkcs12 -in "$1" \
    -nocerts -nomacver \
    -passin file:<(cat "$pw") \
    -passout file:<(cat "$pw") |
sed -n '/^-----BEGIN ENCRYPTED PRIVATE KEY-----/,/^-----END ENCRYPTED PRIVATE KEY-----/p'