Je krijgt een SSL-certificaat gratis bij WordPress hostingpakket van Vevida. Zodra jouw hostingpakket is opgeleverd, wordt het SSL-certificaat geïnstalleerd. Hier hoef je zelf niets extra’s voor te doen. In dit artikel leggen we je uit hoe je daarna gebruikmaakt van dat SSL-certificaat om jouw website te beveiligen en de privacy van jouw bezoekers te garanderen. Wil jij meer weten over SSL voor WordPress? Lees dan snel verder.

Als je een WordPress hostingpakket bij Vevida afneemt, dan voeren wij deze handelingen voor jou uit. Registreer je een nieuwe domeinnaam, dan wordt het SSL-certificaat automatisch geïnstalleerd en in WordPress geactiveerd.

Verhuis je een WordPress website naar Vevida? Dan nemen we eerst even contact met je op om te informeren wat precies de bedoeling is. Wil je het SSL-certificaat zelf activeren? Prima. Anders regelen wij dat en hebben wij tijdelijk de adminrechten nodig van jouw WordPress Dashboard.

Wat is SSL en waarom wil ik HTTPS (SSL) voor WordPress?

Door middel van een SSL-certificaat wordt de verbinding tussen twee computers (webserver en bezoeker) versleuteld en dus beveiligd. Hierdoor weten beide computers zeker dat de andere partij ook daadwerkelijk de andere partij is. Het is vrijwel onmogelijk deze verbinding te kapen.

Een SSL-certificaat is dus belangrijk voor de beveiliging: de verbinding is versleuteld, privacy én vertrouwen zijn gewaarborgd. Je weet zeker dat je met jouw doel communiceert. Je leest meer over SSL-certificaten in ons helpartikel SSL-certificaat.

Een SSL-certificaat voor WordPress aanvragen

Zoals gezegd, heb jij een WordPress hostingpakket bij Vevida, dan nemen wij jou al deze zorgen uit handen. Wil je de SSL-instellingen graag zelf instellen? Prima! Je regelt snel en eenvoudig zelf een SSL-certificaat, hiervoor hebben wij de volgende informatie van je nodig:

  • Wat is de hostnaam waarop het certificaat moet draaien? Dus welke URL wil je beveiligd hebben?
  • Waar moet de beveiligde website komen te staan? Vaak is dit de gewone /www map van de website op de server. Als je wilt kunnen wij dit aanpassen, zodat de beveiligde inhoud bijvoorbeeld in een map genaamd /www-secure komt te staan.

Omdat een SSL-certificaat standaard geldt voor twee hostnamen: example.com en www.example.com, adviseren wij het volgende:

  • Vraag een SSL-certificaat aan voor jouw domeinnaam zónder www, dan kun je altijd bepalen welke van de twee vormen je gaat gebruiken. Gebruik slechts één van de twee, dat is makkelijker in het onderhoud en voorkomt dubbele content in Google.

Een SSL-certificaat op een subdomein, bijvoorbeeld voor een webshop op shop.example.com kan uiteraard ook, maar dan kun je dit certificaat niet meer gebruiken op (www.)example.com. Je hebt dan twee aparte websites te onderhouden.

Zodra het certificaat door ons is geïnstalleerd, ontvang je hierover een bericht. Je kunt meteen daarna beginnen met het instellen van de SSL-omgeving in WordPress.

Een beveiligde SSL-omgeving instellen in WordPress

Vóórdat je jouw beveiligde SSL-omgeving in WordPress instelt, is het belangrijk jezelf een aantal belangrijke vragen te stellen:

  1. Wil ik mijn website beschikbaar maken op het adres met of zonder www? Dus https://example.com, of https://www.example.com. Dit is van belang, niet alleen voor jouw WordPress site, maar ook Google Search Console (preferred domain) en eventuele andere externe diensten waarvan je gebruikmaakt.
  2. Maak ik in mijn website-content / blogartikelen gebruik van volledige http-adressen in interne links (links naar artikelen in dezelfde website) of van relatieve links? Als je volledige http-adressen gebruikt in jouw content, bijvoorbeeld <a href=”http://www.example.com/blog/artikel2″>lees meer</a>, dan moet je alle voorkomingen van http overal veranderen in https. Anders krijg je “mixed content” waarschuwingen, en dat wijzigen kan nogal een klus zijn. Gebruik je relatieve URL’s: <a href=”/blog/artikel2″>lees meer</a>, dan hoef je niets te doen.
  3. Hetzelfde als bij vraag 2, maar dan voor afbeeldingen en andere content.
  4. Kunnen thema’s en plugins overweg met SSL-adressen, of zijn hiervoor wijzigingen nodig? Zie ook het kopje “Thema code-aanpassingen“.

Hierna kun je eenvoudig WordPress omzetten naar de SSL-omgeving. In het WordPress Dashboard ga naar Settings > General en wijzig WordPress Address (URL) en Site Address (URL) naar https://.

In het wp-config.php configuratiebestand van WordPress kun je nu opnemen:

define('FORCE_SSL_ADMIN', true);

Hiermee zorg je ervoor dat alle WordPress logins en admin-sessies over SSL verlopen. Je vindt informatie hierover in de WordPress Codex Administration Over SSL.

Veel WordPress thema’s gebruiken intern deze WordPress “site_url” gegevens, andere thema’s ook niet. Heeft jouw thema een eigen options menu, dan vind je daarin vaak ook URL-gegevens terug. Daar moet je deze http-adressen ook nog even aanpassen naar https.

Redirect niet-SSL naar SSL, en niet-www naar www (of andersom)

Nu je een SSL-certificaat met HTTPS-adres voor jouw site hebt ingesteld, wil je natuurlijk graag dat bezoekers hier automatisch op terechtkomen zonder dat zij zelf https:// voor jouw domeinnaam moeten typen. Dat kan gelukkig eenvoudig door het herschrijven van URL’s.

Door URL’s te herschrijven kun je er, op de achtergrond, voor zorgen dat een bezoeker op https:// uitkomt als hij naar http:// gaat. Erg handig!

Wil je hierover meer weten? Kijk dan eens naar onze helpartikelen HTTPS-verbinding voor alle pagina’s, Eigen website voor doorgeschakeld domein en Subdomein een website geven. Deze artikelen geven je wat meer informatie over het principe URL-herschrijven, in het engels: URL Rewrite.

In deze voorbeelden gaan we uit van twee zaken:

  1. We gebruiken altijd HTTPS voor onze website
  2. Onze website is bereikbaar via www.example.com (vervang example.com overal door jouw eigen domeinnaam)

IIS URL Rewrite met web.config

Op onze Windows Server webservers kun je gebruikmaken van het web.config-bestand voor het instellen van de benodigde rewrites. Als je dit bestand via FTP downloadt, en je hebt Permalinks ingeschakeld, dan zie je de volgende standaard rewrites er al staan:


<rewrite>
  <rules>
    <rule name="WordPress: http://www.example.com" patternSyntax="Wildcard">
      <match url="*"/>
      <conditions>
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true"/>
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true"/>
      </conditions>
      <action type="Rewrite" url="index.php"/>
    </rule>
  </rules>
</rewrite>

Deze ene rewrite rule matcht op alle URL’s (*), en zolang het request niet gericht is op een bestaand bestand of bestaande map wordt het request doorgestuurd naar het index.php-bestand van WordPress. WordPress heeft namelijk interne logica voor het herschrijven naar mooie Permalinks.

De rewrite regel die we toevoegen (we maken er één aan om HTTP-verkeer naar HTTPS door te sturen, én om niet-www naar www door te sturen – te redirecten), voegen we toe tussen <rules> en <rule name="WordPress: ...">.

Let erop dat elke name van een rule uniek moet zijn.

HTTP naar HTTPS, de nette en juiste manier:
Als je een redirect wilt instellen van jouw HTTP adres naar HTTPS, dan moet je het volgende in het achterhoofd houden: een site die luistert op poort 80 moet alleen redirecten naar dezelfde resource op HTTPS.

In het begin van dit artikel heb je gelezen dat een SSL-certificaat bij Vevida geldt voor jouw domeinnaam mét en zonder www. Dus wil deze bovenstaande richtlijn zeggen: als je het goed wilt doen, dan moet je http://example.com éérst redirecten naar https://example.com, en dan pas naar https://www.example.com. En http://www.example.com kan logischerwijs in één keer door naar https://www.example.com.

Dit staat uitgelegd op Mozilla’s Web Security Guidelines, en schematisch ziet dit er als volgt uit:

http://example.com > 301 > https://example.com
https://example.com > 301 > https://www.example.com
http://www.example.com > 301 > https://www.example.com

Om dit in jouw web.config-bestand te regelen neem je daarin het volgende op:

<rule name="example.com domein naar niet-www https" patternSyntax="ECMAScript" stopProcessing="true">
	<match url="(.*)" ignoreCase="true" />
	<conditions logicalGrouping="MatchAll">
		<add input="{HTTPS}" pattern="off" />
		<add input="{HTTP_HOST}" pattern="^example\.com$" />
		<add input="{URL}" pattern="(.+)" />
	</conditions>
	<action type="Redirect" url="https://example.com/{R:1}" redirectType="Permanent" />
</rule>
<rule name="example.com https niet-www naar www https" patternSyntax="ECMAScript" stopProcessing="true">
	<match url="(.*)" ignoreCase="true" />
	<conditions logicalGrouping="MatchAll">
		<add input="{HTTPS}" pattern="on" />
		<add input="{HTTP_HOST}" pattern="^example\.com$" />
		<add input="{URL}" pattern="(.+)" />
	</conditions>
	<action type="Redirect" url="https://www.example.com/{R:1}" redirectType="Permanent" />
</rule>
<rule name="www.example.com http naar https" patternSyntax="ECMAScript" stopProcessing="true">
	<match url="(.*)" ignoreCase="true" />
	<conditions logicalGrouping="MatchAll">
		<add input="{HTTPS}" pattern="off" />
		<add input="{HTTP_HOST}" pattern="^www\.example\.com$" />
		<add input="{URL}" pattern="(.+)" />
	</conditions>
	<action type="Redirect" url="https://www.example.com/{R:1}" redirectType="Permanent" />
</rule>

Dit ziet er ingewikkeld uit, maar de logica erachter is dat gelukkig niet. Heb je hierover vragen? Neem gerust contact op met onze klantenservice. Wij helpen je graag hiermee.

.htaccess

Je kunt met een .htaccess-bestand hetzelfde bewerkstelligen als met een web.config-bestand. Let er wel op dat je .htaccess– en web.config-bestanden niet gemengd gebruikt. Gebruik de één of de ander.

Heeft jouw website wél een .htaccess-bestand, maar geen web.config? Je ziet dan het volgende in het .htaccess-bestand staan:


  # BEGIN WordPress
  <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^index\.php$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
  </IfModule>
  # END WordPress

Neem volgende op op de regel direct onder RewriteEngine On:


  # http://example.com > 301 > https://example.com
  RewriteCond %{HTTPS} Off [NC]
  RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
  RewriteRule (.*) https://%{HTTP_HOST}/ [L,R=301]

  # https://example.com > 301 > https://www.example.com
  RewriteCond %{HTTPS} On [NC]
  RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
  RewriteRule (.*) https://www.%{HTTP_HOST}/$1 [L,R=301]

  # http://www.example.com > 301 > https://www.example.com
  RewriteCond %{HTTPS} Off [NC]
  RewriteCond %{HTTP_HOST} ^(www\.)(example\.com)$ [NC]
  RewriteRule (.*) https://www.%2/$1 [L,R=301]

Nu deze 301 redirects op zijn plek staan, kun je beginnen met het doorvoeren van zogenoemde URL-verhuizingen. Je moet onder andere Google Search Console, Analytics en alle andere online diensten op de hoogte stellen van dit nieuwe HTTPS-adres.

Thema code-aanpassingen

Tip: gebruik altijd een child-theme om wijzigingen te maken!

Soms laadt een thema JavaScript of fonts vanaf externe adressen. Bijvoorbeeld vanaf googleapis.com voor jQuery of een mooi Google font. Een minder goed thema herken je dan vaak aan het feit dat er enkel een http-adres wordt gebruikt in de wp_register_script() functie:

wp_register_script( 'jquery',
  'http://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js', false, '2.1.4', true );

Hierdoor wordt jQuery via een http-adres geladen, wat mixed-content waarschuwingen geeft. Dit soort slechtere code moet vervangen worden door óf https-adressen:

wp_register_script( 'jquery',
  'https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js', false, '2.1.4', true );

óf een controle op het gebruikte protocol http of https:

$prefix = is_ssl() ? "https" : "http";
wp_register_script( 'jquery',
  $prefix.'://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js', false, '2.1.4', true );

Altijd HTTPS gebruiken heeft de voorkeur, het geeft geen problemen om vanaf een HTTP-website SSL-content via HTTPS te laden. Andersom dus wel.

“Mixed Content” als HTTP en HTTPS gemengd worden

Bij Vevida bieden wij ondersteuning op het oplossen van zogenoemde mixed content waarschuwingen. Die treden op bij pagina’s waar zowel HTTP als HTTPS bronnen geladen worden. Echter, onze ondersteuning hierop reikt maar zo ver… Sommige thema’s zitten zo ingewikkeld in elkaar dat het ondoenlijk is dit te verhelpen en je kunt dan beter contact opnemen met de makers van dat thema.

Best practice(s) – voor als je het écht goed wilt doen

Jij vindt beveiliging, van jouw WordPress website en de privacy van je bezoekers dus belangrijk. Mooi. Je vindt hierom nog een aantal aandachtspunten waaraan je moet denken:

Meer weten over SSL in WordPress?

Als je na het lezen van dit artikel graag meer informatie wilt over SSL in WordPress, of het WordPress Hosting pakket? Neem gerust contact op met onze klantenservice, wij helpen je graag.

Wat vond je van dit antwoord?

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.