Cos'è TLS?
TLS (Transport Layer Security) è un protocollo crittografico che fornisce una comunicazione sicura sulle reti di computer. TLS è il successore di SSL (Secure Sockets Layer) ed è la tecnologia dietro connessioni HTTPS, trasmissione sicura di posta elettronica (STARTTLS), e molti altri protocolli internet crittografati. Quando si vede l'icona lucchetto nel browser, TLS sta lavorando per crittografare i dati tra il dispositivo e il server.Storia della versione TLS
| Versione | Anno | Stato |
|---|---|---|
| SSL 2.0 | 1995 | Deprecato, insicuro |
| SSL 3.0 | 1996 | Deprecato, insicuro |
| TLS 1.0 | 1999 | Deprecato |
| TLS 1.1 | 2006 | Deprecato |
| TLS 1.2 | 2008 | Standard attuale |
| TLS 1.3 | 2018 | Ultimi, consigliati |
Come funziona TLS
TLS Handshake (TLS 1.2)
Client Server
│ │
├──── ClientHello ─────────────────► │
│ (supported ciphers, random) │
│ │
│ ◄─── ServerHello ──────────────────┤
│ (selected cipher, cert) │
│ │
├──── Key Exchange ────────────────► │
│ (encrypted pre-master secret) │
│ │
│ ◄─── Finished ─────────────────────┤
│ │
└──── Encrypted Data ◄──────────────►┘
TLS 1.3 Miglioramenti
- Meno viaggi rotondi (hake più veloce)
- Codici insicuri rimossi
- Segreto in avanti obbligatorio
- Messaggi di handshake crittografati
Componenti TLS
Certificati
- autenticare l'identità del server
- Emessi dalle Autorità di certificazione
- Contiene chiave pubblica per la crittografia
Cipher Suites
Definire algoritmi di crittografia utilizzati:
TLS_AES_256_GCM_SHA384 (TLS 1.3)
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)
│ │ │ │
│ │ │ └── Hash algorithm
│ │ └── Encryption algorithm
│ └── Key exchange
└── Protocol
TLS Utilizzare i casi
| Applicazione | Protocollo | Porto |
|---|---|---|
| navigazione web | HTTPS | 443 |
| Email (IMAP) | IMAPS | 993 |
| Email (SMTP) | SMTPS | 465 |
| STARTTISTI | 587 | |
| FTP | FTPS | 990 |
Configurazione server
Nginx TLS Configurazione
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
Migliori Pratiche
1. Utilizzare TLS 1.2 o 1.3 Disattivare le versioni precedenti
2. Strong cipher suite Preferire i cifrari AEAD
3. Abilita' HSTS. Collegamenti forza TLS
4. Gestione dei certificati Automatizzare il rinnovamento
5. Segreto di marcia: Usa lo scambio di chiavi ECDHE
6. Prove regolari: SSL Labs, testingsl.sh
Test di configurazione TLS
# OpenSSL test
openssl s_client -connect example.com:443 -tls1_3
# Check certificate
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -text
TLS è il fondamento della comunicazione internet sicura, crittografare i dati in transito per proteggere contro intercettazioni, manomissioni e attacchi uomo-in-the-middle.