• cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO A WEBAREA? CLICCA QUI E REGISTRATI !

Come abilitare HTTPS su webserver Apache, step by step

di :: 12 febbraio 2018

apache https

Vediamo come configurare Apache, installato su un distribuzione CentOS, per navigare il nostro sito sotto Https.

Oltre al server web Apache, è richiesto:

  1. Un dominio configurato sul nostro server web. Ad esempio "www.miosito.it"
  2. Un certificato SSL. E' una sorta di carta di identità di un sito web. I certificati vanno acquistati, e quindi hanno un costo.  La Certificate Authority (CA), cioè l’ente ufficiale dove si acquista il certificato, ha verificato la tua identità ed è responsabile della correttezza dei dati. Il certificato SSL viene installato sul server in cui il sito web è ospitato e richiamato ogni volta che l’utente visita il sito web con HTTPS.  Tuttavia esistono servizi che forniscono gratuitamente i certificati SSL, come Let's Encrypt. Tuttavia, per fare delle prove di configurazione, il certificato possiamo crearlo noi stessi ed in questo articolo seguiremo questa strada.
  3. L'accesso al server come utente root

Per la nostra prova, anzichè dotarci di un verto certificato SSL, ne creiamo uno noi utilizzando OpenSSL. In pratica, saremo noi stessi la CA da cui acquistiamo il certificato!

1: Installiamo i pacchetti necessari

Tramite yum installiamo i pacchetti OpenSSL e mod_ssl,

#yum install mod_ssl openssl

2: Generiamo una Chiave Privata (Private Key)

Generiamo una Chiave Privata per il nostro dominio, che sarà salvata nel file ca.key ed avrà lunghezza pari a 2048 bit (512 è la lunghezza di default).

#openssl genrsa -out ca.key 2048

3: Generiamo una Richiesta di Certificato (CSR)

Generiamo adesso una Richiesta di Certificato, utilizzando la private key "ca.key" generata prima, e la salviamo nel file "ca.csr"

#openssl req -new -key ca.key -out ca.csr

"req" è il comando usato per generare la richiesta
"-key" indica la chiave privata usata per firmare il certificato ("ca.key")
"-out" il nome del file generato per contenere il certificato ("ca.scr")
"-new" specifica che si tratta di una nuova richiesta: OpenSSL chiederà l'inserimento di alcuni dati che verranno inseriti nel certificato.

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]: IT
State or Province Name (full name) []: Italy
Locality Name (eg, city) [Default City]: Torino
Organization Name (eg, company) [Default Company Ltd]: La Mia Azienda
Organizational Unit Name (eg, section) []: pippo
Common Name (eg, your name or your server's hostname) []: www.miodominio.it
Email Address []: ca@miosito.it

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

I dati da inserire sono abbastanza chiari, tranne forse due
Nell'Organizational Unit Name (Nome unità organizzativa) mettiamo un nome di fantasia.
Nel Common Name: indica l'hostname del tuo server (se sei in ambiente di test) o il  fully qualification name cioè il nome di dominio completo del server da proteggere con SSL. Se il sito Web da proteggere sarà https://www.miosito.it, inserire www.miosito.it

Alla fine, come vediamo, vengono chieste altre informazioni extra: tralasciare.

Questa richiesta di certificato (CRS) andrà inviata alla CA che potrà generare il certificato e darci indietro un file: una chiave.

4: Generiamo una Certificato Auto Firmato (Self Signed Certificate)

Questa è una simulazione per cui ci mettiamo quindi nei panni della CA e generiamo una Certificato, firmato quindi da noi (e non dalla CA), che salviamo nel file "ca.crt": questo è il file (la chiave) dovrà fornirci la CA.

openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

Il certificato è stato generato. "x509" è il formato del certificato, ed avrà validità 365 giorni.
Il file "ca.crt" ci verrà fornito dalla CA.
Togliamoci finalmente il cappello del CA, e torniamo amministratori del server!

5: Copiamo i files ottenuti nella loro posizione definitiva

I files ottenuti (.crt .key .scr) dovranno essere spostati nella loro directory finale

cp ca.crt /etc/pki/tls/certs
cp ca.key /etc/pki/tls/private/ca.key
cp ca.csr /etc/pki/tls/private/ca.csr

6: Modificamo il file di configurazione SSL di Apache

Editiamo il file diconfigurazione ssl di apache "ssl.conf" mettendo i path corretti per SSLCertificateFile e SSLCertificateKeyFile

#vi /etc/httpd/conf.d/ssl.conf
................
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key

7: Modifichiamo il file di configurazione Virtual Hosts di Apache

Il file da editare è vhost.conf cioè il file che si occupa dei virtual hosts di Apache

# vi /etc/httpd/conf.d/vhost.conf

Un sito non https, quindi normalente su porta 80, è così indicato:

<VirtualHost *:80>
  DocumentRoot /var/www/html/miosito/
  ServerName www.miosito.it
  ErrorLog logs/miosito_error_log
  <Directory "/var/www/html/miosito/">
    AllowOverride All
  </Directory>
</VirtualHost>

Per farlo diventare https operiamo queste modifiche, in primis la porta che non sarà più la 80 ma la 443

<VirtualHost *:443>
DocumentRoot /var/www/html/miosito/
ServerName www.miosito.it

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTP_HOST} !^www. [NC]
  RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

ErrorLog logs/miosito_error_log
<Directory "/var/www/html/miosito/">
AllowOverride All
</Directory>
</VirtualHost>

Il blocco <IfModule> è opzionale ai nostri fini. E' utile (ma è possibile inserirlo direttamente nel file .htaccess presente nella root del vostro sito) per redirigere automaticamente tutto il traffico proveniente sulle pagine http, verso le equivalenti https. Se il vostro sito già esiste da tempo, va usato per informare i motori di ricerca, in particolare il bot di Google, di questo passaggio da http a https, serve quindi a non perdere le posizioni organiche occupate.

8: Riavviamo Apache

# service httpd restart

E' tutto. Provate ad aprire la pagina web, e se tutto è andato correttamente il vostro sito sarà sotto https. Se non si apre potrebbe esser necessario modificare il firewall

9: Configuriamo il firewall

Modifichiamo IPTables inserendo questa regola che permette le connessioni alla porta 443

iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Salviamo la regola

/sbin/service iptables save

E riavviamo nuovamente Apache.

Potrebbe interessarti

x

ATTENZIONE