Nel caso avessimo inviato la richiesta per un certificato ufficiale ad una CA (es Verisign) e non lo abbiamo ancora ricevuto o comunque volessimo poter stabilire connessioni sicure tramite https, è possibile creare certificati "fasulli" utilizzando openssl o mod_ssl.
Innanzitutto dobbiamo creare una chiave privata (es: private.key) ed una chiave pubblica (es: public.csr). Per far questo (presupponendo di avere installato un supporto SSL) basta andare nella directory dove si vuole generare la coppia di chiavi, esempio /usr/local/apache/ssl.certs/ , lanciare il seguente comando:
[root@eberk ssl.certs]# openssl req -new -nodes -keyout private.key -out public.csr
e inserire i dati richiesti.
Una volta generata la coppia di chiavi, per generare un certificato (.crt), basta lanciare il seguente comando:
[root@eberk ssl.certs]# openssl req -key private.key -in public.csr -out fakecertificate.crt
Ora il certificato è pronto, anche se l'abbiamo generato noi e non una CA.
Fatto cio, configurare httpd.conf aggiungendo le seguenti righe:
SSLCertificateFile /etc/ssl/crt/fakecertificate.crt
SSLCertificateKeyFile /etc/ssl/crt/private.key
Ora avviare Apache con supporto SSL.
Di fatto ora Apache risponderà alle richieste con una connessione http sicura.
Per testare se effettivamente ciò avviene lanciare il seguente comando di debug:
[root@eberk diego]# openssl s_client -connect localhost:443
(o 80) -state
Attenzione, Apache non si accorge che il certificato è "fasullo", ma il browser si, e comunicherà, con una finestra di pop-up, all'utilizzatore che il certificato non è stato rilasciato da nessuna delle CA da lui conosciute.
Oltre al metodo sopra illustrato è possibile generare un certificato finto durante la compilazione dei sorgenti di apache o tramite uno script all'interno dei sorgenti di mod_ssl.
Lo script è mkcert.sh
ed è contenuto in mod_ssl nella sottodirectory pkg.sslsup, lo script genera una chiave privata e certificato di una CA customizzabile (ca.key e ca.crt) e chiave e certificato relativo a questa CA per il server (server.key e server.crt).
Una volta generati configurare httpd.conf con la stessa procedura sopra elencata.
Altro metodo per creare un certificato è lanciare il make certificate (dopo aver lanciato il comando configure e make) quando si compila Apache con il supporto mod_ssl.
Prevede diverse varianti di creazione/installazione in funzione alla necessità del certificato:
[root@eberk apache_1.3.17]# make certificate TYPE=dummy
Crea un certificato realizzato dalla Snake Oil CA (ovviamente la snake Oil non esiste) intestato a se stessa.
[root@eberk apache_1.3.17]# make certificate TYPE=test
Crea un certificato realizzato dalla Snake Oil CA dando la possibilità di customizzarlo rispondendo alla solita trafila di domande. Serve se si vuole testare un server.
[root@eberk apache_1.3.17]# make certificate TYPE=custom
Per installare un certificato ufficiale rilasciato da una CA esistente. Serve se lo si vuole installare su una macchina reale in produzione.
[root@eberk apache_1.3.17]# make certificate TYPE=existing
Utilizza un certificato gia esistente (upgrade del server).
L'opzione di default è TYPE=test. Make certificate setta i parametri di httpd.conf relative ai certificati, quindi nonn si ha la necessita di aggiungere a "mano" le 2 righe relative.
Installazione e configurazione di openssl e mod_ssl, Creazione di chiavi e certificati.
CERTIFICATO HTTPS
ho bisogno di crearmi da solo un certificato https senza chiederlo ad una CA. per un server IIS.URGENTE