Il Secure Socket Layer (SSL) viene utilizzato per crittografare il flusso di dati tra il server web e il client web (il browser).
SSL utilizza la cosiddetta crittografia asimmetrica, comunemente denominata crittografia a chiave pubblica (PKI). Con la crittografia a chiave pubblica vengono create due chiavi, una pubblica e una privata. Qualunque cosa crittografata con entrambe le chiavi può essere decrittografata solo con la chiave corrispondente. Pertanto, se un messaggio o un flusso di dati sono stati crittografati con la chiave privata del server, possono essere decrittografati solo utilizzando la chiave pubblica corrispondente, garantendo che i dati provengano solo dal server.
Il certificato SSL Apache firmato da un'autorità di certificazione (CA) affidabile garantisce che il titolare del certificato sia una persona o un'organizzazione reale. Senza un certificato firmato affidabile, i tuoi dati potrebbero essere crittografati, tuttavia, la parte con cui stai comunicando potrebbe non essere chi pensi. Senza il certificato SSL di Apache, gli attacchi di impersonificazione sarebbero molto più comuni.
Il toolkit openssl viene utilizzato per generare una chiave privata RSA e una CSR (Certificate Signing Request). Può anche essere utilizzato per generare certificati autofirmati che possono essere utilizzati a scopo di test o per uso interno.
Passaggio 1: genera una chiave privata
Il primo passo è creare la tua chiave privata RSA. Questa chiave è una chiave RSA a 1024 bit che viene crittografata utilizzando Triple-DES e archiviata in un formato PEM in modo che sia leggibile come testo ASCII.
openssl genrsa -des3 -out server.key 1024
Generazione della chiave privata RSA, modulo lungo 1024 bit
.........................................................++++++
........++++++
e è 65537 (0x10001)
Inserisci la passphrase PEM:
Verifica password: inserisci la passphrase PEM:
Passaggio 2: generare una CSR (richiesta di firma del certificato)
Una volta generata la chiave privata, è possibile generare una richiesta di firma del certificato. La CSR viene quindi utilizzata in due modi. Idealmente, la CSR verrà inviata a un'autorità di certificazione, come Verisign, che verificherà l'identità del richiedente ed emetterà un certificato firmato. La seconda opzione è autofirmare la CSR, come verrà dimostrato nella sezione successiva.
Durante la generazione della CSR ti verranno richieste diverse informazioni. Questi sono gli attributi X.509 del certificato. Uno dei prompt sarà "Nome comune (ad esempio, il TUO nome)". È importante che questo campo sia compilato con il nome di dominio completo del server da proteggere tramite SSL. Se il sito web da proteggere è https://yourdomain.com, quindi inserisci "tuodominio.com" al prompt. Il comando per generare la CSR è il seguente:
openssl req -new -key server.key -out server.csr
Nome Paese (codice a 2 lettere) [GB]:IN
Nome dello stato o della provincia (nome completo) [Berkshire]:Karnataka
Nome della località (ad esempio, città) [Newbury]: Bangalore
Nome dell'organizzazione (ad esempio, azienda) [My Company Ltd]: nome dell'azienda
Nome dell'unità organizzativa (ad esempio, sezione) []:Information Technology
Nome comune (ad esempio, il tuo nome o il nome host del tuo server) []:tuodominio.com
Indirizzo e-mail []:[email protected]
Inserisci i seguenti attributi "extra".
da inviare insieme alla richiesta di certificato
Una password di sfida []:
Un nome di società facoltativo []:
Passaggio 3: rimuovere la passphrase dalla chiave
Uno sfortunato effetto collaterale della chiave privata con passphrase è che il server web richiederà la passphrase ogni volta che viene avviato il server web. Ovviamente questo non è necessariamente conveniente in quanto non sarà sempre presente qualcuno per digitare la passphrase, ad esempio dopo un riavvio o un arresto anomalo del sistema. mod_ssl include la possibilità di utilizzare un programma esterno al posto della finestra di dialogo della passphrase incorporata, tuttavia, anche questa non è necessariamente l'opzione più sicura. È possibile rimuovere la crittografia Triple-DES dalla chiave, quindi non è più necessario digitare una passphrase. Se la chiave privata non è più crittografata, è fondamentale che questo file sia leggibile solo dall'utente root! Se il tuo sistema viene compromesso e una terza parte ottiene la tua chiave privata non crittografata, il certificato corrispondente dovrà essere revocato. Detto questo, utilizza il seguente comando per rimuovere la passphrase dalla chiave:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
Il file server.key appena creato non contiene più passphrase.
Passaggio 4: generazione di un certificato autofirmato
A questo punto dovrai generare un certificato autofirmato perché non prevedi di far firmare il tuo certificato da una CA o desideri testare la tua nuova implementazione SSL mentre la CA firma il tuo certificato. Questo certificato temporaneo genererà un errore nel browser client per cui l'autorità di certificazione che firma è sconosciuta e non attendibile.
Per generare un certificato temporaneo valido per 365 giorni, emettere il seguente comando:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Firma ok
oggetto=/C=CH/ST=Berna/L=Oberdiessbach/O=Akadia AG/OU=Informazioni
Technology/CN=public.akadia.com/Email=martin punto zahn at akadia punto ch
Ottenere la chiave privata
Passaggio 5: installazione della chiave privata e del certificato
Quando viene installato Apache con mod_ssl, crea diverse directory nella directory di configurazione di Apache. La posizione di questa directory varierà a seconda di come è stato compilato Apache.
cp server.crt /usr/local/apache/conf/ssl.crt
cp server.key /usr/local/apache/conf/ssl.key
Passaggio 6: configurazione degli host virtuali abilitati SSL
Motore SSL acceso
FileCertificatoSSL /usr/local/apache/conf/ssl.crt/server.crt
FileChiaveCertificatoSSL /usr/local/apache/conf/ssl.key/server.key
SetEnvIf agente utente ".*MSIE.*" nokeepalive ssl-unclean-shutdown
Log CustomLog/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
Ora riavvia Apache e controlla.
Mettiti in contatto con noi.