make then make install
La funzione principale di SSL su Internet è quella di facilitare la crittografia e la fiducia che consente a un browser Web di convalidare l’autenticità di un sito web. Tuttavia, SSL funziona anche al contrario: i certificati SSL client possono essere utilizzati per autenticare un client sul server Web. Pensa alle coppie di chiavi pubbliche/private SSH, se ti è familiare. In questo post del blog illustrerò i passaggi per creare un certificato di autorità di certificazione, firmare un certificato server e installarlo in Apache e creare un certificato client in un formato utilizzato dai browser Web.
L’installazione di un sistema operativo e Apache non rientra nell’ambito del post del blog e presumo che tu abbia un’installazione Apache funzionante prima di iniziare. Sto usando un sistema Ubuntu 12.04.4 in questo post del blog.
Generare un certificato di autorità di certificazione (CA)
Il primo passo è generare un certificato CA. Questo certificato CA non ha bisogno di essere generato sul server web – può sedersi su qualsiasi macchina si utilizzerà per generare certificati SSL. Una volta creato, il certificato CA fungerà da autorità attendibile per i certificati server e client. È l’equivalente di Verisign o Comodos nel mondo reale di SSL, tuttavia non vorresti usare il tuo certificato CA per un importante sito Web pubblico poiché la sua fiducia non verrà incorporata nei browser ovunque.
Genera il certificato CA utilizzando questo comando:
openssl req -newkey rsa:4096 -keyform PEM -keyout ca.key -x509 -days 3650 -outform PEM -out ca.cer
Poi tenerli segreti-tenerli al sicuro. Se qualcuno dovesse ottenere una sospensione di questi file, sarebbe in grado di generare certificati server e client che sarebbero attendibili dal nostro server Web come verrà configurato di seguito.
Genera la chiave e il certificato SSL del server Apache
Ora che abbiamo il nostro certificato CA, possiamo generare il certificato SSL che verrà utilizzato da Apache.
- Genera una chiave privata del server.
openssl genrsa -out server.key 4096
- Utilizzare la chiave privata del server per generare una richiesta di generazione del certificato.
openssl req -new -key server.key -out server.req -sha256
- Utilizzare la richiesta di generazione del certificato e il certificato CA per generare il certificato server.
openssl x509 -req -in server.req -CA ca.cer -CAkey ca.key -set_serial 100 -extensions server -days 1460 -outform PEM -out server.cer -sha256
- Clean up – ora che il certificato è stato creato, non abbiamo più bisogno della richiesta.
rm server.req
Installa il certificato del server in Apache
Il mio server sta eseguendo Ubuntu 12.04.4, quindi tutti i percorsi e i comandi a cui si fa riferimento qui sono per quel sistema operativo.
- Copia il certificato CA in un luogo permanente. Dovremo specificare il nostro certificato CA in Apache poiché è una CA generata autonomamente e non inclusa nei sistemi operativi ovunque.
cp ca.cer /etc/ssl/certs/
- Copia il certificato del server e la chiave privata in posizione permanente.
cp server.cer /etc/ssl/certs/server.crtcp server.key /etc/ssl/private/server.key
- Attiva il modulo SSL in Apache.
a2enmod ssl
- Attiva il sito SSL in Apache e disabilita il sito HTTP.
a2ensite default-ssla2dissite default
- Modifica /etc / apache2 / sites-enabled / 000-default-ssl (il file di configurazione per il sito abilitato SSL) e aggiungi:
SSLCACertificateFile /etc/ssl/certs/ca.cerSSLCertificateFile /etc/ssl/certs/server.crtSSLCertificateKeyFile /etc/ssl/private/server.key
- Applicare la configurazione in Apache.
service apache2 restart
In questo momento, se visiti il tuo sito https, riceverai un errore SSL simile a ” SSL peer non è stato in grado di negoziare un insieme accettabile di parametri di sicurezza.”Questo è un bene-significa che il tuo sito non accetterà una connessione a meno che il tuo browser non utilizzi un certificato client attendibile. Ne genereremo uno ora.
Genera un certificato SSL client
- Genera una chiave privata per il client SSL.
openssl genrsa -out client.key 4096
- Utilizzare la chiave privata del client per generare una richiesta cert.
openssl req -new -key client.key -out client.req
- Emettere il certificato client utilizzando la richiesta cert e la chiave CA cert/.
openssl x509 -req -in client.req -CA ca.cer -CAkey ca.key -set_serial 101 -extensions client -days 365 -outform PEM -out client.cer
- Convertire il certificato client e la chiave privata in formato pkcs#12 per l’utilizzo da parte dei browser.
openssl pkcs12 -export -inkey client.key -in client.cer -out client.p12
- Pulisci – rimuovi la chiave privata del client, il certificato del client e i file di richiesta del client poiché pkcs12 ha tutto il necessario.
rm client.key client.cer client.req
Sembra un processo abbastanza simile alla generazione di un certificato del server, eh?
Infine, importare il .file p12 nel tuo browser. Su Windows è possibile fare doppio clic sul file da importare nel keystore del sistema operativo che verrà utilizzato da IE e Chrome. Per Firefox, apri le opzioni – > Avanzate – > Certificati- > Visualizza certificati – > I tuoi certificati e importa il certificato.
Ora, visita il tuo sito Web con il browser in cui hai importato il certificato client. Probabilmente ti verrà richiesto per quale certificato client utilizzare-selezionarlo. Allora sarai autenticato e permesso di entrare!