Module 3 · 3.1
https en het certificaat
Module 3: Adres, https en gebruikers · Leestijd: 8 minuten
Leerdoel: Na deze les kun je een WordPress-site volledig op https zetten en weet je wat het WordPress-adres en het siteadres doen.
Kernbegrippen: TLS, certificaat, Let's Encrypt, automatische verlenging, WordPress-adres (siteurl), siteadres (home), WP_HOME en WP_SITEURL, HSTS, buitengesloten raken
Wat https doet
Met https gaat alles tussen browser en server versleuteld: wachtwoorden, formulieren, cookies, ook gewone pagina's. Zonder https kan iedereen op hetzelfde netwerk (een openbare wifi, een gekaapte router) meelezen en zelfs de pagina veranderen. Browsers tonen een site zonder https als "niet veilig" en sommige functies (zoals locatie of de camera) werken alleen met https.
De versleuteling heet TLS. Om te bewijzen dat de browser echt met example.com praat en niet met een tussenpersoon, heeft de server een certificaat: een digitaal bewijs, ondertekend door een uitgever die browsers vertrouwen. Het certificaat noemt de namen waarvoor het geldt en tot wanneer.
Gratis certificaten en verlengen
Let's Encrypt geeft gratis certificaten uit. Bijna elke hoster vraagt ze automatisch aan en verlengt ze ook automatisch. Een certificaat van Let's Encrypt is nu 90 dagen geldig, en Let's Encrypt heeft aangekondigd die geldigheid stap voor stap in te korten naar 45 dagen. Met de hand verlengen is daarom geen optie: het moet automatisch.
Een betaald certificaat versleutelt niet beter. Het verschil zit in extra controle van de organisatie (en soms een garantie). Voor de meeste sites is een gratis certificaat prima.
Waar je op let:
- Het certificaat moet elke naam dekken die een bezoeker kan typen:
example.coménwww.example.com. Ook de naam die alleen doorstuurt, want de browser controleert het certificaat vóór de doorsturing. - Automatisch verlengen lukt alleen als de DNS naar je server wijst. Heb je de DNS verhuisd of een proxy (zoals Cloudflare) ervoor gezet, controleer dan of de verlenging nog werkt.
- Een CAA-record in de DNS kan bepalen welke uitgevers certificaten mogen maken. Staat Let's Encrypt daar niet in, dan mislukt de aanvraag (DNS-cursus les 5.2).
Twee adressen in WordPress
Onder Instellingen > Algemeen staan twee adressen. Ze lijken overbodig dubbel, maar ze betekenen iets anders:
| Veld | In de database | Betekenis |
|---|---|---|
| WordPress-adres (URL) | siteurl | Waar de bestanden van WordPress staan (wp-admin, wp-includes) |
| Siteadres (URL) | home | Het adres dat bezoekers gebruiken |
Meestal zijn ze gelijk, bijvoorbeeld allebei https://example.com. Ze verschillen alleen als WordPress in een submap staat maar de site op de hoofdmap moet verschijnen.
WordPress maakt met deze adressen alle links: naar pagina's, stylesheets, afbeeldingen, het beheer. Staat hier http://, dan bouwt WordPress pagina's met http://-links, ook als de bezoeker via https binnenkomt. Dat geeft gemengde inhoud (les 3.2) en doorsturingen heen en weer.
Een site naar https zetten
Heb je een bestaande site op http, dan zijn dit de stappen:
- Certificaat aanvragen voor beide namen en controleren dat
https://example.comwerkt (je ziet dan een WordPress-pagina, misschien nog zonder opmaak). - Back-up maken (les 8.1).
- Beide adressen onder Instellingen > Algemeen op
https://zetten en opslaan. Je wordt uitgelogd; log opnieuw in via https. - Oude links in de inhoud omzetten van
http://example.comnaarhttps://example.com. Doe dat met een hulpmiddel dat geserialiseerde gegevens begrijpt, zoalswp search-replaceof een zoek-en-vervangplugin (les 3.2), nooit met een kale SQL-opdracht. - Doorsturen: laat de webserver alle verzoeken op http met een 301 naar https sturen (les 3.2). Veel hosters hebben daar een vinkje voor; anders een paar regels in
.htaccess. - Controleren met de opdracht van deze les en die van les 3.2.
Buitengesloten: als het adres fout staat
Typ je bij de adressen een tikfout (htps://, een verkeerd domein), dan stuurt WordPress je na het opslaan naar dat foute adres. Je kunt het beheer niet meer bereiken. Geen paniek, er zijn twee uitwegen:
Via wp-config.php. Zet boven de regel "stop met bewerken":
define( 'WP_HOME', 'https://example.com' );
define( 'WP_SITEURL', 'https://example.com' );Deze regels gaan voor de waarden in de database. De velden in Instellingen > Algemeen worden dan grijs. Log in, zet de juiste waarden in de database, en haal de regels weer weg (of laat ze bewust staan, dan kan niemand de adressen per ongeluk via het beheer wijzigen).
Via phpMyAdmin. Open de tabel wp_options en pas de waarden van siteurl en home aan.
HSTS: de browser laten onthouden
Met de kopregel HSTS (Strict-Transport-Security) zegt de server tegen de browser: "kom hier de komende tijd alleen nog via https." De browser zet daarna zelf elk http:// om naar https://, zonder eerst een onbeveiligd verzoek te doen.
Strict-Transport-Security: max-age=31536000; includeSubDomainsHSTS is een goede extra stap, maar met een waarschuwing: een browser die HSTS heeft gezien, weigert de site daarna zonder geldig certificaat te openen, ook niet met "toch doorgaan". Met includeSubDomains geldt dat voor elk subdomein. Heb je een subdomein zonder certificaat (bijvoorbeeld een oud intern systeem), dan is dat na HSTS onbereikbaar. Begin daarom met een korte max-age (bijvoorbeeld een dag, 86400), controleer alles, en verleng dan.
In de praktijk: zo ziet het eruit in een paneel
Als voorbeeld gebruiken we DirectAdmin. In cPanel heet het onderdeel SSL/TLS Status (AutoSSL), in Plesk SSL/TLS Certificates.
- Open SSL-certificaten bij je domein en kies Gratis en automatisch certificaat van Let's Encrypt.
- Vink
example.comenwww.example.comaan en vraag het certificaat aan. - Zet bij de domeininstellingen het vinkje om bezoekers altijd naar https te sturen (bij DirectAdmin: Forceer SSL met https omleiding). Gebruik maar één manier van doorsturen: twee verschillende tegelijk kunnen een rondje geven ("te veel omleidingen").
- Ga in WordPress naar Instellingen > Algemeen en zet beide adressen op
https://.
Samenvatting
- https versleutelt alles tussen browser en server; het certificaat bewijst wie de server is.
- Gratis certificaten van Let's Encrypt zijn kort geldig en worden automatisch verlengd; ze moeten elke naam dekken die een bezoeker typt.
- WordPress-adres (siteurl) en siteadres (home) moeten allebei op
https://staan. - Sta je buitengesloten door een fout adres, herstel het met WP_HOME en WP_SITEURL in wp-config.php of in phpMyAdmin.
- HSTS is een goede extra stap; begin met een korte geldigheid.
Quiz
Opdracht
Opdracht A3.1: Klopt je certificaat? Vul het adres van je site in. Het programma maakt een TLS-verbinding met de kale naam en met www (als die bestaat) en controleert: is het certificaat geldig en vertrouwd, dekt het beide namen, is het langer dan 14 dagen geldig, en stuurt de site een HSTS-kopregel? Ontbreekt HSTS, dan is dat oranje met uitleg, geen fout.
Verder lezen
Deze artikelen beschrijven de stappen in de panelen van WebOké; in andere panelen werken ze vergelijkbaar.
- DirectAdmin handleiding 6.1: Wat is SSL en hoe regelt WebOké het?
- DirectAdmin handleiding 6.2: Een gratis Let's Encrypt-certificaat aanvragen
- DirectAdmin handleiding 6.3: Certificaat voor www, subdomeinen en wildcard
- DirectAdmin handleiding 6.4: Bezoekers altijd naar https sturen
- SSL-certificaat activeren, vernieuwen en problemen oplossen
- Het verschil tussen een gratis en een betaald SSL-certificaat
- Gratis DNS-cursus 5.2: CAA: wie mag certificaten uitgeven?
