web-dev-qa-db-fra.com

Création d'une clé privée RSA à partir d'un fichier PFX (PKCS # 12)

J'essaie d'obtenir une clé privée RSA à partir d'un fichier pkcs # 12.

J'ai essayé de faire fonctionner le standard

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

Cependant, cela donne un fichier clé comme celui ci-dessous:

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-----

Le serveur que je dois mettre dans canot ne peut gérer le fichier de clé, et lorsque je regarde les exemples de données, je vois un fichier comme ci-dessous

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

Et bien sûr, la clé est présente dans les deux fichiers. Cependant, il semble que le serveur accepte uniquement le fichier de clé privée RSA, et il me semble que le résultat obtenu est un fichier X509v3. ceci dans un fichier de clé privée RSA?

15
Dorana

Bien - utiliser un éditeur de texte pour supprimer les lignes incriminées peut être plus simple. Sinon, les attributs du sac ci-dessous seront nettoyés:

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

et peut également être utilisé pour obtenir der/net

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

ce qui peut être en fait le format que vous voulez. Il est cependant assez courant que les outils n'acceptent pas de mot de passe sans clé privée (et de nombreux outils échoueront en silence si le nombre de caractères n'est pas égal à 4 ou 6). Donc, dans ces cas, changez la queue pour:

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

Cela fonctionne pour moi:

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'
0
ceving

Sur Windows 7 64 bits, vous pouvez simplement utiliser votre commande. Mais dans Mac et Linux, vous devez suivre les étapes suivantes:

1, créez votre fichier pem:
openssl pkcs12 -in xxx.pfx -out xxx.pem

2, créez votre clé privée rsa:
openssl pkcs12 -in xxx.pfx -passin pass: yourpassword | openssl rsa -des3 -passout pass: yourpassowrd -out xxx.key

cette étape créera le fichier de clé avec le contenu: " ----- BEGIN RSA PRIVATE KEY ----- Proc-Type: 4, ENCRYPTED DEK- Info: DES-EDE3-CBC, 2CF27DD60B8BB3FF "

3, ouvrez votre fichier .pem et .key dans un éditeur de texte et remplacez la clé d'origine " ----- BEGIN ENCRYPTED PRIVATE KEY -----" dans le fichier .pem avec la clé rsa dans le fichier .key.

0
schumyxp