Stuur bezoekers automatisch door naar de HTTPS versie van je website.

Dus, je hebt een website en om verschillende redenen heb je een SSL-certificaat geïnstalleerd. Bezoekers van je website kunnen nu via https (met de “s” van secure) je website bezoeken, bekijken en gebruiken. Goed gedaan! Google, Bing en Yahoo waarderen dit en belonen je met een hogere positie in de zoekresultaten dan voorheen. Je bezoekers kunnen nu versleuteld hun gegevens naar je sturen via bijvoorbeeld een contactformulier en hackers in spé zoeken verder naar websites waarvan de eigenaar niet zo verstandig is als jij. Mooi! Klusje geklaard, je kunt weer rustig slapen.

Maar……

Veel bezoekers komen nog uit op de onveilige versie van je website, dit kan komen door incorrecte links vanaf andere websites of social media (links met http zonder de “s” van secure dus). Vervelend, want je wilt echt je best doen om je website zo veilig mogelijk te maken voor je bezoekers.

Correct doorsturen

Het is belangrijk om je bezoekers correct door te sturen, anders heeft een SSL certificaat helemaal geen zin. Dit kun je doen op verschillende manieren, maar de vuistregel is dat je dit wel zo snel mogelijk doet. In theorie zou je eerst je complete website kunnen laten laden in de browser van de bezoeker om ze vervolgens pas door te sturen naar de beveiligde website.

Bovenstaande is natuurlijk niet wenselijk, je wilt dat je bezoekers direct op de goede versie van je website terecht komen. Het is dus zaak om de eerste reactie van je server een doorsturing naar de beveiligde website te laten zijn, vóór al het andere. Hier zijn verschillende methoden voor beschikbaar, afhankelijk van het type server dat je gebruikt.

Veruit de meeste klanten van WebServiceDienst draaien hun website op een Apache server, dus leggen we als eerste uit hoe je dit voor elkaar krijgt op zo’n server.

Apache servers: De .htaccess methode.

Het Apache systeem zoekt bij elke request richting de server naar een verborgen bestand genaamd htaccess, in Linux systemen wordt de naam van een verborgen bestand aangegeven door middel van een punt voor de bestandsnaam, zoek dus naar een bestand genaamd “.htaccess”. Je kunt dit bestand openen in een text editor, welke maakt niet zoveel uit. Voeg de volgende regels toe aan het bestand:

RewriteEngine On
RewriteCond %{HTTPS} off
# First rewrite to HTTPS:
# Don't put www. here. If it is already there it will be included, if not
# the subsequent rule will catch it.
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


# Now, rewrite any request to the wrong domain to use www.
# [NC] is a case-insensitive match
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Drop "www." from the address
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L]

Alle regels die beginnen met een # kun je in principe weglaten, dit zijn zogenaamde comments en dienen ter verduidelijking van de daadwerkelijke code.

Wat je met bovenstaande regels doet is “http” vervangen met “https” en vervolgens verwijder je de “www” voor de URL, oplettende lezers zien dat je het ook andersom kunt doen, “www” juist toevoegen aan het adres. Het is net wat je wilt, een is SSL-certificaat praktisch altijd ook geldig voor het www-subdomein. Voor applicaties als Google Analytics is het wel van belang, het meet het verkeer naar 1 domein en ziet www.jouwdomein.com als een ander adres dan jouwdomein.com, maar dit ter zijde.

NGINX, de config file methode

Wie voor zijn hosting voor een VPS heeft gekozen kan ook kiezen om Nginx te gebruiken in plaats van Apache. Nginx werkt iets anders dan Apache en biedt met name een snelheidsvoordeel voor drukbezochte websites. De htaccess methode van hierboven werkt in principe ook voor Nginx servers wanneer deze opgezet zijn in combinatie met Apache (een veel voorkomende configuratie) maar doet de snelheidswinst die Nginx biedt echter zo goed als teniet, htaccess gebruiken op een Nginx server is dus niet heel handig, maar gelukkig is er een beter alternatief.

Omdat we er van uitgaan dat Nginx gebruikers wat meer ervaren zijn in de communicatie met servers op afstand duiken we niet heel diep in deze methode, onderstaande regels in de Nginx config file zorgen voor een automatische doorsturing naar HTTPS:

#This server block will redirect http:// to https://www.mysite.com
server {
    listen 80;
    listen [::]:80;
    server_name mysite.com www.mysite.com;
    return 301 https://www.mysite.com$request_uri;
}

#This server block will redirect https://mysite.com to https://www.mysite.com (expecting that you have a certificate for mysite.com as well as www.mysite.com
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    include snippets/ssl-www.mysite.com.conf;
    include snippets/ssl-params.conf;
    server_name mysite.com;
    return 301 https://www.$server_name$request_uri;
}

#This is the server block actually delivering content to the visitor
server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    include snippets/ssl-www.mysite.com.conf;
    include snippets/ssl-params.conf;

    server_name www.mysite.com;

    client_max_body_size 100M;

    location ~ ^/\.well-known {
        root /var/www/ghost;
        allow all;
    }

    location / {
        proxy_pass http://127.0.0.1:2368;
        proxy_buffering off;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Referer "";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
    }
}

Hulp bij automatisch doorsturen naar https

Kom je er met bovenstaande instructies niet uit? Geeft niets, het overgrote deel van de website-eigenaren in Nederland heeft geen kaas gegeten van linux-systemen, servers en hosting. WebServiceDienst wel, dus als we je van dienst kunnen zijn hoef je het alleen maar even te laten weten. Tegen een kleine vergoeding regelen we alles voor je en zal iedere bezoeker van je website verbonden worden met een veilige verbinding. Van de installatie van het SSL-certificaat tot de doorverwijzing instellen, wij nemen je alles uit handen. En maak je geen zorgen, no cure no pay en Service staat voorop!

Gepubliceerd door Ramon Horst

Hosting provider, web developer, internet services. Emmen, Nederland