Come creare il file .pfx dal certificato e dalla chiave privata?


363

Ho bisogno del file .pfx per installare https sul sito Web su IIS.

Ho due file separati: certificato (.cer o pem) e chiave privata (.crt) ma IIS accetta solo file .pfx.

Ovviamente ho installato il certificato ed è disponibile in Gestione certificati (mmc) ma quando seleziono Esportazione guidata certificati non riesco a selezionare il formato PFX (è disattivato)

Ci sono strumenti per farlo o esempi C # di farlo programmaticamente?



1
vero, ma la sua risposta non è chiara e non risolve nulla nel mio caso
jlp

@alexl esiste la versione per Windows?
jlp,


Openssl è del tutto superfluo in quasi tutti i casi. Ho appena aggiunto la mia risposta (che creo un post di blog da fornire). L'ironia è che quando si genera il CSR come previsto, probabilmente non sarà nemmeno necessario il PFX.
Rainabba

Risposte:


554

Dovrai usare openssl.

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt

Il file chiave è solo un file di testo con la tua chiave privata al suo interno.

Se si dispone di una CA principale e certificati intermedi, includerli anche utilizzando più -inparametri

openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt

È possibile installare openssl da qui: openssl


11
"Il file chiave è solo un file di testo con la tua chiave privata al suo interno." Vero, tranne quando non lo è.
Casey,

37
Grazie, aggiungerò anche se hai una CA root o un certificato intermittente che puoi aggiungere fornendo il parametro -in multiple :openssl pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt -in intermediate.crt -in rootca.crt
gerrytan

10
Ha fatto il lavoro per me. Come nota minore, eseguirlo su un computer Windows richiede di eseguire openssl nel prompt dei comandi dell'amministratore.
Martin Costello,

13
Da dove prendi il file chiave? Ho emesso un certificato SSL, ma non vedo un file di chiavi da nessuna parte. Ho appena ricevuto un file p7b e un mucchio di file * .crt.
Knelis,

11
Per farlo funzionare su openssl 1.0.2m ho dovuto specificare -certfile intermediate.crt -certfile rootca.crtprima che mi venisse richiesto di proteggere il .pfxcon una passphrase / password. Credo che ciò sia dovuto al .keyfatto che il -infile non corrisponde ai file aggiuntivi risultanti nel messaggio di errore "Nessun certificato corrisponde alla chiave privata" che stavo ricevendo.
dragon788,

36

L'utilità della riga di comando di Microsoft Pvk2Pfx sembra avere le funzionalità necessarie:

Pvk2Pfx (Pvk2Pfx.exe) è uno strumento da riga di comando che copia le informazioni sulla chiave pubblica e sulla chiave privata contenute nei file .spc, .cer e .pvk in un file di scambio di informazioni personali (.pfx).
http://msdn.microsoft.com/en-us/library/windows/hardware/ff550672(v=vs.85).aspx

Nota: se hai bisogno / desideri / preferisci una soluzione C #, allora potresti prendere in considerazione l'utilizzo di http://www.bouncycastle.org/pi .


1
-spc argomento per il file .cer
BozoJoe

2
C: \ Programmi (x86) \ Windows Kits \ 10 \ bin \ 10.0.15063.0 \ x64 \ pvk2pfx.exe
Stefan Steiger

35

Se stai cercando una GUI di Windows, dai un'occhiata a DigiCert. L'ho appena usato ed era abbastanza semplice.

Nella scheda SSL, ho prima importato il certificato. Quindi, una volta selezionato il certificato, sono stato in grado di esportare come PFX, sia con che senza un file di chiavi.

https://www.digicert.com/util


15
Quando lo faccio, mi dice che non ho la chiave privata importata sul mio computer. Che è vero.
Niels Brinch,

6
@NielsBrinch Quando lo faccio, mi dice anche che non ho la chiave privata importata sul mio computer. Aspettatevi che sia falso, è nella stessa cartella del certificato ...
aBertrand,

@NielsBrinch Per risolvere questo problema, ho dovuto inviare nuovamente un nuovo CSR e quindi scaricare nuovamente il certificato quando è stato elaborato, la chiave privata è stata nascosta sul server / computer su cui è stato creato il CSR. Ciò ha risolto quel messaggio di errore.
Paddymac,

Posso consigliare DigiCert sulla base di diversi anni di esperienza con loro.
mmell

Non dimenticare di includere la chiave privata nella directory principale DigiCertUtil.exedell'eseguibile. Il più semplice è semplicemente copiarlo nella cartella del certificato.
Jonas il

32

NON è necessario openssl o makecert o niente del genere. Inoltre, non è necessaria la chiave personale fornita dalla CA. Posso quasi garantire che il problema è che ti aspetti di essere in grado di utilizzare la chiave e i file cer forniti dalla tua CA ma che non sono basati sul "metodo IIS". Sono così stanco di vedere informazioni brutte e difficili qui che ho deciso di blog l'argomento e la soluzione. Quando ti rendi conto di cosa sta succedendo e vedi quanto è facile, vorrai abbracciarmi :)

SSL Certs per IIS con PFX una volta per tutte - Spiegazione SSL e IIS - http://rainabba.blogspot.com/2014/03/ssl-certs-for-iis-with-pfx-once-and-for.html

Utilizzare l'interfaccia utente "Certificati server" di IIS per "Genera richiesta di certificato" (i dettagli di questa richiesta non rientrano nell'ambito di questo articolo ma tali dettagli sono fondamentali). Questo ti darà un CSR preparato per IIS. Quindi dai quel CSR alla tua CA e chiedi un certificato. Quindi prendi il file CER / CRT che ti danno, torna a IIS, "Richiesta di certificato completa" nello stesso posto in cui hai generato la richiesta. Potrebbe richiedere un .CER e potresti avere un .CRT. Sono la stessa cosa. Basta cambiare l'estensione o utilizzare il .elenco a discesa per selezionare il tuo .CRT. Ora fornisci un "nome descrittivo" corretto (* .yourdomain.com, yourdomain.com, foo.yourdomain.com, ecc.) QUESTO È IMPORTANTE! Questo DEVE corrispondere a ciò per cui hai impostato il CSR e a ciò che la tua CA ti ha fornito. Se hai richiesto un carattere jolly, la tua CA deve aver approvato e generato un carattere jolly e devi utilizzare lo stesso. Se il tuo CSR è stato generato per foo.yourdomain.com, DEVI fornire lo stesso in questo passaggio.


2
La domanda si è aperta con: "Ho bisogno del file .pfx per installare https sul sito Web su IIS."
Rainabba,

34
Puoi per favore inserire contenuti pertinenti del tuo post nella tua risposta per favore? In questo modo, la risposta è ancora pertinente anche se il tuo blog scompare. Puoi ancora collegarti al tuo blog. Così com'è, ci sono 0 informazioni utili nel contenuto della risposta.
Deanna,

16
Questo è il modo più semplice se stai richiedendo un nuovo certificato, tuttavia non funzionerà se hai già un certificato e / o una chiave privata (ad esempio uno che hai usato in precedenza con Apache) perché la richiesta di firma del certificato di IIS genererà un nuovo privato chiave. Trovo questo aspetto di IIS davvero fastidioso poiché tutto ciò che la "richiesta completa" sta facendo è combinare la chiave privata con il certificato pubblico per produrre un pfx, perché non potrebbe semplicemente accettarli come file separati in formato PEM che lo sa.
Chris Chilvers,

2
Mentre apprezzo che la tua soluzione sia molto probabilmente "il modo giusto di fare" le cose, penso che sia più sforzo che intromettersi con openssl: uno strumento, una chiamata da riga di comando, una password, fatto. Inoltre non so se tutte le società ssl supportano questo approccio.
Jan Bühler,

8
Temo che la tua risposta non sia di aiuto se il certificato è stato generato altrove. Va bene, IIS prevede di generare e aggrapparsi alla chiave privata stessa - a volte questa non è solo un'opzione.
staticsan

8

Ho creato il file .pfx dai file .key e .pem.

Come questo openssl pkcs12 -inkey rootCA.key -in rootCA.pem -export -out rootCA.pfx


1
Questo è fondamentalmente lo stesso comando che ho usato, ma dovevo aggiungere winpty prima di openssl (ad esempio, winpty openssl pkcs12 ....) durante l'utilizzo di Git bash, che è una soluzione comune per openssl su Windows.
smoore4,

Non avevo bisogno -exportdell'interruttore.
mmell

7

https://msdn.microsoft.com/en-us/library/ff699202.aspx

((le citazioni pertinenti dell'articolo sono di seguito))

Successivamente, è necessario creare il file .pfx che verrà utilizzato per firmare le distribuzioni. Aprire una finestra del prompt dei comandi e digitare il comando seguente:

PVK2PFX –pvk yourprivatekeyfile.pvk –spc yourcertfile.cer –pfx yourpfxfile.pfx –po yourpfxpassword

dove:

  • pvk - yourprivatekeyfile.pvk è il file della chiave privata creato nel passaggio 4.
  • spc - yourcertfile.cer è il file del certificato creato nel passaggio 4.
  • pfx - yourpfxfile.pfx è il nome del file .pfx che verrà creato.
  • po - yourpfxpassword è la password che si desidera assegnare al file .pfx. Ti verrà richiesta questa password quando aggiungi il file .pfx a un progetto in Visual Studio per la prima volta.

(Facoltativamente (e non per l'OP, ma per i futuri lettori), è possibile creare da zero il file .cer e .pvk) (lo si farebbe PRIMA di quanto sopra). Nota mm / gg / aaaa sono segnaposto per le date di inizio e fine. vedi l'articolo msdn per la documentazione completa.

makecert -sv yourprivatekeyfile.pvk -n "CN=My Certificate Name" yourcertfile.cer -b mm/dd/yyyy -e mm/dd/yyyy -r

6

Devi usare lo strumento makecert.

Apri un prompt dei comandi come amministratore e digita quanto segue:

makecert -sky exchange -r -n "CN=<CertificateName>" -pe -a sha1 -len 2048 -ss My "<CertificateName>.cer"

Dove <CertifcateName>= il nome del tuo certificato da creare.

Quindi puoi aprire lo snap-in Gestione certificati per la console di gestione digitando certmgr.msc nel menu Start, fai clic su personale> certificati> e il tuo certificato dovrebbe essere disponibile.

Ecco un articolo

https://azure.microsoft.com/documentation/articles/cloud-services-certs-create/


3
Non posso. Nella procedura guidata di esportazione l'opzione pfx è disattivata
jlp

il mio certificato è disponibile nel gestore certificato. Quello che non posso fare è esportare se in formato pfx. Cosa fanno le tue istruzioni da riga di comando?
jlp,

Prova a creare il certificato come consigliato e fammi sapere se funziona. Probabilmente ci vorranno 5 minuti. L'articolo collegato fornisce una spiegazione completa di ciò che sta succedendo.
BentOnCoding

Non è quello che sto cercando. Non voglio fare la certezza. me stessa. Ho acquistato cert dall'autorità cert in 2 file. Preferirei usare lo strumento OpenSSL
jlp

5

Ho un collegamento con le tue esigenze. Combina file CRT e KEY in un PFX con OpenSSL

Estratti dal link sopra:

Per prima cosa è necessario estrarre il certificato CA radice dal file .crt esistente, poiché è necessario in un secondo momento. Quindi apri il file .crt e fai clic sulla scheda Percorso certificazione.

Fai clic sul certificato più in alto (in questo caso VeriSign) e premi Visualizza certificato. Seleziona la scheda Dettagli e premi Copia su file ...

Selezionare il certificato X.509 (.CER) codificato Base-64 Salvarlo come rootca.cer o qualcosa di simile. Mettilo nella stessa cartella degli altri file.

Rinominalo da rootca.cer a rootca.crt Ora dovremmo avere 3 file nella nostra cartella da cui possiamo creare un file PFX.

Qui è dove abbiamo bisogno di OpenSSL. Possiamo scaricare e installarlo su Windows o semplicemente aprire il terminale su OSX.

MODIFICARE:

  1. Esiste un collegamento di supporto con informazioni dettagliate su come installare il certificato.

  2. Dopo aver installato correttamente, esportare il certificato, scegliere il .pfxformato, includere la chiave privata.

    Nota importante :: per esportare il certificato in formato .pfx è necessario seguire i passaggi sullo stesso computer da cui è stato richiesto il certificato .

  3. Il file importato può essere caricato sul server.


1
Puoi spiegare per favore? come hai creato esattamente il file PFX dal file CERT? Dove o come hai creato il file KEY, per favore tutti sono confusi.

3
Puoi gentilmente spiegare da qui come hanno ottenuto il file KEY? ad es .:openssl pkcs12 -inkey example.com.key -in example.com.crt -export -out example.com.pfx

5

Questo è di gran lunga il modo più semplice per convertire * .cer in file * .pfx:

Basta scaricare il convertitore di certificati portatile da DigiCert: https://www.digicert.com/util/pfx-certificate-management-utility-import-export-instructions.htm

Eseguilo, seleziona un file e ottieni il tuo * .pfx !!


Grande! Questo ha funzionato. Ho avuto il file .p7b. L'ho importato nel mio IIS usando le istruzioni fornite da GoDaddy. Quindi ha generato il file .cer (file chiave) e quindi ha utilizzato questa utility per ottenere il pfx.
Shiva Naru,

Lo strumento Digicert è di gran lunga il migliore.
L_7337,

1
Non riesco a vedere alcun modo di fare ciò che l'OP vuole fare usando questo strumento. Sembra consentire solo di esportare certificati, non di crearli da file key e cer.
NickG,

1
Probabilmente vale la pena ricordare che è prima necessario "installare" il certificato, quindi tornare alla scheda SSL ed "esportarlo" per ottenere il file pfx effettivo.
access_granted,

3

Quando si afferma che il certificato è disponibile in MMC, è disponibile in "Utente corrente" o "Computer locale"? Ho scoperto che posso esportare la chiave privata solo se si trova in Computer locale.

È possibile aggiungere lo snap-in per certificati a MMC e scegliere per quale account deve gestire i certificati. Scegli il computer locale. Se il certificato non è presente, importalo facendo clic con il pulsante destro del mouse sul negozio e selezionando Tutte le attività> Importa.

Passa ora al certificato importato nella versione Computer locale dello snap-in del certificato. Fai clic con il pulsante destro del mouse sul certificato e scegli Tutte le attività> Esporta. La seconda pagina della procedura guidata di esportazione dovrebbe chiedere se si desidera esportare la chiave privata. Seleziona Sì L'opzione PFX sarà ora l'unica disponibile (è disattivata se si seleziona no e l'opzione per esportare la chiave privata non è disponibile nell'account Utente corrente).

Ti verrà chiesto di impostare una password per il file PFX e quindi di impostare il nome del certificato.


1

Stavo avendo lo stesso problema. Il mio problema era che il computer che aveva generato la richiesta di certificato iniziale si era arrestato in modo anomalo prima che fosse completato il processo di convalida SSL esteso. Avevo bisogno di generare una nuova chiave privata e quindi importare il certificato aggiornato dal fornitore del certificato. Se la chiave privata non esiste sul tuo computer, non puoi esportare il certificato come pfx. L'opzione è disattivata.


1

Sebbene sia probabilmente più semplice generare un nuovo CSR usando IIS (come ha detto @rainabba), supponendo che tu abbia i certificati intermedi ci sono alcuni convertitori online là fuori - per esempio: https://www.sslshopper.com/ssl-converter. html

Ciò ti consentirà di creare un PFX dal tuo certificato e chiave privata senza dover installare un altro programma.


0

Nella maggior parte dei casi, se non si è in grado di esportare il certificato come PFX (inclusa la chiave privata) è perché MMC / IIS non riesce a trovare / non ha accesso alla chiave privata (utilizzata per generare il CSR). Questi sono i passaggi che ho seguito per risolvere questo problema:

  • Esegui MMC come amministratore
    • Genera CSR usando MMC. Seguire queste istruzioni per rendere esportabile il certificato.
  • Una volta ottenuto il certificato dalla CA (crt + p7b), importarli (Personale \ Certificati e Autorità di certificazione intermedia \ Certificati)
  • IMPORTANTE: fai clic con il pulsante destro del mouse sul nuovo certificato (Personale \ Certificati) Tutte le attività ... Gestisci chiave privata e assegna le autorizzazioni al tuo account o a Tutti (rischioso!). Puoi tornare alle autorizzazioni precedenti una volta terminato.
  • Ora fai clic con il pulsante destro del mouse sul certificato e seleziona Tutte le attività ... Esporta e dovresti essere in grado di esportare il certificato inclusa la chiave privata come file PFX e puoi caricarlo in Azure!

Spero che sia di aiuto!


Ho già il mio certificato in Personal \ Certificates, ma con il tasto destro non appare "Gestisci chiave privata". Le opzioni che ottengo sono: "Richiedi certificato con nuova chiave ...", "Rinnova certificato con nuova chiave ..." ed "Esporta" ... Hai idea di cosa mi sto perdendo?
Gabrielizalo,

1
L'ho risolto con il convertitore di certificati portatile di DigiCert: digicert.com/util/…
Gabrielizalo,

Impossibile "generare CSR". Se hai già la chiave privata, non è necessario generare un CSR. Si prega di leggere la domanda originale.
NickG,

0

So che alcuni utenti hanno parlato dell'installazione di questo e quello e dell'aggiunta di programmi da riga di comando e del download ...

Personalmente sono pigro e trovo tutti questi metodi ingombranti e lenti, inoltre non voglio scaricare nulla e trovare le linee cmd corrette se non devo.

Il modo migliore per me sul mio server IIS personale è usare RapidSSLOnline. Questo strumento su un server consente di caricare il certificato e la chiave privata ed è in grado di generare un file pfx che è possibile importare direttamente in IIS.

Il link è qui: https://www.rapidsslonline.com/ssl-tools/ssl-converter.php

Di seguito sono riportati i passaggi utilizzati per lo scenario richiesto.

  1. Seleziona tipo corrente = PEM
  2. Cambia per = PFX
  3. Carica il tuo certificato
  4. Carica la tua chiave privata
  5. Se si dispone di certificati CA ROOT o certificati intermedi, caricarli anche
  6. Imposta una password di tua scelta, utilizzata in IIS
  7. Fai clic su reCaptcha per dimostrare che non sei un bot
  8. Fai clic su Converti

Ed è così che dovresti avere un PFX scaricato e usarlo nel tuo processo di importazione su IIS.

Spero che questo aiuti altre persone che amano la tecnologia e le persone pigre.


6
È sicuro caricare il tuo certificato su un sito Web di terze parti che non ti ha rilasciato il certificato?
Kunal,

1
Ehilà Rapid SSL credo che siano di proprietà di GeoTrust. Entrambe le autorità per ottenere un certificato. Per quanto ne so ... digital.com/ssl-certificates/geotrust digital.com/ssl-certificates/RAPIDSSL per quanto riguarda la sicurezza Penso che sarebbe un exploit minimo in quanto il tuo certificato verrebbe generato da un sistema esterno e deve essere valido ancora. Nel mio caso ho usato sslforfree.com che deve essere rinnovato ogni 90 giorni, ma è un piccolo prezzo da pagare per un costo inferiore soprattutto per il mio sito demo ecc.
TheNerdyNerd

5
@Kunal: questo potrebbe essere un modo semplice per ottenere file di certificato di test / sviluppo, ma caricare la chiave privata su un'altra parte è un nogo generale per ambienti di produzione sicuri.
Stefan,

0

Per i file cfx da SSLForFree trovo questo https://decoder.link/converter più semplice.

Assicurati semplicemente che PEM -> PKCS # 12 sia selezionato, quindi carica il certificato, ca_bundle e file chiave e converti. Ricorda la password, quindi carica con la password che hai usato e aggiungi i collegamenti.

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.