SSL (secure Socket Layer) è un protocollo che permette l'invio di pacchetti criptati in Internet ed possibile "abbinarlo" al normale HTTP per avere maggior sicurezza sul traffico prodotto dal server e dal client.
Questa soluzione viene adottata in molti casi, soprattutto per siti che richiedono un elevato livello di sicurezza come site e-commerce o siti che trattano informazioni personali. L'utilizzo del protocollo HTTPS (HTTP Secure) non implica che il server in questione diventi invulnerabile a possibili attacchi ma evita semplicemente (o rende molto più difficile) che il traffico possa essere "sniffato" per dedurre informazioni come password o numeri delle carte di credito.
La procedura di criptazione dati è relativamente semplice, si basa su una chiave pubblica che il server invia al client ad ogni connessione, per permettergli di inviare in modo sicuro la propria key.
Questi pacchetti criptati possono essere letti solo dal server che ha rilasciato la chiave pubblica poiché sarà l'unico host a possedere la chiave privata, l'unica chiave che ha la possibilità di decriptare le informazioni ricevute.
Il browser grazie alla chiave pubblica inviatagli dal server, e il seguente scambio di chiavi fra client e server, permette di identificare entrambi in modo univoco per prevenire quel tipo di attacco denominato come mimicking (man-in-the-middle attack).
Tipicamente il protocollo HTTP e HTTPS sono distinti anche per quanto rigurda le porte in cui il servizio è tipicamente disponibile, il protocollo HTTP si usa sulla porta 80 e quello HTTPS sulla porta 443, quindi il nostro browser quando dovrà accedere ad una risorsa con il protocollo HTTPS la richiederà al server aprendo una connessione sulla porta 443.
Esistono molteplici soluzioni per l'implementazioni di SSL con Apache, come un progetto del core team di Apache Apache-SSL o anche soluzioni commerciali, ma l'opzione più comune è l'uso del modulo mod_ssl, poiché permette di astrarre le funzionalità di openssl in un modulo, e la sua portabilità in tutti i sistemi Unix e windows lo rendono un oggetto universale.
Installazione e configurazione di openssl e mod_ssl, Creazione di chiavi e certificati.