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!
server apache cloudflare http https
Commentami!