Immagina di avere 10 anni e vuoi capire cosa sono i certificati e come funzionano. Pensa ai certificati come a carte d'identità speciali per computer e siti web che dimostrano che sono ciò che dicono di essere!
Pensa a Internet come a un grande teatro dove tutti indossano maschere. Come fai a sapere se qualcuno è davvero chi dice di essere?
I certificati sono come badge di identificazione speciali che dimostrano l'identità:
- 🎫 Il tuo biglietto = Il tuo computer/telefono
- 🏛️ La sicurezza del teatro = Autorità di Certificazione (CA)
- 🎭 Attori sul palco = Siti web e server
- 🆔 Badge ID ufficiali = Certificati digitali
Proprio come una guardia di sicurezza al teatro controlla i badge ID, il tuo computer controlla i certificati per assicurarsi che i siti web siano reali e sicuri!
Il nostro script è come una fabbrica di certificati che crea diversi tipi di badge di identificazione per il nostro sistema. Vediamo cosa produce!
# Lo script verifica prima se ha gli strumenti giusti:
- OpenSSL (macchina per creare certificati)
- Java keytool (assistente certificati Android)
- certificates.conf (libro di ricette con tutte le impostazioni)Cos'è una CA? Pensala come l'"Ufficio Badge ID" di cui tutti si fidano (wms_ca.crt e wms_ca.key).
File Creati:
wms_ca.key(2048 bit) - La Chiave Maestra 🗝️wms_ca.crt(3650 giorni = 10 anni) - Il Badge ID Maestro 🆔
Cosa succede:
# Passaggio 2a: Crea una chiave maestra super-segreta
openssl genrsa -aes256 -passout pass:wms_ca_password_2024 -out wms_ca.key 2048
# Crea: wms_ca.key (file chiave privata)
# Perché: Abbiamo bisogno di una chiave segreta per firmare i certificati in seguito
# Passaggio 2b: Crea il certificato maestro
openssl req -new -x509 -days 3650 -key wms_ca.key -out wms_ca.crt
# Richiede: wms_ca.key (creato nel passaggio 2a)
# Crea: wms_ca.crt (certificato pubblico)
# Perché abbiamo bisogno di wms_ca.key: Per dimostrare che possediamo questo certificato e possiamo firmarne altriDettagli Tecnici:
- Dimensione Chiave: 2048 bit (sicurezza molto forte, come una serratura super-complicata)
- Algoritmo: RSA con crittografia AES-256 (il tipo di serratura più forte)
- Validità: 10 anni (quanto tempo l'ufficio badge rimane aperto)
- Protetto da Password: Sì (necessita di una password segreta per usarlo)
Cos'è questo? Il badge ID speciale per il nostro sito web (wms.crt) così i browser si fidano di esso.
File Creati:
wms.key(2048 bit) - Chiave Privata del Sito Web 🔐wms.csr- Modulo Richiesta Certificato 📝wms.crt(365 giorni = 1 anno) - Badge ID del Sito Web 🌐wms.conf- Istruzioni Speciali 📋
Cosa succede:
# Passaggio 3a: Crea la chiave privata del sito web
openssl genrsa -aes256 -passout pass:wms_server_password_2024 -out wms.key 2048
# Crea: wms.key (chiave privata del server)
# Perché: Il server ha bisogno della propria chiave segreta, separata dalla CA
# Passaggio 3b: Crea una richiesta per un badge ID
openssl req -new -key wms.key -out wms.csr -config wms.conf
# Richiede: wms.key (creato nel passaggio 3a) + wms.conf (file di configurazione)
# Crea: wms.csr (richiesta di firma certificato)
# Perché abbiamo bisogno di wms.key: Per dimostrare che controlliamo la chiave privata del server
# Perché abbiamo bisogno di wms.conf: Contiene i dettagli del server e le estensioni di sicurezza
# Passaggio 3c: La CA timbra la richiesta e crea il badge ufficiale
openssl x509 -req -in wms.csr -CA wms_ca.crt -CAkey wms_ca.key -out wms.crt
# Richiede: wms.csr (dal passaggio 3b) + wms_ca.crt (dal passaggio 2) + wms_ca.key (dal passaggio 2)
# Crea: wms.crt (certificato server firmato)
# Perché abbiamo bisogno di wms.csr: Contiene la chiave pubblica del server e le informazioni di identità
# Perché abbiamo bisogno di wms_ca.crt: Mostra chi sta firmando il certificato
# Perché abbiamo bisogno di wms_ca.key: Dimostra che siamo la CA legittima e possiamo firmare certificatiCaratteristiche Speciali (Subject Alternative Names):
- Può funzionare con:
localhost,wms.local,*.wms.local - Può funzionare con IP:
127.0.0.1,192.168.1.188,::1 - Perché? Così lo stesso certificato funziona da indirizzi diversi!
Cos'è questo? Creazione di versioni speciali del nostro certificato CA che Windows e Android possono accettare come se fossero vere Autorità di Certificazione come VeriSign o DigiCert!
La Trasformazione Magica:
Il nostro script prende il certificato CA principale (wms_ca.crt) e crea versioni specifiche per piattaforma che ogni sistema operativo riconosce e di cui si fida.
File Creati per Windows:
wms_ca.crt- Certificato CA X.509 Standard 🏛️
Cosa lo rende speciale per Windows:
# Il certificato CA ha questi attributi compatibili con Windows:
Subject: /C=US/ST=NewYork/L=NewYork/O=WMSRootCA/OU=CertificateAuthority/CN=WMSRootCA
Basic Constraints: CA:TRUE (Critical)
Key Usage: Certificate Sign, CRL Sign
Validity: 10 anni (3650 giorni)Come Windows lo riconosce come una vera CA:
- Formato X.509 standard - Windows lo comprende perfettamente
- Flag CA:TRUE - Dice a Windows "Posso firmare altri certificati"
- Uso Certificate Sign - Permesso di agire come Autorità di Certificazione
- Installazione nel negozio radice - Quando installato in "Autorità di certificazione radice attendibili"
La Magia Windows:
Quando installi wms_ca.crt nel negozio radice attendibile Windows:
✅ Windows lo tratta esattamente come VeriSign, DigiCert, o qualsiasi CA commerciale
✅ Qualsiasi certificato firmato da questa CA viene automaticamente considerato attendibile
✅ I browser (Chrome, Edge, Firefox) si fidano automaticamente
✅ Tutte le applicazioni Windows si fidano automaticamente
File Creati per Android:
android_ca_system.pem- Certificato archivio utente Android 📱[hash].0(comea1b2c3d4.0) - Certificato archivio sistema Android 🔒
Passaggio 4a: Creazione di android_ca_system.pem
# Semplicemente copiare il certificato CA con un nome compatibile Android
copy "wms_ca.crt" android_ca_system.pem
# Richiede: wms_ca.crt (dal passaggio 2)
# Crea: android_ca_system.pem (copia identica con nome diverso)
# Perché abbiamo bisogno di wms_ca.crt: Questo è il nostro certificato CA di cui Android deve fidarsiCosa rende android_ca_system.pem speciale:
- Formato PEM - Formato testo preferito da Android (
android_ca_system.pem) - Nome file descrittivo - Aiuta gli utenti a identificarlo durante l'installazione (
android_ca_system.pem) - Stesso contenuto di wms_ca.crt - Solo rinominato per chiarezza
Passaggio 4b: Creazione del certificato con nome hash
# Ottieni l'hash unico del certificato
for /f %%i in ('openssl x509 -noout -hash -in "wms_ca.crt"') do set CERT_HASH=%%i
# Richiede: wms_ca.crt (dal passaggio 2)
# Perché: Il sistema Android deve calcolare l'hash per creare il nome file appropriato
# Copia il certificato con il nome file hash (come a1b2c3d4.0)
copy "wms_ca.crt" "%CERT_HASH%.0"
# Richiede: wms_ca.crt (dal passaggio 2) + CERT_HASH (calcolato sopra)
# Crea: [hash].0 (come a1b2c3d4.0)
# Perché abbiamo bisogno di wms_ca.crt: Stesso contenuto del certificato, solo rinominato per l'archivio sistema AndroidPerché questo nome file hash strano?
- Requisito del sistema Android - I certificati di sistema devono essere nominati con il loro hash
- Identificazione unica - L'hash garantisce che non ci siano conflitti di nomi file
- Riconoscimento automatico - Android carica automaticamente tutti i file .0 nella directory dei certificati di sistema
- Ricerca veloce - Android può trovare rapidamente i certificati per hash
La Magia Android:
Installazione nell'Archivio Utente (android_ca_system.pem):
Quando installato nell'archivio certificati utente Android:
✅ La maggior parte delle app si fiderà (se configurate per fidarsi dei certificati utente)
✅ Installazione facile tramite Impostazioni
✅ L'utente può rimuoverlo in qualsiasi momento
❌ Alcune app focalizzate sulla sicurezza ignorano i certificati utente
### ⛓️ Creazione del File Catena Certificati
**File Creati:**
- `wms_chain.crt` - **Catena certificati completa** ⛓️
**Cosa succede:**
```bash
# Combina certificato server + certificato CA
copy "wms.crt" + "wms_ca.crt" wms_chain.crt
# Richiede: wms.crt (dal passaggio 3) + wms_ca.crt (dal passaggio 2)
# Crea: wms_chain.crt (catena certificati combinata)
# Perché abbiamo bisogno di wms.crt: Il certificato del server (fine della catena)
# Perché abbiamo bisogno di wms_ca.crt: Il certificato CA (radice della catena)
# Perché combinare: I browser hanno bisogno della catena completa per verificare la fiducia
Perché è necessario:
- Percorso fiducia completo - Mostra la catena completa dal server alla radice attendibile (
wms_chain.crt) - Convalida più veloce - I client non devono recuperare i certificati mancanti (
wms_chain.crt) - Migliore compatibilità - Alcuni client richiedono la catena completa (
wms_chain.crt) - Ottimizzazione Apache - Il server web può inviare la catena completa immediatamente (
wms_chain.crt)
Diamo un'occhiata a OGNI file che il nostro script di certificati crea e capiamo cosa fa ciascuno!
| File | Dimensione | Scopo | Piattaforma | Mantenere Segreto? |
|---|---|---|---|---|
wms_ca.key |
~1.7KB | Chiave privata CA | Entrambe | 🔴 TOP SECRET |
wms_ca.crt |
~1.3KB | Certificato CA | Entrambe | 🟢 Condividi liberamente |
wms.key |
~1.7KB | Chiave privata server | Windows | 🔴 Mantieni segreto |
wms.csr |
~1KB | Richiesta certificato | Entrambe | 🟡 Puoi eliminare dopo |
wms.crt |
~1.3KB | Certificato server | Windows | 🟢 Condividi liberamente |
wms.conf |
~500B | Config OpenSSL | Entrambe | 🟡 Puoi eliminare dopo |
android_ca_system.pem |
~1.3KB | CA utente Android | Android | 🟢 Condividi liberamente |
[hash].0 |
~1.3KB | CA sistema Android | Android | 🟢 Condividi liberamente |
wms_chain.crt |
~2.6KB | Catena completa | Windows | 🟢 Condividi liberamente |
Cos'è:
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQ...
...
-----END ENCRYPTED PRIVATE KEY-----
Dettagli Tecnici:
- Formato: Chiave privata RSA codificata PEM, crittografata AES-256
- Dimensione Chiave: 2048 bit (256 byte di materiale chiave)
- Crittografia: AES-256-CBC con derivazione chiave PBKDF2
- Password:
wms_ca_password_2024(dal file di configurazione) - Scopo: Firma altri certificati per renderli attendibili
Perché è TOP SECRET:
- Chiunque abbia questa chiave può creare certificati attendibili (
wms_ca.key) - Potrebbe impersonare qualsiasi sito web se ce l'ha (
wms_ca.key) - Come avere la chiave maestra per creare false carte d'identità (
wms_ca.key) - Conserva in una cassaforte, non condividere mai, non perdere mai! (
wms_ca.key)
Cos'è:
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Dettagli Tecnici:
- Formato: Certificato X.509 codificato PEM
- Validità: 10 anni (3650 giorni)
- Numero di Serie: Identificatore unico generato casualmente
- Algoritmo di Firma: SHA-256 con RSA
- Chiave Pubblica: Chiave pubblica RSA 2048 bit (corrisponde alla chiave privata)
Campi del Certificato:
Subject: C=US, ST=New York, L=New York, O=WMS Root CA, OU=Certificate Authority, CN=WMS Root CA
Issuer: C=US, ST=New York, L=New York, O=WMS Root CA, OU=Certificate Authority, CN=WMS Root CA
(Auto-firmato: Subject = Issuer)
Estensioni:
Basic Constraints: CA:TRUE (Critical)
Key Usage: Certificate Sign, CRL Sign
Subject Key Identifier: [hash unico]
Authority Key Identifier: [identico al Subject Key ID - auto-firmato]
Perché è condivisibile:
- Contiene solo informazioni pubbliche (
wms_ca.crt) - Mostra la chiave pubblica, non la chiave privata (
wms_ca.crt) - Come mostrare la propria carta d'identità a qualcuno - sicuro da condividere (
wms_ca.crt) - I client hanno bisogno di questo per verificare i certificati che firmi (
wms_ca.crt)
Cos'è:
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8...
...
-----END PRIVATE KEY-----
Dettagli Tecnici:
- Formato: Chiave privata RSA codificata PEM (non crittografata dopo l'elaborazione dello script)
- Dimensione Chiave: 2048 bit
- Originariamente Crittografata: Sì, ma passphrase rimossa per Apache
- Scopo: Dimostra che il server è chi dice di essere
Il Processo di Rimozione della Passphrase:
# Originale: chiave crittografata con password
openssl genrsa -aes256 -passout pass:wms_server_password_2024 -out wms.key 2048
# Crea: wms.key (crittografato con password)
# Dopo: rimuovere la password per Apache (i server non amano digitare password)
openssl rsa -in wms.key -passin pass:wms_server_password_2024 -out wms.key.unencrypted
# Richiede: wms.key (versione crittografata)
# Crea: wms.key.unencrypted (versione senza password)
# Perché abbiamo bisogno della versione crittografata: Per decrittarla e rimuovere la passwordPerché mantenerlo segreto:
- Chiunque abbia questo può impersonare il tuo server (
wms.key) - Come qualcuno che ruba la chiave di casa tua (
wms.key) - Solo il tuo server web dovrebbe avere accesso (
wms.key)
Cos'è:
-----BEGIN CERTIFICATE REQUEST-----
MIICWjCCAUICAQAwFTETMBEGA1UEAwwKbXlkb21haW4uY29tMIIBIjANBgkqhkiG...
...
-----END CERTIFICATE REQUEST-----
Dettagli Tecnici:
- Formato: Richiesta certificato PKCS#10 codificata PEM
- Contiene: Chiave pubblica + informazioni identità + estensioni richieste
- Scopo: Chiedere alla CA "Per favore fammi un certificato con questi dettagli"
Cosa c'è dentro:
Subject: C=US, ST=New York, L=New York, O=WMS Organization, CN=wms.local
Public Key: [chiave pubblica RSA 2048 bit]
Estensioni Richieste:
- Subject Alternative Names: localhost, wms.local, *.wms.local, 127.0.0.1, ecc.
- Key Usage: Digital Signature, Key Encipherment
- Extended Key Usage: Server Authentication
Può eliminare dopo l'uso:
- Necessario solo durante la creazione del certificato
- Come una domanda di lavoro - non più necessaria una volta ottenuto il lavoro
- Sicuro da eliminare dopo la creazione di wms.crt
Cos'è:
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Dettagli Tecnici:
- Formato: Certificato X.509 codificato PEM
- Validità: 1 anno (365 giorni)
- Firmato da: wms_ca.crt (la nostra CA)
- Scopo: Dimostra l'identità del server wms.local
Campi del Certificato:
Subject: C=US, ST=New York, L=New York, O=WMS Organization, CN=wms.local
Issuer: C=US, ST=New York, L=New York, O=WMS Root CA, CN=WMS Root CA
(Firmato dalla nostra CA, non auto-firmato)
Estensioni Critiche:
Subject Alternative Name:
DNS:localhost
DNS:wms.local
DNS:*.wms.local
IP:127.0.0.1
IP:192.168.1.188
IP:::1
Key Usage: Digital Signature, Key Encipherment
Extended Key Usage: Server Authentication
Perché il SAN è cruciale:
- I browser verificano se il certificato corrisponde all'URL che stai visitando
- Senza un SAN appropriato, ottieni avvisi di sicurezza spaventosi
- Il nostro certificato funziona con più indirizzi
Cos'è:
# Contenuto identico a wms_ca.crt, solo rinominato
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Perché il rinomina:
- Gli utenti Android si aspettano l'estensione .pem
- Il nome file descrittivo aiuta durante l'installazione
- Esattamente lo stesso contenuto di wms_ca.crt
- Rende ovvio che è per Android
Cos'è:
# Stesso contenuto di wms_ca.crt, nome file speciale
# Esempio nome file: a1b2c3d4.0
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Il Calcolo dell'Hash:
# I certificati di sistema Android devono essere nominati con il loro hash soggetto
openssl x509 -noout -hash -in wms_ca.crt
# Output: a1b2c3d4 (esempio)
# Quindi il nome file diventa: a1b2c3d4.0Perché questa denominazione:
- Requisito Android per l'archivio di sistema
- L'hash previene conflitti di nomi file
- Android riconosce automaticamente l'estensione .0
- Consente una ricerca rapida dei certificati per hash
Cos'è:
# Certificato server per primo
-----BEGIN CERTIFICATE-----
[contenuto di wms.crt]
-----END CERTIFICATE-----
# Poi certificato CA
-----BEGIN CERTIFICATE-----
[contenuto di wms_ca.crt]
-----END CERTIFICATE-----
Struttura:
Ordine Catena Certificati (importante!):
1. Certificato Entità Finale (wms.crt) - Il certificato del server
2. CA Intermedia (nessuna nel nostro caso)
3. Certificato CA Radice (wms_ca.crt) - Il nostro certificato CA
Perché l'ordine è importante:
- Deve andare dal certificato server alla CA radice
- Un ordine sbagliato causa errori di convalida
- I client seguono la catena anello per anello
Cos'è:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = New York
# ... altri campi
[v3_req]
keyUsage = critical,digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = wms.local
# ... altre vociScopo:
- Istruzioni per OpenSSL
- Definisce le estensioni del certificato
- Specifica i Subject Alternative Names
- Può essere eliminato dopo la creazione del certificato
| Formato | Estensione | Cos'è | Come... |
|---|---|---|---|
| PEM | .pem, .crt, .key |
Formato testo che puoi leggere | Una lettera scritta in italiano |
| DER | .der, .cer |
Formato binario che i computer amano | Una lettera scritta in codice informatico |
| P12/PFX | .p12, .pfx |
Pacchetto con chiave + certificato | Una busta sigillata con ID + chiave dentro |
| JKS | .jks |
Keystore Java | Uno scrigno del tesoro Java |
| BKS | .bks |
Keystore Android | Uno scrigno del tesoro Android |
Le Nostre Chiavi Usano:
- Algoritmo: RSA (il più comune e affidabile)
- Dimensione Chiave: 2048 bit (molto sicuro, raccomandato dagli esperti)
- Crittografia: AES-256 (protezione password super forte)
Perché 2048 bit? Pensala come una serratura con 2048 perni diversi. Per forzarla, qualcuno dovrebbe provare 2^2048 combinazioni - è più di tutti gli atomi nell'universo!
Windows ha diversi "scrigni del tesoro" (archivi) per i certificati:
- Personale 👤 - I tuoi certificati privati (come la tua carta d'identità personale)
- Autorità di certificazione radice attendibili 🏛️ - Gli uffici badge ID di cui ti fidi
- Autorità di certificazione intermedie 🏢 - Uffici badge ID ausiliari
- Autori attendibili ✅ - Produttori di software di cui ti fidi
1. 📁 Trova il tuo file wms_ca.crt
2. 🖱️ Doppio click su di esso
3. 🛡️ Fai clic su "Installa certificato"
4. 🏪 Scegli "Computer locale" (per tutti gli utenti) o "Utente corrente" (solo per te)
5. 📍 Seleziona "Metti tutti i certificati nel seguente archivio"
6. 🏛️ Sfoglia fino a "Autorità di certificazione radice attendibili"
7. ✅ Fai clic su "OK" e "Fine"
# Importa certificato CA nell'archivio radice attendibile
certlm.msc /add wms_ca.crt /store "Root"
# Oppure usando PowerShell
Import-Certificate -FilePath "wms_ca.crt" -CertStoreLocation Cert:\LocalMachine\RootCosa Serve:
- Certificato CA Radice - Il capo supremo (il tuo
wms_ca.crt) - CA Intermedia (opzionale) - Manager intermedio
- Certificato Entità Finale - Il vero lavoratore (il tuo
wms.crt)
1. Installa CA Radice nell'Archivio Radice Attendibile:
# Deve essere in "Autorità di certificazione radice attendibili"
Import-Certificate -FilePath "wms_ca.crt" -CertStoreLocation Cert:\LocalMachine\Root2. Installa Certificato Server nell'Archivio Personale:
# Il certificato server va nell'archivio "Personale"
Import-Certificate -FilePath "wms.crt" -CertStoreLocation Cert:\LocalMachine\My3. Verifica Costruzione Catena:
# Verifica se Windows può costruire la catena
Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*wms.local*"}Convalida Catena Certificati:
[CA Radice] wms_ca.crt (nell'archivio Radice attendibile)
↓ firmato da
[Certificato Server] wms.crt (nell'archivio Personale)
↓ usato da
[Il Tuo Sito Web] https://wms.local
Windows verifica:
- ✅ Il certificato server è firmato da una CA attendibile?
- ✅ Il certificato CA è nell'archivio Radice attendibile?
- ✅ Le date del certificato sono valide?
- ✅ Il certificato corrisponde al nome del sito web?
Android ha due livelli di archiviazione certificati:
- Posizione: Impostazioni > Sicurezza > Crittografia e credenziali
- Scopo: Le app possono scegliere di fidarsi o meno
- Sicurezza: Media (le app decidono cosa fare)
- Facile da Installare: Sì! ✅
- Posizione:
/system/etc/security/cacerts/ - Scopo: TUTTE le app si fidano automaticamente
- Sicurezza: Alta (fiducia automatica per tutto)
- Facile da Installare: No, richiede accesso root 🔴
1. 📂 Copia android_ca_system.pem sul tuo telefono
2. 📱 Vai in Impostazioni > Sicurezza > Crittografia e credenziali
3. 📥 Tocca "Installa da archiviazione" o "Installa certificato"
4. 📁 Trova e seleziona android_ca_system.pem
5. 🏷️ Dagli un nome come "WMS CA"
6. 🔒 Scegli "Certificato CA" quando richiesto
7. ✅ Inserisci il blocco schermo (PIN/password/segno)
Modifiche Sicurezza Android 7+:
- Le app che mirano all'API 24+ ignorano i certificati utente per impostazione predefinita
- Soluzione: L'app deve fidarsi esplicitamente dei certificati utente
- La nostra app: Già configurata per fidarsi dei certificati utente! ✅
Cosa Serve ad Android:
- CA Radice nell'archivio certificati (utente o sistema)
- Catena certificati completa nella risposta del server
- Estensioni certificato appropriate (Critico!)
- Corrispondenza hostname valida
Il Certificato CA Radice Deve Avere:
Basic Constraints: CA:TRUE (Critical)
Key Usage: Certificate Sign, CRL Sign
Il Certificato Server Deve Avere:
Basic Constraints: CA:FALSE
Key Usage: Digital Signature, Key Encipherment
Extended Key Usage: Server Authentication
Subject Alternative Name: Nomi DNS e IP
Processo di Convalida Android:
1. 📱 L'app si connette a https://wms.local
2. 🔍 Il server invia la catena certificati: [wms.crt + wms_ca.crt]
3. 🔎 Android verifica: wms_ca.crt è nel mio archivio attendibile?
4. ✅ Trovato nell'archivio utente? Verifica se l'app si fida dei certificati utente
5. ✅ Trovato nell'archivio sistema? Fiducia automatica
6. 🏷️ Verifica: wms.crt corrisponde all'hostname "wms.local"?
7. 📅 Verifica: I certificati sono ancora validi (non scaduti)?
8. 🔐 Verifica: Sono presenti tutte le estensioni richieste?
9. ✅ Tutto bene? Connessione consentita!
Problema: "Impossibile costruire la catena di certificati" Soluzione: Installa il certificato CA nell'archivio Radice attendibile, non nell'archivio Personale
Problema: "Mancata corrispondenza nome certificato" Soluzione: Aggiungi il nome del tuo server ai Subject Alternative Names (SAN)
Problema: "Certificato scaduto" Soluzione: Verifica data/ora di sistema e date validità certificato
Problema: "Certificato non attendibile" Soluzione: Installa il certificato CA correttamente e assicurati che l'app si fidi dei certificati utente
Problema: "Verifica hostname fallita" Soluzione: Assicurati che il SAN del certificato includa l'IP/hostname del tuo server
Problema: "L'app ignora i certificati utente" Soluzione: L'app deve essere configurata per fidarsi dei certificati utente (la nostra lo è!)
- Certificati = Badge ID digitali che dimostrano l'identità
- Autorità di Certificazione = Ufficio badge ID attendibile che firma certificati
- Chiave Privata = Chiave segreta che solo tu hai
- Certificato Pubblico = Badge ID che tutti possono vedere
- Catena Certificati = Catena di fiducia dalla CA radice al tuo certificato
- wms_ca.key - Chiave maestra segreta (tienila MOLTO al sicuro!)
- wms_ca.crt - Certificato maestro pubblico (condividi con i client)
- wms.key - Chiave segreta del server (tienila al sicuro!)
- wms.crt - Certificato pubblico del server (Apache lo usa)
- android_ca_system.pem - Certificato CA compatibile Android
- [hash].0 - Certificato Android livello sistema
- wms_chain.crt - Catena certificati completa
- Tieni segrete le chiavi private (file .key) - Non condividerle mai!
- Usa password forti - Il nostro script usa buone impostazioni predefinite
- Rinnovo regolare certificati - Sostituisci prima della scadenza
- Archiviazione appropriata certificati - L'archivio giusto per lo scopo giusto
- Verifica catene certificati - Testa che la fiducia funzioni
- Esegui lo script certificati
- Installa il certificato CA sui tuoi dispositivi
- Configura Apache per usare il certificato server
- Testa le connessioni HTTPS
- Monitora le date di scadenza certificati
Ricorda: I certificati sono come badge ID per il mondo digitale. Proprio come non ti fideresti di qualcuno senza un'identificazione appropriata nella vita reale, i computer usano i certificati per verificare con chi stanno parlando online! 🌐🔒
- OpenSSL: Creazione e gestione certificati
- certmgr.msc: Gestore certificati Windows
- certlm.msc: Gestore certificati computer locale
- keytool: Strumento certificati Java/Android
- ADB: Debug Android e installazione certificati
Ora comprendi i certificati come un professionista! 🎉