Configurare HTTPS con Apache e Cloudflare

Configurare HTTPS con Apache e Cloudflare

Ho avuto un pò di difficoltà ad utilizzare al meglio Apache con HTTPS e Cloudflare.

Nello specifico il reindirizzamento automatico su HTTPS.

Usando il redirect attraverso il file htaccess, non funzionava:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Alla fine ho scoperto che dovevo farlo su Cloudflare.

Per far funzionare tutto, le riga due e la riga tre vanno levate; funzionerebbero bene senza Cloudflare.

Qui vi spiego i macro passi da seguire per configurare tutto.

1) Attivare HTTPS su Apache

In giro ci sono tantissime guide.

In sostanza si tratta di attivare il sito per SSL con in certificati.

Questa la mia configurazione:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerName matteoferrone.it
        ServerAlias www.matteoferrone.it
        ServerAdmin VOSTRA_EMAIL
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SLCertificateFile /etc/letsencrypt/live/matteoferrone.it/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/matteoferrone.it/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/matteoferrone.it/fullchain.pem
        <FilesMatch ".(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
        BrowserMatch "MSIE [2-6]"
                nokeepalive ssl-unclean-shutdown
                downgrade-1.0 force-response-1.0
        # MSIE 7 and newer should be able to use keepalive
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
</IfModule>

Se volete usare Let's Encrypt con Cloudflare (cosa che vi consiglio), seguite questa guida.

2) Check protocolli

Può sembrare banale, ma non lo è.

Prima di andare avanti controllate che sia HTTP che HTTPS funzionino.

Se è tutto ok, proseguite.

3) Cloudflare

Iscrivetevi e configurate Cloudflare.

La procedura è molto semplice.

4) Recheck

Ripetete il check del punto 2.

In questo modo siete sempre sicuri che il passaggio precedente non abbia scasinato qualcosa.

5) Cloudflare Page Rules

A questo punto, nel pannello di Cloudflare, dovete configurare una Page Rules di tipo Always Use HTTPS.

Come dominio mettete il vostro in questa forma: http://*.sito.it/*.

Questo punto è molto importante, in quanto andarà a sostiuire le regole di redirect di Apache.

In sostanza ci penserà Cloudflare a fare il redirect.

6) Check redirect

Fate un riavvio del server se potete (non solo di Apache).

A questo punto dovreste avere questo comportamento:

  • HTTPS funziona senza problemi
  • HTTP rimanda direttamente in automatico su HTTPS

Enjoy!