Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Apache e SSL - I

Come configurare Apache per la gestione di connessioni protette con SSL: introduzione
Come configurare Apache per la gestione di connessioni protette con SSL: introduzione
Link copiato negli appunti

Una tra le maggiori limitazioni dell'Internet attuale è rappresentata dal fatto che i dati tra client e server vengono inviati in chiaro, ovvero senza alcun meccanismo che possa preservare il dato dall'essere letto ed interpretato da chiunque riesca nell'intento di carpirlo. Eventualità forse rara ma non difficile da realizzarsi, e particolarmente facile nell'ambiente di una rete locale (sniffing).

SSL è un protocollo di livello intermedio tra TCP e protocolli applicativi (HTTP compreso) che fornisce ad essi il supporto necessario alla cifratura dei dati senza modificarne l'implementazione.

Questo protocollo:

  • protegge i dati in transito;
  • garantisce l'identità delle parti (generalmente solo del Web server).

Apache2 su Debian è configurato per avere di default il supporto per l'SSL (OpenSSL).

Il funzionamento

L'implementazione SSL per Web server si basa sui concetti di crittografia RSA a chiave pubblica e privata (di cui si dà per nota la logica sottostante) e di certificato X.509, il quale rappresenta un sistema col quale l'identità del server viene verificata.

Una entità terza (certification authority, CA) universalmente riconosciuta, si occupa, inizialmente ed una volta sola (previa scadenza del riconoscimento), di verificare la nostra identità e di convalidare la nostra richiesta di certificato ritornandoci il certificato da essa firmato.

La richiesta di certificato (certificate-signing request, CSR) include i dati del nostro server e la chiave pubblica dello stesso.

Quindi

  • CSR contiene (dati_identità_server + chiave_pubblica_server);
  • CRT = contiene (CSR + firma_ca).

Il browser, appena stabilita una comunicazione HTTP su tunnel SSL (visualizzata sul browser con il prefisso https:// e diretta verso la porta 443) col nostro Web server, visiona il suo certificato, che riconosce come valido o no interpretando, tramite crittografia a chiave pubblica, la firma dalla CA. Gli è possibile perché è ad esso nota la chiave pubblica della CA.

A verifica ultimata con successo, client (che conosce ora con certezza la chiave pubblica del server) e server negoziano un più veloce sistema di crittografia a chiave privata col quale cifreranno i dati scambiati fino alla chiusura della comunicazione.

La pratica

Vedremo ora come utilizzare un tunneling SSL per i dati scambiati con il nostro Web server.

Le uniche azioni a noi richieste sono l'importazione (o la generazione) di un certificato e la configurazione del modulo mod_ssl di Apache.

Utilizzeremo un nostro certificato (self-signed certificate); non essendo tale certificato tuttavia convalidato da una CA, il suo funzionamento sarà sì regolare (proteggerà i dati in transito) ma gli utenti verranno avvisati dal browser di non essere in presenza di una firma riconosciuta come valida (ovvero l'identità del server non sarà provata) in sede di visualizzazione del programma Web.

Per la creazione di un "vero" certificato, dovremo rivolgerci appunto ad una CA che, previo pagamento, ci riconoscerà un certificato valido a tutti gli effetti.

Ti consigliamo anche