Come posso creare un certificato autofirmato per localhost?


134

Ho seguito i passaggi dettagliati in Come si utilizza https / SSL su localhost? ma questo imposta un certificato autofirmato per il mio nome di macchina e quando lo sfoglio tramite https: // localhost ricevo l'avviso IE.

C'è un modo per creare un certificato autofirmato per "localhost" per evitare questo avviso?


Hai installato il certificato come CA?
vcsjones,

Ho seguito il processo per installare un certificato autofirmato in IIS con Win7. Ma questo crea il certificato per "mymachinename" e ne ho bisogno per "localhost".
chris,

1
Ciao! Considera di impostare la risposta di Auri come la risposta principale, poiché Makecert è obsoleto. Link alla risposta: stackoverflow.com/a/44164653/1461602
Tormod Haugene

Risposte:


81

Anche se questo post è post è taggato per Windows, è una domanda rilevante su OS X che non ho visto risposte per altrove. Ecco i passaggi per creare un certificato autofirmato per localhost su OS X :

# Use 'localhost' for the 'Common name'
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -days 365 -keyout localhost.key -out localhost.crt

# Add the cert to your keychain
open localhost.crt

In Keychain Access, fare doppio clic su questo nuovo certificato localhost. Espandi la freccia accanto a "Fidati" e scegli "Fidati sempre". Chrome e Safari ora dovrebbero fidarsi di questo certificato. Ad esempio, se si desidera utilizzare questo certificato con node.js:

var options = {
    key: fs.readFileSync('/path/to/localhost.key').toString(),
    cert: fs.readFileSync('/path/to/localhost.crt').toString(),
    ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES256-SHA384',
    honorCipherOrder: true,
    secureProtocol: 'TLSv1_2_method'
};

var server = require('https').createServer(options, app);

2
Il primo comando, ssh-keygennon è necessario poiché il comando openssl sta anche creando una nuova chiave (e sovrascrivendo quella creata da ssh).
Félix Saparelli,

7
Inoltre è possibile automatizzare completamente il processo aggiungendo -subj '/CN=localhost'agli opensslargomenti.
Félix Saparelli,

8
Per fare in modo che OS X lo consideri attendibile dalla riga di comando invece di fare clic, puoi fare:sudo security add-trusted-cert -p ssl -d -r trustRoot -k ~/Library/Keychains/login.keychain localhost.crt
philfreo

1
Rilevante anche per Linux. Molte grazie.
Marcel

1
Ho seguito tutti questi passaggi e sto ottenendo un ERR_SSL_VERSION_OR_CIPHER_MISMATCHin Chrome 60 e Safari 10.1.2 non mi piace neanche.
Styfle

61

Poiché questa domanda è contrassegnata con IISe non riesco a trovare una buona risposta su come ottenere un certificato attendibile, darò i miei 2 centesimi al riguardo:

Per prima cosa usa il comando di @AuriRahimzadeh in PowerShell come amministratore:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Questo è buono ma il certificato non è attendibile e comporterà il seguente errore. È perché non è installato in Trusted Root Certification Authorities.

inserisci qui la descrizione dell'immagine

Risolvi questo avviando mmc.exe.

Quindi vai a:

File -> Aggiungi o rimuovi snap-in -> Certificati -> Aggiungi -> Account del computer -> Computer locale. Fai clic su Fine.

Espandi la Personalcartella e vedrai il tuo localhostcertificato:

inserisci qui la descrizione dell'immagine

Copia il certificato nella Trusted Root Certification Authorities - Certificatescartella.

Il passaggio finale è aprire Internet Information Services (IIS) Managero semplicemente inetmgr.exe. Da lì vai al tuo sito, seleziona Bindings...e Add...o Edit.... Imposta httpse seleziona il tuo certificato dal menu a discesa.

inserisci qui la descrizione dell'immagine

Il tuo certificato è ora attendibile:

inserisci qui la descrizione dell'immagine


9
Questa dovrebbe essere la risposta accettata! Funziona! Se hai fatto confusione con l'host locale e il certificato attendibile. Assicurati di rimuovere tutti i vecchi certificati localhost (tramite console mmc e IIS (server gestito in alto)
Tuan Jinn

Grazie! Ci sono così tante risposte SO e post di blog su questo argomento, ma pochissimi parlano dei problemi di affidabilità del certificato. Suggerimento: forse dovresti spiegare perché non usi la porta SSL predefinita 443? Immagino sia perché questa porta è spesso presa da qualche altro processo.
HoffZ

Risposta davvero bella, e funziona bene su IIS come 2020. Grazie mille!
alessandrocb,

Funziona anche con gli alias nel file hosts
Zef

52

È possibile utilizzare PowerShell per generare un certificato autofirmato con il cmdlet new-selfsignedcertificate:

New-SelfSignedCertificate -DnsName "localhost" -CertStoreLocation "cert:\LocalMachine\My"

Nota: makecert.exe è obsoleto.

Riferimento Cmdlet: https://technet.microsoft.com/itpro/powershell/windows/pkiclient/new-selfsignedcertificate


Questa dovrebbe essere la risposta a partire dal 2017.
Tormod Haugene,

1
Per coloro che seguono e non sanno come installare l'installazione del certificato risultante, seguire i passaggi in questo video, ha funzionato per me! youtube.com/watch?v=y4uKPUFmSZ0
Eric Brown - Cal

6
dove vengono archiviati i file key e crt?
woojoo666,

1
@ woojoo666 con -KeyLocationflag è possibile specificare la posizione.
hamid

46

Dopo aver trascorso un bel po 'di tempo su questo problema, ho scoperto che ogni volta che seguivo suggerimenti sull'utilizzo di IIS per creare un certificato autofirmato, ho scoperto che il Rilasciato e Rilasciato da non era corretto. SelfSSL.exe è stata la chiave per risolvere questo problema. Il seguente sito Web non solo ha fornito un approccio graduale alla creazione di certificati autofirmati, ma ha anche risolto l'emissione e l'emissione da parte di un problema. Ecco la migliore soluzione che ho trovato per creare certificati autofirmati. Se preferisci vedere lo stesso tutorial in forma video fai clic qui .

Un esempio di utilizzo di SelfSSL sarebbe simile al seguente:

SelfSSL /N:CN=YourWebsite.com / V: 1000 / S: 2

SelfSSL /? fornirà un elenco di parametri con spiegazione.


L'articolo di RobBagby.com ha funzionato perfettamente per me. Buona ricerca Henry.
cymorg,

MEGA! Quel video ha una scarsa qualità ma ha tutto il necessario.
Tonco,

2
Il link al sito robbagby è morto. Vedi la mia risposta per 2 tutorial YouTube di alta qualità di CodeCowboyOrg
Moses Machua

Risposta modificata per il collegamento all'archivio Wayback dell'articolo su robbagby.com.
Prometeo,

23

Se stai provando a creare un certificato autofirmato che ti lascia andare, http://localhost/mysite ecco un modo per crearlo

makecert -r -n "CN=localhost" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -sv localhost.pvk localhost.cer
cert2spc localhost.cer localhost.spc
pvk2pfx -pvk localhost.pvk -spc localhost.spc -pfx localhost.pfx

Da http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/32bc5a61-1f7b-4545-a514-a11652f11200


2
dove è andato il mio certificato: o non è in C: \ Windows \ system32
EaterOfCode

2
A proposito, lo strumento makecert.exe viene utilizzato tramite il prompt dei comandi di Visual Studio per i lettori futuri. È inoltre possibile utilizzare gli strumenti del Resource Kit di Internet Information Services (IIS) e installare SelfSSL 1.0. microsoft.com/downloads/en/…
atconway,

3
Sebbene le risposte rapide siano ottime, non sempre aiutano. "Il certificato non può essere utilizzato come certificato del server SSL" è un errore che vedo in IIS7. Op aveva anche menzionato gli avvisi del browser e non "Come faccio a creare un certificato"?
cmroanirgo,

È possibile omettere il parametro cert2spc step due pvk2pfx -spc accetta sia .spc che .cer
abatishchev

1
@EaterOfCode Il mio era in C: \ Windows \ SysWOW64
Bay Sola,

10

Consiglierei lo strumento di Pluralsight per la creazione di certificati autofirmati: http://blog.pluralsight.com/selfcert-create-a-self-signed-certificate-interactively-gui-or-programmatical-in-net

Crea il tuo certificato come .pfx e importalo in IIS. E aggiungilo come autorità di certificazione radice attendibile.


1
Dopo essermi sforzato di provare tutti i tipi di "magia" di PowerShell e altre cose che non funzionavano, lo strumento di Pluralsight ha generato per me uno script funzionante in 30 secondi e questo include il tempo impiegato per mangiare la pizza (+ download e estrarre lo strumento, intendo). Dato che sto ancora eseguendo Windows 7 su questo vecchio laptop, questa è stata la soluzione perfetta per me, grazie!
Ade,

1

Sì e no. I certificati autofirmati generano quel messaggio di avviso perché il certificato non è stato firmato da un'autorità di certificazione attendibile. Esistono alcune opzioni che è possibile prendere in considerazione per rimuovere questo avviso sul computer locale. Per i dettagli, vedi le risposte con il punteggio più alto a questa domanda:

Cosa devo fare per fare in modo che Internet Explorer 8 accetti un certificato autofirmato?

Spero che questo ti aiuti!


MODIFICARE:

Spiacenti, inizialmente non ero a conoscenza del fatto che eri vincolato a localhost. Puoi provare a seguire le indicazioni sul link sottostante per "Genera un certificato autofirmato con il nome comune corretto".

http://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html


No, il messaggio di avviso è presente perché l'URL ( localhost ) non corrisponde al nome del certificato, che viene emesso sotto il nome del computer. Se passo a mymachinename , non visualizzo l'errore. Sfortunatamente, devo usare localhost e non il nome della macchina per motivi che non influiscono sulla domanda.
chris,


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.