
La gestione dei certificati SSL/TLS in ambienti di sviluppo può diventare rapidamente complessa, soprattutto quando si lavora con container, reverse proxy e servizi distribuiti.
mkcert nasce proprio per semplificare questo processo: uno strumento leggero e immediato che permette di generare certificati locali attendibili dai browser senza dover configurare manualmente autorità di certificazione o procedure complicate.
In questa guida vedremo come installare e configurare mkcert e mkcertWeb su Ubuntu Server 24.04, utilizzando Docker per isolare il processo di generazione dei certificati e facilitarne l’accesso tramite interfaccia web.
Passeremo dall’installazione dei componenti fondamentali alla creazione della CA locale, fino all’utilizzo di mkcertWeb per generare certificati validi per domini personalizzati, ambienti di test e servizi interni.
Un percorso semplice ma completo, ideale per chi desidera impostare rapidamente un ambiente di sviluppo HTTPS attendibile, funzionale e compatibile con browser moderni e con stack basati su container.
PREREQUISITI
Ubuntu Server 24.04 LTS
Utente appartenente al gruppo sudo
Accesso shell/SSH funzionante
AGGIORNAMENTO DEL SISTEMA
Eseguire i comandi:
|
0
1
|
sudo apt update
sudo apt install -y git build-essential openssl
|
INSTALLAZIONE DIPENDENZE
Installare le dipendenze con il comando:
|
0 |
sudo apt install -y ca-certificates curl gnupg
|
AGGIUNGERE LA KEY E IL REPO DOCKER
Eseguire i comandi:
|
0
1
2
3
4
5
6
|
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
INSTALLLARE DOCKER ENGINE + PLUGIN COMPOSE
Eseguire i comandi elencati di seguito:
|
0
1
2
|
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
Per utilizzare Docker senza sudo eseguire il comando:
|
0 |
sudo usermod -aG docker $USER
|
Quindi uscire e rientrare dalla sessione
DOWNLOAD DI MKCERTWEB E AVVIO CON DOCKER COMPOSE
Scaricare mkcertweb e avviarlo con Docker Compose
Clonare il repository con il comando:
|
0 |
git clone https://github.com/jeffcaldwellca/mkcertWeb.git
|
Quindi posizionarsi nella cartella mkcertweb con il comando:
|
0 |
cd mkcertWeb
|
CONFIGURAZIONE DELLE VARIABILI DI AMBIENTE
Copiare il file di esempio .env con il comando:
|
0 |
cp .env.example .env
|
Quindi editarlo con il comando:
|
0 |
sudo nano .env
|
Modificare i seguenti valori:
|
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# Server Configuration
PORT=3000 # HTTP server port
HTTPS_PORT=3443 # HTTPS server port
# SSL/HTTPS Configuration
ENABLE_HTTPS=true # Enable HTTPS server (true/false)
SSL_DOMAIN=test.lab # Domain name for SSL certificate
FORCE_HTTPS=true # Redirect HTTP to HTTPS (true/false)
# Application Configuration
NODE_ENV=prduction # Environment mode (development/production)
CERT_DIR= # Custom certificate storage directory (optional)
DEFAULT_THEME=dark # Default theme mode (dark/light)
# Authentication Configuration
ENABLE_AUTH=true # Enable user authentication (true/false)
AUTH_USERNAME=admin # Username for authentication (when ENABLE_AUTH=true)
AUTH_PASSWORD=PASSWORD # Password for authentication (when ENABLE_AUTH=true)
|
Salvare e chiudere il file di configurazione
AVVIO DI DOCKER
Avviare docker con il comando:
|
0 |
docker compose up -d
|
VERIFICA DEI SERVIZI DOCKER
Verificare che docker sia in esecuzione con il comando:
|
0 |
docker ps
|
Per verificare il Log dell’app eseguire il comando:
|
0 |
docker logs -f mkcertweb
|
ACCESSO A MKCERTWEB DA WEB GUI
A questo punto da un qualsiasi browser richiamare il link http://SERVER-MKCERTWEB:3000 oppure https://SERVER-MKCERTWEB:3443 e accedere con le credenziali definite precedentemente nel file .env
Cliccare Login
Se è andato tutto a buon fine dovremmo visualizzare la Home di MKCertWEB
Da questa interfaccia è possibile eseguire le attivit seguenti:
Generazione certificati
- Permette di generare certificati SSL/TLS per più domini e indirizzi IP.
- Possibilità di scegliere diversi formati in output: PEM, CRT, PFX (PKCS#12).
- Supporto per wildcard (ad es. *.dominio.local) e per più names nell’unica generazione.
Download dei certificati
Dopo la generazione, è possibile scaricare i file del certificato e della chiave direttamente tramite browser.
Gestione dei certificati esistenti
- Visualizzazione di tutti i certificati generati con informazioni quali nome soggetto, date di scadenza.
- Azioni come eliminazione (“delete”), archiviazione o ripristino dei certificati.
Autenticazione & Sicurezza
- Supporto per autenticazione di base (Basic Auth) + supporto per Single Sign-On via OpenID Connect (OIDC).
- Protezione contro iniezione di comandi, traversal di percorso, rate limiting multipli, sanitizzazione input.
Monitoraggio e notifiche
- Avvisi email automatici per certificati in scadenza, configurabili tramite SMTP.
- Sistema di monitoraggio interno che verifica periodicamente i certificati in scadenza e segnala secondo “warning days” e “critical days”.
Servizio SCEP (opzionale)
- Implementazione del protocollo SCEP (Simple Certificate Enrollment Protocol) per l’iscrizione automatica di dispositivi compatibili (iOS, macOS, Windows).
- Interfaccia /scep.html per gestire le operazioni SCEP.
API pubbliche
End point API per controllo stato sistema (GET /api/status), generazione di certificati (POST /api/generate), elenco certificati (GET /api/certificates), download file (GET /download/:filename) ecc.
Note utili
L’interfaccia supporta tema chiaro/scuro e design reattivo (responsive).
È fornito un container Docker / docker-compose già pronto.
Tutta la configurazione è tramite variabili ambiente (.env) per porta, autenticazione, SMTP, monitoraggio, ecc.
CONSIDERAZIONI FINALI
✅ Pro di mkcertWeb
1. Interfaccia grafica intuitiva: mkcertWeb semplifica l’uso di mkcert fornendo una GUI fruibile via browser. Questo riduce la dipendenza dalla riga di comando ed è particolarmente utile per chi preferisce un approccio visuale.
2. Facilita la gestione dei certificati: Permette di generare, visualizzare ed esportare certificati in pochi clic, rendendo l’intero processo più rapido e organizzato, soprattutto su server remoti.
3. Accessibile da qualunque dispositivo: Essendo web-based, puoi accedere allo strumento da qualsiasi computer collegato alla rete interna, senza installare nulla in locale.
4. Ideale per team e ambienti condivisi: Più utenti possono connettersi allo stesso pannello web (protetto) e generare certificati evitando duplicazioni, errori o setup ripetuti.
5. Riduce la curva di apprendimento: mkcertWeb è utile per chi non ha familiarità con SSL/TLS, CA locali o mkcert stesso. L’interfaccia guida l’utente e riduce il rischio di comandi errati.
❌ Contro di mkcertWeb
1. Espone un’interfaccia web che va protetta: La presenza di un pannello web aumenta la superficie d’attacco. È necessario adottare contromisure (autenticazione, firewall, accesso limitato alla LAN) per evitare accessi non autorizzati.
2. Dipende da mkcert: mkcertWeb non funziona autonomamente: richiede mkcert installato e correttamente configurato sul server. È quindi un livello aggiuntivo da gestire.
3. Aggiornamenti e manutenzione aggiuntiva: Oltre a mkcert, occorre mantenere aggiornato anche mkcertWeb. In alcuni casi le versioni potrebbero non essere perfettamente allineate.
4. Non è pensato per ambienti di produzione: Come mkcert, anche mkcertWeb è progettato per sviluppo e testing. Non può sostituire CA professionali o certificazioni per domini pubblicamente raggiungibili.
5. Richiede attenzione ai permessi: Per gestire certificati e CA locali, l’applicazione ha bisogno di privilegi adeguati. Una configurazione non corretta potrebbe diventare un rischio di sicurezza.

0 commenti