Il formato predefinito di openssl pkcs8 fornisce RSA PRIVATE KEY


7

Sto eseguendo questo comando sul mio pc (versione Openssl: 1.0.1):

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

e ho questo key.pem:

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

Ma quando eseguo lo stesso comando dal mio server (versione Openssl: 0.9.8e-fips-rhel5) ottengo questo risultato:

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

Il Base64 all'interno è diverso e anche le intestazioni:

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

Il primo funziona per me, come posso ottenere l'output ----- BEGIN PRIVATE KEY ----- nella versione 0.9.8?

Ho trovato questo su note di patch OpenSsl:

Modifica il formato della chiave privata predefinita in PKCS # 8.

quindi, questo potrebbe essere il problema principale, spero che qualcuno possa aiutarmi con questo, non trovo il modo di ottenere la chiave privata ma non quella PRINCIPALE PRINCIPALE di RSI BEGIN.

Grazie


Risposte:


22

Fare openssl pkcs8 -topk8 convertire una chiave privata dal formato tradizionale in formato pkcs # 8.

Questo formato

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

è indicato come "SSLeay format" o "traditional format" per la chiave privata.

Non sono sicuro di quale sia la tua chiave, quindi dimostrerò l'idea con una chiave privata generata da genrsa. Quando lo fai genrsa in OpenSSL 0.9.8x, la chiave generata è in formato tradizionale. Cioè, dopo

openssl genrsa -out file.key 1024

otterrai una chiave rsa nel formato tradizionale

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

Quindi fa pkcs8 con -topk8 per convertire questa chiave dal formato tradizionale al formato pkcs # 8.

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

Ecco cosa otterrai:

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

Tutto quanto sopra è fatto con OpenSSL 0.9.8x. Ti dice come generare la chiave di formato PKCS # 8 dalla chiave di formato tradizionale. D'altra parte, è sempre possibile eseguirlo su OpenSSL 1.0.1 per rendere la chiave compatibile con la versione precedente:

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

grazie, ha funzionato per me, ho aggiunto il secondo proc e ora funziona
Logan

Sull'ultimo oggetto -text non è necessario; appena letto openssl rsa e scrive produce il formato "legacy" (PKCS # 1) come richiesto. -text aggiunge commenti leggibili dall'uomo che possono essere utili in alcuni casi, ma non sono nell'output precedentemente prodotto da pkcs8 (from8) come richiesto dalla domanda.
dave_thompson_085

Solo per completezza, -----BEGIN RSA PRIVATE KEY----- è una codifica PKCS # 1 in cui i dati non includono il tipo di chiave. PKCS # 8 può codificare qualsiasi tipo di chiave, ma PKCS # 1 non include il tipo di chiave, quindi l'intestazione del testo indica il tipo di chiave.
Lawrence Dol
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.