Posts Tagged ‘SSL’

h1

Creare un proprio certificato per SSL

settembre 25, 2007

SSL (Secure Socket Layer) è un protocollo di comunicazione cifrato e utilizza una tecnica di cifratura chiamata crittografia a chiave pubblica. Oltre a cifrare una connessione, la crittografia a chiava pubblica consente a un client di autenticare il server. Questo grazie ad un certificato firmato da terze parti (solitamente è un’organizzazione indipendente) che verifica se il proprietario del server è effettivamente chi dice di essere. Se non possedete un certificato firmato da terze parti, i clients che contatteranno il vostro server riceveranno un avviso che li informerà riguardo il vostro certificato non visionato da un’autorità riconosciuta. Per evitare questo inconveniente dovrete pagare e far firmare la vostra CSR (Certificate Signing Request) da una CA (Certification Authority). Le due più importanti sono Verisign e Thawte.

Questa procedura consente di creare facilmente un proprio certificato non firmato da terze parti:

 

Per prima cosa installiamo le librerie necessarie

$ sudo apt-get update && sudo apt-get install openssl

 

Adesso passiamo a root

$ su

 

Installiamo una chiave privata supponendo di trovarci nella cartella confSSL sotto la root del webserver e dando per scontato che il modulo SSL sia già incluso in Apache (se usate Apache2.0 è già incluso di default e dovete solo caricarlo)

# openssl genrsa 1024 > miachiave.key

 

Adesso convalidiamo la chiave creata sopra generando una CSR

# openssl req -new -key miachiave.key -out convalida.csr

 

Infine creiamo il certificato vero e proprio firmando la CSR con la chiave privata

# openssl req -x509 -key miachiave.key -in convalida.csr – out certificato.crts

 

E’ molto importante che i file appena creati possano essere letti soltanto dall’utente root.

Una volta generato il certificato possiamo utilizzarlo per i nostri hosts virtuali che utilizzano https (secure http) inserendo le seguenti direttive in ogni VirtualHost che ascolta sulla porta 443 (la porta di default):

SSLCertificateKeyFile confSSL/miachiave.key

SSLCertificateFile confSSL/certificato.crts

Se impostate all’esterno dei container VirtualHost, queste direttive consentono di utilizzare il nostro certificato per tutti gli hosts virtuali che utilizzano SSL. Essi devono però specificare questa direttiva all’interno del proprio ambito:

SSLEngine On

Non è possibile specificare questa direttiva nella configurazione generale del server. Per imporre l’utilizzo di SSL in una directory utilizzate questa direttiva all’interno dei container <Directory>

SSLRequireSSL