>>1094Perché ti arriva "in chiaro".
Ti arriva una stringa minuscola di richiesta ("GET /index.html" e poco altro) e tu non devi far altro che una print del contenuto sul socket.
Invece HTTPS:
- il client attiva la connessione e propone uno scambio di key
- il server decide se accettare e propone a sua volta key+challenge basandosi sulla request del client
- il client verifica dalla propria lista di key valide che la key-chain di appartenenza del server è proprio quella dichiarata con la challenge; se è OK allora conferma che il canale è crittografato e invia (crittografando) la request "GET /index.html")
- il server convalida la request del client e decrittografa la request, ottenento "GET /index.html"
- il server prepara il contenuto da spedire, e lo crittografa, e quindi sul socket fa la print del crittografato
- il client decifra il contenuto, verificando con la chiave e anche col checksum, e se è tutto a posto la richiesta è conclusa.
Quindi sia lato client che lato server c'è una caciara di lavoro perché prima bisogna prepararsi entrambi a crittografare (e assicurarsi che l'altro coincida con le key, e che il server abbia una key valida non scaduta e che sia inserita in una delle key-chain approvate (cioè quale authority ha convalidato la key del server).
La lista delle authorities è nel file .mozilla/firefox/[istanza.profilo]/cert9.db (profilo, se non configurato, è "default", mentre istanza è una sequenza di 8 caratteri casuali).
Tale db si può aprire con sqlite. Per esempio, per vedere le prime due:
>sqlite3 cert9.db> select * from nssPublic limit 2;"Google Internet Authority… CyberTrust Baltimore Microsoft…"