HTTPS in locale con XAMPP: certificati validi con mkcert

Basta con il lucchetto aperto: ecco come attivare HTTPS su XAMPP con un certificato valido

Illustrazione digitale con barra del browser che mostra https:// e lucchetto verde, affiancata da finestre di terminale con codice e un certificato con segno di spunta, su sfondo navy scuro
Con mkcert il browser riconosce il certificato come valido: niente più avvisi, solo il lucchetto verde.
Questo articolo è la parte parte 2 di 3 nella serieSimulare un ambiente quasi-produzione in locale con XAMPP

Simulare un ambiente quasi-produzione in locale con XAMPP

Router domestico con LED accesi al centro, affiancato da un laptop con browser aperto, uno smartphone e un PC desktop su una scrivania scura

XAMPP: accesso da altri PC in rete locale (guida completa)

Illustrazione digitale con barra del browser che mostra https:// e lucchetto verde, affiancata da finestre di terminale con codice e un certificato con segno di spunta, su sfondo navy scuro

HTTPS in locale con XAMPP: certificati validi con mkcert

Illustrazione digitale con quattro finestre browser disposte in griglia, ciascuna con un dominio locale diverso (site1.test, site2.test, site3.test, site4.test) e colori distinti, con un editor di codice visibile al centro su sfondo navy scuro

Gestire più siti in XAMPP con i virtual host: guida pratica

Hai il tuo sito che gira in locale su XAMPP, magari accessibile anche dagli altri dispositivi della rete — e fin qui tutto bene. Poi un giorno apri il browser, digiti l’indirizzo e ti appare quella schermata: “La connessione non è privata”. Oppure, più semplicemente, nella barra degli indirizzi campeggia un bel lucchetto aperto con scritto “Non sicuro”.

Niente panico. Non è che il tuo sito sia compromesso — è solo che il browser si aspetta HTTPS, e tu stai ancora girando su HTTP.

In questa guida vediamo come risolvere nel modo giusto: non aggirando l’avviso, ma installando un certificato SSL valido per il tuo ambiente locale usando uno strumento che si chiama mkcert. In pochi minuti, il lucchetto diventa verde anche in locale.

Perché il browser si lamenta (e cosa c’entra il certificato)

Quando visiti un sito in HTTPS, il browser riceve un certificato SSL che serve a due cose: verificare che il sito sia davvero quello che dice di essere, e cifrare tutto il traffico tra te e il server.

Il punto è che questi certificati devono essere firmati da un’autorità riconosciuta — una CA (Certificate Authority) — di cui il browser si fida. Quando acquisti un dominio reale, il certificato te lo fornisce Let’s Encrypt o un servizio simile. Ma in locale? Nessuna CA esterna firmerà mai un certificato perinformaticando.local, perché quel dominio non esiste su internet.

Finora la soluzione “classica” era creare un certificato auto-firmato, ma il browser non lo riconosce e ti mostra comunque l’avviso — devi cliccare “Procedi comunque” ogni volta. Non esattamente comodo.

mkcert risolve il problema alla radice: crea una CA locale sul tuo PC e la installa come autorità fidata nel sistema. Da quel momento, i certificati che genera vengono accettati dal browser senza alcun avviso, esattamente come quelli “veri”.


Cosa ci serve

Prima di iniziare, assicurati di avere XAMPP installato con Apache funzionante e il virtual host perinformaticando.localgià configurato. Se non l’hai ancora fatto, trovi tutto nellaguida su XAMPP e accesso da rete locale— puoi seguire anche senza, ma avere già il virtual host attivo ti semplifica la vita. Ti serve inoltre una connessione a internet per scaricare mkcert.


Step 1 – Installare mkcert su Windows

mkcert è uno strumento a riga di comando, ma non farti spaventare: l’installazione è questione di un paio di passaggi.

Il modo più rapido su Windows è usare winget, il gestore di pacchetti integrato in Windows 10/11. Apri il Terminale (o PowerShell) come amministratore e digita:

PowerShell
winget install FiloSottile.mkcert

In alternativa, puoi scaricare direttamente l’eseguibile dalla paginaGitHub di mkcert, scegliere il filemkcert-v*-windows-amd64.exe, rinominarlo inmkcert.exee spostarlo in una cartella inclusa nel PATH di sistema (ad esempioC:\Windows\System32).

Una volta installato, verifica che funzioni aprendo il terminale e digitando:

PowerShell
mkcert --version

Se risponde con un numero di versione, sei a posto.


Step 2 – Installare la CA locale

Questo è il passaggio chiave: diciamo a mkcert di creare la sua CA e di installarla come autorità fidata nel sistema.

Sempre da terminale come amministratore:

PowerShell
mkcert -install

mkcert creerà la CA e la aggiungerà automaticamente ai certificati fidati di Windows e dei principali browser (Chrome, Firefox, Edge). Potresti vedere una finestra di conferma di Windows — accetta.

Da questo momento, tutto ciò che firmerà questa CA sarà riconosciuto come valido sul tuo PC.

Una cosa importante:questa CA locale è valida solo sul tuo computer. Se vuoi che anche gli altri dispositivi della rete accettino il certificato senza avvisi, dovrai installarla anche su di loro — lo vediamo alla fine della guida.


Step 3 – Generare il certificato per il tuo dominio locale

Ora generiamo il certificato perinformaticando.local. Da terminale, spostati nella cartella dove terremo i certificati — creiamola se non esiste:

PowerShell
mkdir C:\xampp\apache\ssl
cd C:\xampp\apache\ssl

Poi esegui:

PowerShell
mkcert informaticando.local localhost 127.0.0.1

Aggiungere anchelocalhoste127.0.0.1è una buona abitudine: così il certificato funziona sia con il dominio custom che accedendo direttamente via indirizzo IP o localhost.

mkcert creerà due file nella cartella corrente:informaticando.local+2.pem(il certificato) einformaticando.local+2-key.pem(la chiave privata). Tienili al sicuro: la chiave privata non va condivisa.


Step 4 – Configurare Apache per usare HTTPS

Adesso dobbiamo dire ad Apache di usare questi certificati e di rispondere anche sulla porta 443, quella di HTTPS.

Passo 4a – Abilitare il modulo SSL

ApriC:\xampp\apache\conf\httpd.confe assicurati che queste due righe non abbiano il#davanti:

Apache
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf

Se le trovi commentate, togli il cancelletto e salva.

Passo 4b – Aggiornare il virtual host

ApriC:\xampp\apache\conf\extra\httpd-vhosts.confe aggiorna la configurazione diinformaticando.localin questo modo:

Apache
# Reindirizzamento da HTTP a HTTPS
<VirtualHost *:80>
    ServerName informaticando.local
    Redirect permanent / https://informaticando.local/
</VirtualHost>

# Virtual host HTTPS
<VirtualHost *:443>
    ServerName informaticando.local
    DocumentRoot "C:/xampp/htdocs/informaticando"

    SSLEngine on
    SSLCertificateFile "C:/xampp/apache/ssl/informaticando.local+2.pem"
    SSLCertificateKeyFile "C:/xampp/apache/ssl/informaticando.local+2-key.pem"

    <Directory "C:/xampp/htdocs/informaticando">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Il primo blocco reindirizza automaticamente chi digitahttp://versohttps://. Il secondo è il virtual host sicuro vero e proprio.

Passo 4c – Verificare che Apache ascolti sulla porta 443

ApriC:\xampp\apache\conf\extra\httpd-ssl.confe controlla che ci sia:

apache

Apache
Listen 443

Poi riavvia Apache dal pannello di controllo di XAMPP.


Step 5 – Test finale

Apri il browser e vai su:

HTTP
https://informaticando.local

Se tutto è andato bene, vedrai il lucchetto chiuso nella barra degli indirizzi — nessun avviso, nessun “Procedi comunque”. Il sito è servito in HTTPS con un certificato valido.

Puoi verificare cliccando sul lucchetto: vedrai che il certificato è emesso dalla tua CA locale, di solito nominata qualcosa tipomkcert nomeutente@nomepc.


Gli altri dispositivi della rete

Se vuoi che HTTPS funzioni senza avvisi anche dagli altri PC o smartphone, dovrai esportare la CA di mkcert e installarla su ogni dispositivo.

Per trovare dove mkcert ha salvato la CA, digita:

PowerShell
mkcert -CAROOT

Nella cartella che ti indica troverai il filerootCA.pem. Questo è quello che devi installare come certificato radice fidato sugli altri dispositivi. Su Windows fai doppio clic sul file, scegli “Installa certificato”, poi “Computer locale” e infine “Autorità di certificazione radice attendibili”. Su Android copia il file sul dispositivo e installalo dalle impostazioni di sicurezza. Su iOS e iPadOS trasferiscilo, installalo dal profilo e abilitalo nelle impostazioni di fiducia certificati. Sui dispositivi mobili il processo è un po’ più macchinoso, ma si fa.


Qualcosa non funziona?

Se il browser mostra ancora l’avviso dopo la configurazione, prova prima a svuotare la cache o ad aprire una finestra privata — a volte il browser ha in memoria la versione precedente.

Se usi WordPress e dopo aver attivato HTTPS il browser segnala un loop di redirect, controlla che non ci siano regole nel file.htaccessche reindirizzano già da HTTP a HTTPS. In quel caso ilRedirect permanentnel virtual host su porta 80 e la regola nel.htaccesssi inseguono all’infinito. La soluzione è rimuovere il blocco di reindirizzamento dal virtual host e lasciare che ci pensi il.htaccess— oppure viceversa, ma non entrambi insieme.

Se Apache non si avvia dopo le modifiche, quasi sempre il problema è un errore di sintassi nel file di configurazione o un percorso sbagliato ai file del certificato. I log inC:\xampp\apache\logs\error.logti dicono esattamente cosa sta protestando.

Se la porta 443 risulta occupata, potrebbe esserci Skype o un altro programma che la usa — lo stesso tipo di conflitto che può capitare sulla porta 80.


Domande frequenti

mkcert funziona solo con XAMPP?

No, mkcert è indipendente dal server web che usi. Funziona allo stesso modo con Nginx, IIS o qualsiasi altro server locale — basta configurare i percorsi ai file del certificato nella maniera corretta per ciascuno.

Il certificato scade?

Sì, i certificati generati da mkcert hanno una validità di circa due anni. Alla scadenza basta rigenerarlo con lo stesso comando usato in Step 3 e aggiornare i riferimenti nella configurazione di Apache.

Devo ripetere tutto da capo se reinstallo Windows?

No per il certificato, sì per la CA. Se reinstalli il sistema operativo dovrai rieseguiremkcert -installper ricreare la CA locale e registrarla come attendibile. Il certificato puoi tenerlo o rigenerarlo, a tua scelta.

Posso usare mkcert per più domini locali?

Sì, puoi generare un certificato che copre più domini in un colpo solo, elencandoli tutti nello stesso comando:mkcert informaticando.local altroprogetto.local localhost 127.0.0.1. In alternativa puoi generare certificati separati per ogni progetto.

Gli altri dispositivi vedranno sempre l’avviso?

Finché non installi la CA di mkcert su di loro, sì. Una volta installato il filerootCA.pemcome certificato radice fidato, anche gli altri dispositivi accetteranno il certificato senza protestare.


Conclusione

Lavorare in locale con HTTPS non è solo una questione estetica: alcuni comportamenti del browser — service worker, API di geolocalizzazione, cookie con flagSecure— funzionano solo su connessioni sicure. Prima lo metti in piedi, prima il tuo ambiente di sviluppo si avvicina a come si comporterà il sito in produzione.

Con mkcert, tutto questo richiede dieci minuti anziché un pomeriggio.

Nel prossimo articolo vediamo come gestire più siti contemporaneamente in XAMPP con i virtual host avanzati — utile se stai lavorando su progetti multipli e vuoi un po’ d’ordine.

Se questa guida ti è stata utile e vuoi accedere a contenuti esclusivi, guide avanzate e strumenti pratici che non pubblico altrove,registrati gratuitamente: entrerai anche nella newsletter per non perderti i prossimi aggiornamenti.


Ultimo aggiornamento:Aprile 2026

Simulare un ambiente quasi-produzione in locale con XAMPP

XAMPP: accesso da altri PC in rete locale (guida completa)Gestire più siti in XAMPP con i virtual host: guida pratica
Informazioni su Luigi Randisi 98 Articoli
Nato in una piccola città, il mio interesse precoce per tecnologia e informatica ha segnato trent'anni di carriera. Dalla prima esperienza con un computer, ho dedicato la vita a sviluppare competenze, conseguendo titoli come Operatore Windows e Tecnico di Reti Informatiche. Padroneggiando il Visual Basic e approfondendo la logica di programmazione, ho ampliato la mia expertise. Nel settore dell'istruzione, come Tecnico Informatico, ho applicato conoscenze per supportare l'ambiente educativo e gestire le risorse informatiche. Sempre aggiornato sulle ultime tendenze, l'informatica è più di una professione, è la mia passione. Guardo avanti con entusiasmo, pronto ad affrontare le sfide del futuro.

Commenta per primo

Lascia un commento

L'indirizzo email non sarà pubblicato.


*