Come ripristinare un certificato SSL IIS Express mancante?


134

Dopo aver impostato HTTPS in IIS Express, in base a articoli come questo e questo , non sono in grado di caricare effettivamente un sito IIS Express utilizzando HTTPS. In Chrome , sto solo ottenendo:

Questa pagina web non è disponibile (con codice di errore "ERR_CONNECTION_RESET")

... e in IE sto ottenendo solo:

Internet Explorer non può visualizzare la pagina Web

... quando seguo le indicazioni in quegli articoli.

Sembra che ciò abbia a che fare con il fatto che il "Certificato di sviluppo IIS Express" che IIS Express installa automaticamente è stato rimosso. Come posso reinstallare questo certificato?


2
Mi è anche capitato di provare a eseguire IISExpress sulla porta 443 (o effettivamente su qualsiasi porta al di fuori dell'intervallo 44300-44399)
Gerardo Grignoli,

Nota: la risposta accettata a questa domanda è applicabile anche quando è presente il certificato localhost IIS Express e sembra andare bene.
Hymansfield,

Risposte:


193

Dopo essere andato su Aggiungi / Rimuovi Programmi e aver scelto l'opzione "Ripara" su IIS Express, il certificato è stato reinstallato e ora posso avviare i siti IIS Express usando HTTPS.

Riparare IIS Express

Il certificato è tornato:

Certificato di sviluppo IIS Express

E ora posso avviare il sito IIS Express usando HTTPS:

Successo!


1
Funziona anche per me, ma nel mio caso il certificato era lì. Non so perché, ma ciò ha provocato lo stesso errore. Quindi ho rimosso il certificato, e 'riparato' lo ho reinstallato e voilà. Molte grazie.
Dario il

37
Nota per gli utenti di Windows 10: la riparazione è solo nel Pannello di controllo, non nell'app Aggiungi programmi di rimozione. Idea brillante msft.
Chris Weber,

1
Un modo molto più rapido è quello di avviare Jexus Manager e generare un nuovo certificato e quindi collegarlo al tuo sito. jexusmanager.com Ovviamente non risolve ancora i bind dei certificati rotti e vedrò come renderlo una funzionalità con un clic.
Lex Li,

La riparazione funziona ma ho dovuto eliminare tutti i certificati esistenti utilizzando MMC. Il problema che ho riscontrato è che non li stavo eliminando come amministratore da localMachine. Assicurati di eseguire MMC con autorizzazioni elevate!
ranieuwe,

6
Nota per gli utenti di VS2019: "Ripara" non funzionerà perché il programma di installazione di Visual Studio non inserisce il file MSI dove il Pannello di controllo si aspetta che sia. Tuttavia, esiste un _package.json file nella stessa directory e contiene l'URL del file MSI. È possibile eseguirlo manualmente o copiarlo dove previsto dal Pannello di controllo.
Chris R. Donnelly,

156

Per Visual Studio 2015, IIS Express 10, Windows 10, queste opzioni non funzionavano per me. IIS Express 10 non aveva un'opzione di riparazione.

Sono riuscito a risolvere il problema usando il IisExpressAdminCmd.execomando disponibile su C:\Program Files (x86)\IIS Express.

Da un prompt dei comandi elevato eseguire:

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:urlToYourSite -UseSelfSigned

Sostituendo urlToYourSite con il tuo url.

per esempio

cd C:\Program Files (x86)\IIS Express
IisExpressAdminCmd.exe setupsslUrl -url:https://localhost:44387/ -UseSelfSigned

Dopo di ciò ho chiuso IIS Express e riavviato il mio sito da Visual Studio e mi è stato chiesto di fidarmi automaticamente del certificato autofirmato.

Spero che aiuti.


3
Questo ha funzionato per me cercando di eseguire IISExpress sulla porta 443. +1
Gerardo Grignoli,

Questa soluzione ha funzionato perfettamente per me. Windows 10, Visual Studio 2015, IIS Express 10.
Glenn

1
Se qualcuno qui sta riscontrando problemi nell'ottenere una porta specifica utilizzata da IIS Express, potresti voler verificare se qualcuno ha un sito registrato in IIS che utilizza quella porta. Oggi è stata la mia giornata.
Chris Marisic,

2
In Windows 10, IIS Express ha un'opzione di riparazione. Devi passare dal Pannello di controllo. La risposta accettata ha funzionato per me.
Joerage

1
Nel caso in cui sei stanco di utilizzare la riga di comando, puoi usare Jexus Manager per fare lo stesso, blog.lextudio.com/…
Lex Li

40

A volte questo errore è dovuto a un certificato diverso installato per localhost. In tal caso, non è necessario ripristinare il certificato IIS Express. Al contrario, è possibile effettuare le seguenti operazioni per dire a IIS Express di utilizzare il certificato esistente:

  1. Aprire lo snap-in MMC certificati come descritto qui
  2. Trova il tuo certificato localhost ad es. In Personal ... Certicates e ottieni la sua identificazione personale:
    1. Apri la finestra di dialogo delle proprietà per il certificato localhost e trova la proprietà Thumbprint
    2. Incolla il valore dell'identificazione personale nel Blocco note (o qualsiasi altra cosa) e rimuovi gli spazi e tutti i caratteri speciali all'inizio
  3. Trova il valore della porta del tuo progetto IIS Express:
    1. Vai alle proprietà del progetto in Visual Studio e trova il valore "URL SSL", ad esempio " https: // localhost: 44300 / MyApp ".
    2. In questo esempio 44300 è il numero di porta. Se il tuo è diverso, modifica quel valore nei comandi successivi.
  4. Utilizzare i seguenti comandi in un prompt dei comandi amministrativo (non Powershell):

netsh http delete sslcert ipport=0.0.0.0:44300

netsh http add sslcert ipport=0.0.0.0:44300 certhash=your_cert_hash_with_no_spaces appid= {123a1111-2222-3333-4444-bbbbcccdddee}

Il Guid nel comando sopra può essere sostituito con uno che si genera. Non corrisponde a nessun valore IIS Express esistente.

Per ulteriori riferimenti, vedere Gestione degli errori di associazione URL in IIS Express .


2
Un modo più visivo è usare Jexus Manager, blog.lextudio.com/… , quindi non è necessario ricordare i dettagli come l'hash del certificato.
Lex Li,

se viene visualizzato il messaggio "Il parametro non è corretto". errore - usa prima questo appid e poi certhash. Esempio: netsh http add sslcert ipport = 0.0.0.0: 44300 appid = {C21B9F4D-2A5D-4160-81C8-FBCC3EFC335E} certhash = your_cert_hash_with_no_spaces
gmsi

36

Inoltre, affinché IIS Express funzioni con SSL, la porta utilizzata deve essere compresa tra 44300 e 44399 ( http://www.iis.net/learn/extensions/using-iis-express/running-iis-express- senza-amministrativi-privilegi ).

Quindi, se stai usando IIS Express in Visual Studio, assicurati che la porta selezionata sia nell'intervallo richiesto: vs impostazione per iis express


3
Sono stato in grado di utilizzare una porta al di fuori di questo intervallo dopo aver usato il comando nella risposta di Bernie White senza problemi. Windows 10 / Visual Studio Community 2015 / .Net Core 1.0.1 / IIS Express 10.0
Ryan Thomas

1
Grazie! Questo ha risolto il problema per me. Strano che Visual Studio non lo metta in guardia.
Erwin Mayer,

4
44300-44399 è solo l'intervallo di porte predefinito con un certificato mappato. Puoi facilmente creare una simile mappatura dei certificati chiamando netsho semplicemente usando Jexus Manager, blog.lextudio.com/…
Lex Li

12

Con il nuovo Chrome 58, nulla delle risposte seguenti sarà di aiuto. Ho appena trascorso 1 ora a disinstallare / reinstallare i certificati e cercando di scoprire dove si trova il problema.

Apparentemente Chrome 58 rifiuterà il certificato perché "missing_subjectAltName"

La soluzione è la passphrase "badidea" o se è necessario aprire i popup per l'accesso è necessario utilizzare:

chrome: // flags / # permettono-insicuro-localhost

La fonte è e il voto appartiene a: https://stackoverflow.com/a/38926117/2089232 :)




2

Volevo aggiungere questo, perché è ridicolo ma forse aiuterà qualcuno. Tieni presente che non avevo mai aperto le proprietà del mio progetto prima, quindi non ho idea di come sia successo (non l'ho modificato da solo o ne ho avuto l'opportunità), ma in Progetto> Proprietà> Web il mio URL SSL è stato elencato come il mio solito URL ma come http anziché https (in precedenza era stato https perché funzionava prima). Ho seguito tutti i passaggi elencati in questa pagina, disinstallato VS, quindi IIS e infine ho notato l'errore che avrebbe dovuto essere https: // mySSLURL (ma mancava la s in https). Una volta ho cambiato http in https tutto ha funzionato di nuovo.



0

Ho appena avuto questo problema dopo aver aggiornato il mio VS 2017 alle ultime versioni e ho creato un nuovo progetto (.Net) MVC / WebAPI (dal modello). Sono stato in grado di risolvere questo problema regolando i miei numeri di porta per rientrare nell'intervallo corretto

Intervalli di porte predefiniti Chorme per DEV SSL

Che sono riuscito a trovare qui: https://www.pluralsight.com/guides/visual-studio-2017-resolving-ssl-tls-connections-problems-with-iis-express

Spero che questo ti aiuti!

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.