Roland Kamphuis Rotating Header Image

Posts Tagged ‘Lets encrypt’

WordPress uitbreiden met https SSL certificaat

Tegenwoordig is https wel een must om aan te hebben staan. Dat houd in dat de verbinding tussen de bezoekers en de website beveiligd wordt middels SSL encryptie. Zo kan niemand meer meekijken wat een bezoeker uitspookt op een website.
Browsers promoten dit gedrag door een groen slotje in de browserbalk, en sommige browsers gaan zelfs verder en zetten een rood kruis door het slot als je het niet hebt. Bedrijven zoals Google zijn ook SSL aan het promoten. Heb je SSL certificaat, dan prefereert Google jouw website boven een vergelijkbare site zonder SSL. Genoeg redenen om ook mijn weblog te voorzien van een SSL certificaat.

Gelukkig hoef je tegenwoordig geen SSL certificaat te kopen, en heb ik ook gekozen voor een gratis certificaat van Lets encrypt. Dat is voldoende voor een blog zoals die van mij. Er zijn ook betaalde certifcaten, het verschil bewaar ik voor een volgende blogpost.
Lets Encrypt controleert je website middels een bestand op de webpagina en geeft daarna het certificaat uit. Gelukkig hoeft dit niet veel werk te zijn en ondersteunen hosting bedrijven het installeren van een lets encypt certificaat met 1 druk op de knop. Zo ook mijn bedrijf IceHosting, waarbij je in directadmin met 1 druk op de knop een certificaat installeert.

Directadmin Letsencrypt activeren

Na installatie van het certificaat is het handig om de private_html map te koppelen aan de public_html. Dit voorkomt dat je 2 keer je site moet uploaden. In directadmin kan dit onder domain setup met 1 klik geactiveerd worden.

Dan denk je, ik ben er! Maar helaas is dat niet waar. Je moet ook wordpress vertellen dat je https:// wil gebruiken over http://. Dus in de wp-admin onder settings de url veranderd.

Wp-admin, general settings, url aanpassen met s bij http

Vervolgens werkt de site via https. Maar er staat nog een irritante uitroepteken in de URL balk (waardoor die niet groen is). Dat blijkt te komen dat sommige afbeeldingen linken naar http:// versie van de site. Dus feitelijk moet je alle blog artikelen langslopen en de afbeelding van url veranderen. Dit was mij te veel werk, dus ging ik naar phpmyadmin om middels een SQL query alles tegelijk updaten:

UPDATE wp_options SET option_value = replace(option_value, 'http://www.domein', 'https://www.domein') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://www.domein','https://www.domein');

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.domein', 'https://www.domein');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.domein','https://www.domein');

En voilla, de browserbalk is nu groen. Tot slot de .htaccess aangepast om verplicht iedere bezoeker naar https om te zetten:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Het gaat om regel 4 en 5, de rewritecond https !=on, met vervolgens de redirect naar de https versie. Let wel op dat ook eventuele subsites ook de redirect krijgen. Dus zorg ervoor dat die ook klaar zijn voor SSL, of sluit ze uit met de redirect naar https.