converti la chiave .p7b in una .pfx


10

Ho un certificato SSL in formato .p7b che devo convertire in .pfx. Se provo questo tramite la gestione dei certificati di Windows, l'opzione per esperti come .pfx è disabilitata.

Provando con openssl ho trovato i seguenti due comandi per eseguire la conversione:

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer

ma non sono sicuro di quale chiave utilizzare per il comando esecond o a quale certificato CACert.cer faccia riferimento.

Come posso convertire questa chiave in formato .pfx?

Risposte:


20

PKCS # 7 non include la parte privata (chiave) di una coppia certificato / chiave privata, ma viene comunemente utilizzata per la diffusione del certificato (ad es. Come risposta a una richiesta di certificato PKCS # 10, come mezzo per distribuire certificati S / MIME utilizzato per crittografare i messaggi o per convalidare i messaggi firmati ecc.). È importante ricordare che è solo per i certificati che sono per definizione articoli pubblici.

PKCS # 12 è un contenitore più universale: è destinato a memorizzare insieme la chiave privata e le parti del certificato pubblico in modo che possano essere spostate. Ha la capacità di essere protetto da password per fornire una certa protezione alle chiavi.

PFX era il predecessore di PKCS # 12.

Non è possibile (come sottolinea Anitak) convertire da PKCS # 7 a PKCS # 12 senza dati aggiuntivi (la parte della chiave privata) perché PKCS # 7 non ha tutti i dati.

Mark Sutton ha sottolineato perché non è possibile esportare come PFX: il certificato in questione ha la sua chiave privata contrassegnata come non esportabile. Il provider di servizi di crittografia (CSP) non consentirà lo spostamento di tale chiave, questo è intenzionale. L'unico modo * per ottenere una coppia cert \ chiave esportabile è se il certificato originale è stato emesso con il set di flag esportabile. È anche possibile che non ci sia una chiave privata associata al certificato, ma suppongo che non sia il caso qui.

C'è un buon riassunto dei vari tipi di PKCS su Wikipedia .

  • L'unico modo legittimo almeno. A seconda del CSP \ Crypto Hardware potrebbero esserci dei meccanismi, specialmente per i CSP solo software, ma questa è un'area per la ricerca di vulnerabilità della sicurezza solo per quanto mi riguarda, non per l'amministratore di sistema.

Grazie - sembra che l'acquisto di un nuovo certificato possa essere più economico del recupero, in base alla quantità di tempo che dovremo fare con una terza parte per farlo.
DrStalker,

12

Lo sottopongo ogni 2 anni (quando rinnovo un certificato di firma del codice) ed è sempre una seccatura.

Un'informazione chiave è che puoi semplicemente rinominare i file .p7b in .spc (come indicato qui: http://support.microsoft.com/kb/269395 ).

È quindi possibile utilizzare lo strumento pvk2pfx.exe per convertire PVK + SPC in un PFX.

pvk2pfx.exe -pvk input.pvk -pi <existing_input.pvk_password> -spc input.spc -pfx output.pfx -po <new_output.pfx_password>

(potresti essere in grado di saltare il passaggio di ridenominazione di p7b e utilizzarlo direttamente; non ho provato ...)


questo è molto più utile della risposta accettata. Sono stupito dallo stato del codice che firma assurdità. Rabbrividisco al pensiero di doverlo ripetere più volte alla scadenza dei certificati.
Tim

3

Con lo strumento Windows se l'opzione pfx è disabilitata significa che la chiave privata non può essere esportata dall'archivio locale. Ciò è dovuto al fatto che non è presente (perché le chiavi non sono state generate nella casella utilizzata) o perché quando le chiavi sono state generate la chiave privata non è stata contrassegnata come esportabile e il modello di certificato di Windows non è stato configurato per consentire l'esportazione.

Presumo che tu stia utilizzando un'autorità di certificazione Microsoft per emettere i tuoi certificati. È corretto?

In tal caso quindi: -

1.Accertarsi che il modello di certificato consenta l'esportazione di chiavi private.
2.Come stai generando la tua richiesta di certificato, puoi usare la seguente tecnica

CREARE il file INF come segue

[Versione]
Firma = "$ Windows NT $

[NewRequest]
Subject =" etc "
KeySpec = 1 Esportabile
= 1
MachineKeySet = TRUE
ProviderName =" CSPName "
ProviderType = 1

[RequestAttributes] CertificateTemplate =

NOTE the Exportable = 1
Quindi utilizzare i comandi fllowing al prompt dei comandi

certreq -new infile.inf reqfile.req // dove infile.inf è il file sopra e reqfile è il file di richiesta di output

certreq -submit -config \ reqfile.req // Invia la richiesta di cert all'autorità di certificazione Al

termine, essere in grado di esportare il certificato come pfx

In alternativa, vai a http://www.blacktipconsulting.com/Site/Products.html dove ho messo il mio strumento da riga di comando gratuito che fa tutto questo per te ed esporta il certificato come pfx una volta terminato


2

Come sottolineato da Helvick, la risposta di PKCS10 è PKCS7 e non contiene la chiave privata. Quindi durante la generazione del CSR dovresti aver generato il file privatekey.key. È possibile utilizzare i seguenti comandi. (So ​​che questa è una domanda di quattro anni, ma non ho potuto farlo mentre seguivo la discussione sulla pagina).

openssl pkcs7 -inform DER -in PK7BDownloadedArchive.p7b -text -print_certs -out intermediateCert.pem

openssl pkcs12 -export -in intermediateCert.pem -inkey privateKey.key -out FinalPKCS12Cert.p12

In bocca al lupo!

Saluti, JE


Potrebbe non essere necessario l' -informargomento.
mercoledì

1

Potrei sbagliarmi, ma penso che il tuo file PCKCS # 7 includa solo la metà pubblica del tuo certificato.

Il file PKCS # 12 dovrebbe avere entrambe le metà, quindi perché necessita -inkeydell'opzione.

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.