X.509 è uno standard ITU (Unione internazionale delle telecomunicazioni) che definisce il formato dei certificati a chiave pubblica. X.509 sono utilizzati prevalentemente dai protocolli crittografici TLS / SSL, la base per l’HTTPS. Un certificato X.509 associa un’identità a una chiave pubblica utilizzando una firma digitale. Un certificato contiene un’identità (nome host, organizzazione, ecc.) e una chiave pubblica (RSA, DSA, ECDSA, ed25519, ecc.) è firmato da un’autorità di certificazione o è Self Signed (autofirmato).
Appunti per Certificati SSL
Certificati Self-Signed
Genera CA
- Genera RSA
1
| openssl genrsa -aes256 -out ca-key.pem 4096
|
- Genera un Cert. CA pubblica
1
| openssl req -new -x509 -sha256 -days 365 -key ca-key.pem -out ca.pem
|
Generare Certificato
- Crea una key RSA
1
| openssl genrsa -out cert-key.pem 4096
|
- Crea un certificato Signing Request (CSR)
1
| openssl req -new -sha256 -subj "/CN=tuocn" -key cert-key.pem -out cert.csr
|
- Crea un
extfile
con tutti gli alternative names al suo interno
1
| echo "subjectAltName=DNS:tuo-record.dns,IP:257.10.10.1" >> extfile.cnf
|
1
2
| # OPZIONALE
echo extendedKeyUsage = serverAuth >> extfile.cnf
|
- Crea il certificato
1
| openssl x509 -req -sha256 -days 365 -in cert.csr -CA ca.pem -CAkey ca-key.pem -out cert.pem -extfile extfile.cnf -CAcreateserial
|
Certificati X.509 esistono nel formato Base64 PEM (.pem, .crt, .ca-bundle), PKCS#7 (.p7b, p7s) e formato binario DER (.der, .cer), PKCS#12 (.pfx, p12).
Convertire i Certificati
Comando |
Conversione |
openssl x509 -outform der -in cert.pem -out cert.der |
PEM a DER |
openssl x509 -inform der -in cert.der -out cert.pem |
DER a PEM |
openssl pkcs12 -in cert.pfx -out cert.pem -nodes |
PFX a PEM |
Verificare i Certificati
openssl verify -CAfile ca.pem -verbose cert.pem
Installare il certificato CA Cert come trusted root CA
Su Debian & Derivati
- Sposta il certificato CA (
ca.pem
) in /usr/local/share/ca-certificates/ca.crt
.
- Aggiorna lo store dei certificati con:
1
| sudo update-ca-certificates
|
Fare riferimento alla documentazione qui. e qui.
Su Fedora
- Sposta il certificato CA (
ca.pem
) in /etc/pki/ca-trust/source/anchors/ca.pem
o /usr/share/pki/ca-trust-source/anchors/ca.pem
- Eseguire (con sudo se necessario):
Fare riferimento alla documentazione qui.
Su Windows
Presupponiamo che il certificato CA è stato generato nel seguente path: C:\ca.pem
, esegui:
1
| Import-Certificate -FilePath "C:\ca.pem" -CertStoreLocation Cert:\LocalMachine\Root
|
- Imposta
-CertStoreLocation
a Cert:\CurrentUser\Root
nel caso in cui vuoi che il certificato sia trusted per il solo utente autenticato durante la sessione corrente.
O
nel prompt dei comandi, esegui:
1
| certutil.exe -addstore root C:\ca.pem
|
certutil.exe
è un tool di sistema (classico System32
) e aggiunge a tutto il sistema.
Su Android
Gli step possono variare da device a device, di seguito delle linee guida generalizzate (occorre incaso trovare nelle vostre Impostazioni e cercare “certificati” all’interno di esse nel riquadro con la lente):
- Aprire le Impostazioni del vostro telefono
- Trovate le voci
Codifica e Credenziali
. generalmente lo su può trovare sotto Impostazioni > Sicurezza > Codifica e Credenziali
- Seleziona
Installare un certificato
- Seleziona
Certificato CA
- Localizzate il vostro
ca.pem
sulla vostra SD Card o Storage interno usando il file manager.
- Selezionatelo e caricatelo.
- Fatto!