web-dev-qa-db-fra.com

Le format par défaut de Openssl pkcs8 donne la clé privée RSA

J'exécute cette commande sur mon ordinateur (Openssl version: 1.0.1):

openssl pkcs8 -inform DER -in file.key -passin pass:12345678a -outform PEM -out key.pem

et j'ai eu ce key.pem:

-----BEGIN PRIVATE KEY-----
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANCFPVXwO+6qQdOs
...
wVauPfh0cGEf1Kc=
-----END PRIVATE KEY-----

Mais quand je lance la même commande depuis mon serveur (version Openssl: 0.9.8e-fips-rhel5), j’obtiens cette sortie:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDQhT1V8DvuqkHTrMPFUUAXUl0ihDGoiD86SqK8Z3n19yp1VrJf
...
zHY0343VXnpM2opKwG2E1zgfHfbcLMFWrj34dHBhH9Sn
-----END RSA PRIVATE KEY-----

L'intérieur de Base64 est différent et aussi les en-têtes:

-----BEGIN PRIVATE KEY-----
-----BEGIN RSA PRIVATE KEY-----

Le premier fonctionne pour moi, comment puis-je obtenir la ----- BEGIN PRIVATE KEY ----- sur la version 0.9.8?

J'ai trouvé cela sur les notes de correctif OpenSsl:

Changez le format de clé privée par défaut en PKCS # 8.

donc, cela pourrait être le problème principal, j'espère que quelqu'un pourra m'aider avec cela, je ne trouve pas le moyen d'obtenir la clé privée, mais pas celle de BEGIN RSA PRIVATE KEY.

Merci

9
Logan

Faites openssl pkcs8 -topk8 pour convertir une clé privée du format traditionnel au format pkcs # 8.

Ce format

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

est appelé "format SSLeay" ou "format traditionnel" pour clé privée.

Je ne suis pas sûr du format de votre clé. Je vais donc démontrer l'idée avec une clé privée générée par genrsa. Lorsque vous faites genrsa dans OpenSSL 0.9.8x, la clé générée est au format traditionnel. C'est, après

openssl genrsa -out file.key 1024

vous obtiendrez une clé RSA au format traditionnel

-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQC3TyaSzsJO92/Ahq5rxRI1T0JSC0iF...
-----END RSA PRIVATE KEY-----

Ensuite, faites pkcs8 avec -topk8 pour convertir cette clé du format traditionnel au format pkcs # 8.

openssl pkcs8 -topk8 -inform pem -in file.key -outform pem -nocrypt -out file.pem

Voici ce que vous obtiendrez:

-----BEGIN PRIVATE KEY-----
MIICdQIBADANBgkqhkiG9w0BA...
-----END PRIVATE KEY-----

Toutes les opérations ci-dessus sont effectuées avec OpenSSL 0.9.8x. Il vous explique comment générer une clé de format PKCS # 8 à partir de la clé de format traditionnelle. D'autre part, vous pouvez toujours l'exécuter sur OpenSSL 1.0.1 pour rendre la clé compatible avec l'ancienne version:

openssl rsa -in file.pem -text > key.pem
24
ChiaraHsieh