SSL (https) vaak onnodig zoekplaatje

Google gaat meer en meer letten op de bereikbaarheid van websites via https. De ‘s’ staat voor secure, hetgeen betekent dat de gegevens versleuteld vanaf server bij de bezoeker terecht komen. De onderliggende techniek heet SSL (Secure Socket Layer).

• Update 24 december 2015: kleine aanpassingen en verduidelijkingen

• Wij helpen u graag met de installatie van uw SSL certificaat
• Vaak uniek IP adres per website nodig, afhankelijk van certificaat en server (instellingen). Servers met Server Name Indication (SNI) hebben geen uniek IP adres per site nodig

SSL-12Om een website via https te kunnen bereiken, moet op de server een zogenaamd certificaat worden geïnstalleerd. Deze zijn er in diverse vormen, afhankelijk van de soort controle van ‘betrouwbaarheid’ die gewenst wordt. De meest eenvoudige vorm is de zogenaamde ‘domein validatie’. Bij dit certificaat wordt alleen de geldigheid van een aanwezig domein getest. Andere uitvoeringen zijn bijvoorbeeld bij een webshop van belang, waarbij organisatie, KvK nummer en andere gegevens uitgebreid(er) worden onderzocht. Voor Google is de meeste eenvoudige vorm al voldoende om ‘beter’ gewaardeerd te worden.

Installatie

Op het web zijn er talloze verhalen te vinden over de installatie van SSL certificaten. Van te eenvoudig tot en met te complex, maar vrijwel nooit compleet en zeker niet geldig in elke situatie. Het SSL certificaat moet via een zogenaamd controlpanel worden geïnstalleerd. Dat kan alleen als de website minimaal draait op een zogenaamde VPS (Virtual Private Server) onder bijvoorbeeld Plesk of cPanel. Op een dergelijke server kan je zelf al je instelleingen beheren. Heb je een ‘shared IP server’, dan wordt de achterliggende techniek beheerd door de hosting provider en ben je niet in staat zelf iets te veranderen aan de basis instellingen van de server. SSL is dan doorgaans niet mogelijk.

Dus ook deze uitleg is ‘beperkt’ tot een bepaalde situatie en serveromgeving:

  • VPS, draaiend met Plesk control panel vanaf versie 9 (bij versie 9 2048 bits kiezen voor de zogenaamde CSR – Certificate Signing Request, een verzoek ‘handtekening’ om het certificaat aan te vragen)
  • Poort 443 (hhtps) moet open staan om website onder SSL te kunnen bereiken (veelal het geval)
  • WordPress omgeving met admin rechten om https in te kunnen stellen (er zijn geen speciale SSL plugins nodig!)
  • In Plesk 11 worden de WordPress  bestanden ‘gewoon’ in httpdocs gezet (er is geen httpsdocs). In Plesk 9 bestaat een aparte map voor https, maar je kunt instellen dat je ‘gewoon’ de httpdocs map wilt gebruiken voor SSL. Zie onderstaande afbeelding.

Waarschuwing vooraf: Je hebt voor al deze handelingen voldoende kennis nodig van Plesk (of een ander control panel systeem), werking firewall, WordPress admin handelingen en FTP toegang. Bereid de installatie van een certificaat goed voor.

SSL-instelling

Instellingen in Plesk 9

Geef in Plesk aan dat het domein voorzien moet worden van een SSL verbinding. In Plesk 9 wordt gevraagd of de web bestanden al dan niet in één map geplaatst mogen worden.

Ten eerste moet je een SSL certificaat kopen. Dat kan via vele partijen, alleen de prijsverschillen en de snelheid van handelen zijn onderscheidend. Een voorbeeld van een eenvoudige aankoopprocedure is te volgen bij Xolphin. Kijk het type validatie en vervolgens voor hoeveel domeinen het certificaat moet gaan gelden. Sommige SSL aanbieders bieden kortingen wanneer het certificaat voor meerdere jaren wordt afgenomen. De kosten lopen nogal uiteen, zonder duidelijke redenen.

In Plesk moet je dus eerst een zogenaamd ‘certificaat verzoek doen’ (CSR – Certificate Signing Request). Volg de volgende stappen om het certificaat volledig te kunnen installeren en activeren.

SSL-3

Stap 1: Binnen het domein welke van SSL voorzien moet worden ga je naar ‘Websites & Domains’ en daar kies je vervolgens “secure Your Sites’

 

SSL-1

Stap 2: Onder ‘SSL Certificates’ kies je ‘Add SSL Certificate’

 

SSL-2

Stap 3: Geef het certificaat een naam (bijvoorbeeld naamwebsite.xxx en klik op ‘Request’

 

SSL-4

Stap 4: Het bovenstaande scherm verschijnt, klik op de naam van het certificaat, onder de ‘R’ staat het zogenaamde CSR. Klik op de certificate name om CSR en ook de al aangemaakt Private Key te kunnen bekijken

 

CSR – Certificate Signing Request

Let op: In Plesk 9 moet je zelf 2048 bits kiezen. De sleutels in Plesk 11 en 12 zijn automatisch 2048 bits, hetgeen tegenwoordig als CSR vereist is.

SSL-5

Gedeelte van CSR

Nu verschijnt onderin het scherm het zogenaamde CSR, zoals al eerder omschreven, het gehele stuk ‘code’ (dus vanaf —– BEGIN tot en met REQUEST —–) is nodig om in te dienen bij de certificaat leverancier, zoals in onderstaand voorbeeld bij Xolphin.

SSL-6

Stap 5: Je CSR invullen bij de SSL leverancier voor het verkrijgen van je certificaat bestanden

SSL-7

Gedeelte van ‘Private Key’

Bij het indienen van je CSR wordt ook al de zogenaamde ‘Private Key’ gevuld. Deze staat onder de CSR. Het is raadzaam CSR en Private key te bewaren.

Er vindt eerst een validatie procedure plaats via e-mail of door middel van een tijdelijk bestand in de root van de website om je identiteit te controleren (één en ander is afhankelijk van het type certificaat). Daarna ontvang je het certificaat, een voorbeeld van de bestanden, zoals geleverd door Comodo:

  • AddTrustExternalCARoot.crt
  • COMODORSAAddTrustCA.crt
  • COMODORSADomainValidationSecureServerCA.crt
  • www_‘domeinnaam’_nl.crt

Indien een .p12 bestand wordt verzonden (alleen bij meer geavanceerde certificaten, beveiligd met wachtwoord), moet eerst een .pem bestand worden gemaakt. Dat kan door middel van OpenSSL, meestal uit te voeren via een Command Line Interface (CLI), zoals ‘Terminal’ in Mac OS X. Zorg ervoor dat je via ‘cd’ eerst naar de directory gaat waar je .p12 bestand staat en voer dan in (na OpenSSL te hebben ingevoerd):

  • pkcs12 -in www.xxxxx.nl.p12 -out www.xxxxx.nl.pem

Vanuit je .pem bestand kan je vervolgens via copy/paste de verschillende velden vullen.

Vervolgens kan je op twee manieren de velden ‘Certificate’ en ‘CA Vertificate’ vullen. Vaak is het juist hier een probleem welke van de vier bovengenoemde bestanden waar geplaatst moeten worden. Vraag de SSL provider altijd welke bestanden waar geplaatst moeten worden. In het geval van Xolphin geldt het volgende:

 

SSL-8

Stap 6: beide velden vullen vanuit de aangeleverde bestanden

  1. In het ‘CA Certificate'(CA = Certificate Authority) veld moeten twee bestanden worden geplaatst, als eerste de inhoud van ‘COMODORSADomainValidationSecureServerCA.crt’ en vervolgens de inhoud van ‘COMODORSAAddTrustCA.crt’. Deze bestanden kan je openen met een eenvoudige tekstverwerker, die de tekst als platte tekst toont. Copy/paste de inhoud in 2 stappen in het bovenstaande veld.
  2. In het ‘Certificate’ veld moet de inhoud komen van ‘www_‘domeinnaam’_nl.crt’. Het eerste bestand wordt in een gewone situatie niet gebruikt. Als dat allemaal goed gedaan is, dan kan het certificaat gecontroleerd worden, door over de icoontjes te bewegen in onderstaand scherm.
SSL-9

Stap 7: controle

Hoe verder?

Er moeten nog drie dingen worden gedaan om de website volledig via https te kunnen bereiken:

  • poortnummer 443 open zetten (als dat al niet het geval is) in de firewall
  • doorgaans is het niet nodig om de server te herstarten (in tegenstelling tot hetgeen vaak beweerd wordt) om het SSL certificaat te activeren. Mocht het certificaat toch niet werken, dan is herstarten alsnog een optie
  • WordPress instellingen (bij algemeen) veranderen van http naar hhtps (verder geen plugins nodig!). Belangrijk is dat deze instelling in de database alle interne http:// verwijzingen verandert in https://. Pas op: sommige plugins met ‘harde’ http:// verwijzingen (dus intern) worden niet altijd door deze instelling ‘meegenomen, die moet dan handmatig worden aangepast. Loop dus elke pagina na om te controleren of SSL overal goed werkt.

Om poortnummer 443 (https) open te kunnen zetten heb je in je control panel de toegang nodig tot de Firewall. Informeer bij je VPS provider of je die toegang kunt krijgen, mocht dat standaard niet het geval zijn. Sommige providers bieden het ‘standaard’ control panel aan via poort 8443, maar meer geavanceerde instellingen via poort 4643 (wel hetzelfde IP adres van de VPS). Bij Plesk heet deze toegang Parallels Power Panel.

SSL-10

Stap 8: WordPress instellingen van http naar https

Binnen WordPress is het ‘slechts’ nodig ‘http’ te vervangen door ‘https’ bij Instellingen. Na deze handeling zal de site te bereiken zijn via https, zoals in onderstaand voorbeeld. Wel is het tenslotte nodig ook je .htacces bestand aan te passen met de volgende regel:

  • RewriteRule ^(.*)$ https://www.domeinnaam.nl/$1 [R,L]

Bovenstaande is nodig om domein.xxx of www.domein.xxx te laten verwijzen naar https://www.domein.xxx. Tot slot moet de site (met https) opnieuw worden aangemeld bij Google voor zowel Analytics als WebmasterTools.

Controleer of bij elke pagina in de hele website de interne links verwijzen naar ‘https’. Mocht dat na het veranderen het WordPress-adres en het Siteadres niet het geval zijn, dus kan in de database de link worden aangepast via PHPMyAdmin (maak altijd eerst een backup van de database).

UPDATE wp_posts SET post_content = REPLACE(post_content, ‘http://yourdomain’, ‘https://yourdomain’)

Snelheid

SSL-11SSL heeft en kleine invloed op de snelheid van de site. Door de versleutelde code en het onderlinge controle mechanisme wordt iets van de performance ‘gesnoept’. Het is ons niet duidelijk in hoeverre die invloed gevolgen heeft voor de Google waardering van de website.

Als het niet lukt

Mochten bovenstaande handelingen onverhoopt niet lukken, dan is het niet moeilijk de situatie terug te laten keren naar de basis, dus zonder https. Het certificaat kan in Plesk makkelijk gewist worden. Vervolgens moet ‘https’ worden veranderd in ‘http’ in de WordPress instellingen. Dat is natuurlijk niet mogelijk via de WordPress instellingen, omdat de website nu niet bereikbaar is (als het fout is gegaan). Ga dan via FTP naar wp-config.php, open deze in BBEdit of TextWrangler (of een andere tekstverwerker die ‘platte’ tekst verwerkt, dus geen Word).

Bovenstaande regels toevoegen aan wp-config.php, de lokatie maakt niet zo heel veel uit. Bewaar het bestand en de website is zonder SSL weer bereikbaar via http. Veel succes!