Site icon Ryadel

Visual Studio - Certificato SSL localhost scaduto: come risolvere

How to create a self-signed TLS SSL certificate for Apache or NGINX to accept HTTPS requests on port 443

Se vi siete imbattuti in questo articolo è probabile che vi siate trovati di fronte a una problematica in cui prima o poi si imbattono tutti gli sviluppatori ASP.NET che utilizzano Visual Studio o Visual Studio Code: la scadenza periodica del certificato SSL self-signed (ovvero auto-firmato) utilizzato per lo sviluppo di applicazioni su HTTPS. In questo articolo, dopo una prima panoramica sulla creazione e sul funzionamento di questo certificato, vedremo come risolvere questo problema.

Nell'improbabile caso in cui non sappiate cosa sia un certificato SSL e/o perché è importante, vi suggeriamo di leggere questo articolo.

Certificato SSL localhost

Questo certificato, come probabilmente molti di voi già sapranno, viene creato automaticamente dal framework di sviluppo nel momento in cui viene eseguita l'esecuzione di una web application HTTPS per la prima volta: poiché questa applicazione viene fatta girare su un Web Server locale (solitamente IISExpress o Kestrel), il supporto del protocollo HTTPS rende necessaria la presenza di un certificato valido per il dominio di esecuzione locale, che è appunto localhost. Per questo motivo, nel caso (molto probabile) in cui la macchina di sviluppo non ne abbia già uno, Visual Studio propone la creazione di un certificato SSL self-signed attraverso una finestra pop-up simile alla seguente:

Visual Studio - Certificato SSL localhost scaduto: come risolvere

Come dice il messaggio informativo presente nel popup, creare e installare questo certificato non è obbligatorio: tuttavia, se si sceglie di non farlo, il browser - al momento di connettersi all'endpoint localhost su cui gira la web application - restituirà il tipico messaggio di warning relativo all'assenza di un certificato SSL valido, costringendoci a fare click su "Prosegui comunque" e altre scomode azioni prima di poter eseguire il contenuto della nostra applicazione.

Per questo motivo è generalmente buona norma creare questo certificato SSL self-signed, che consentirà di collegarci alla nostra web application in locale senza nessun problema.

Sfortunatamente i certificati SSL hanno una durata limitata nel tempo: nello specifico, i certificati auto-firmati creati da Visual Studio hanno solitamente una durata piuttosto bassa (1-2 anni): nel momento in cui il certificato scade, il messaggio di warning di cui sopra tornerà prepotentemente a fare la sua comparsa ad ogni tentativo di connessione da parte del browser.

Nella maggior parte dei casi questa scadenza non crea problematiche di rilievo: Visual Studio si accorgerà automaticamente che quel certificato è scaduto e provvederà a crearne uno nuovo (chiedendo ovviamente ancora una volta il consenso dell'utente). Esiste però la possibilità che la presenza del certificato scaduto precedente - che nella maggior parte dei casi non viene eliminato - confonda il nostro browser, il quale non riuscirà ad accorgersi della presenza del nuovo certificato e continuerà quindi a fare riferimento al precedente... e quindi, in conseguenza di ciò, a mostrarci il fastidioso messaggio di errore di certificato SSL scaduto.

Eliminare i certificati scaduti

Per risolvere questo problema, il modo migliore di procedere è quello di togliere di mezzo i certificati scaduti. Per far questo è sufficiente svolgere le seguenti operazioni:

  • Premere i tasti WIN + R, così da far comparire la finestra Esegui.
  • Scrivere mmc e premere OK per lanciare lo strumento Microsoft Management Console.
  • Una volta lì, fare click su File > Aggiungi/Rimuovi Snap-In
  • Aggiungere lo snap-in relativo ai Certificati, scegliendo quelli relativi all'utente corrente.

Una volta fatto questo, sarà possibile utilizzare la funzionalità Azione > Trova Certificati per cercare quelli emessi da localhost, come mostrato nella screenshot seguente:

A questo punto non resterà altro che eliminare i certificati scaduti (tasto destro -> elimina). Mi raccomando, fate attenzione a non eliminare quelli ancora validi!

Ripulire la Cache SSL

Una volta eliminati i certificati scaduti è opportuno ripulire la cache dei browser e del sistema in modo che non vengano più utilizzati. Per far questo è sufficiente eseguire le seguenti operazioni:

  • Aprire il Pannello di Controllo di Windows.
  • Selezionare Opzioni Internet.
  • Selezionare la tab Contenuti.
  • Fare click sul pulsante Cancella Stato SSL.

Ricreare il certificato SSL

Nel caso in cui sia necessario ricreare il certificato SSL localhost di sviluppo da capo, la cosa più semplice è utilizzare l'apposito comando previsto dalla dotnet CLI:

> dotnet dev-certs https --trust

In questo modo il certificato SSL self-signed di sviluppo sarà creato nuovamente e, in virtù del parametro --trust, sarà anche registrato come autorità di certificazione attendibile, cosa che  gli consentirà di essere riconosciuto come valido da qualsiasi browser.

Metodo alternativo

Nel caso in cui le attività sopra descritte non abbiano avuto effetto, ecco un metodo alternativo per ripulire i certificati scaduti:

  • Chiudere tutte le istanze di Visual Studio 2022 e dei browser
  • Navigare nella cartella %APPDATA%\ASP.NET\https e cancellare tutti i file presenti all'interno.
  • Navigare nella cartella C:\Users\%USERNAME%\AppData\Roaming\ASP.NET\https e cancellare tutti i file presenti all'interno.
  • Aprire un prompt dei comandi ed eseguire le seguenti istruzioni:
    • dotnet dev-certs https --clean
    • dotnet dev-certs https --trust
    • dotnet dev-certs https --check

Conclusioni

Per il momento è tutto: ci auguriamo che questa guida possa essere utile agli sviluppatori ASP.NET alla ricerca di informazioni per risolvere il problema del certificato SSL scaduto o non valido per le proprie applicazioni web.

Alla prossima!

 

 

 

 

Exit mobile version