Cloudflare SSL/TLS voor webshops: waarom Full (strict) de norm is, hoe je een Origin CA-certificaat inzet en wanneer HSTS verstandig is.
Een webshop met een slot in de adresbalk is niet per se veilig. Als Cloudflare met jouw server praat over gewoon HTTP, loopt een deel van het verkeer onversleuteld. Dat staat niet in je browser. Het zie je alleen in je Cloudflare-instellingen.
Dit artikel behandelt de SSL/TLS-modi, welke je kiest, hoe je een Cloudflare Origin CA-certificaat inzet en waar HSTS zin heeft. Het is een vervolg op Cloudflare Pro instellen voor je webshop.
Twee verbindingen, twee beveiligingen
Via Cloudflare zijn er altijd twee verbindingen:
- Bezoeker naar Cloudflare.
- Cloudflare naar jouw server (de origin).
De SSL/TLS-modus bepaalt hoe de tweede verbinding werkt. De eerste is bij actieve proxy altijd versleuteld, als je HTTPS gebruikt.
De modi op een rij
| Modus | Cloudflare naar origin | Waarvoor |
|---|---|---|
| Off | Geen versleuteling | Niet gebruiken |
| Flexible | HTTP, onversleuteld | Alleen als je origin geen TLS kan |
| Full | HTTPS, certificaat niet gecontroleerd | Origin met zelfondertekend of ongeldig certificaat |
| Full (strict) | HTTPS, certificaat gecontroleerd | De aanbevolen stand |
| Strict (SSL-Only Origin Pull) | Altijd HTTPS met validatie | Wanneer je alleen versleutelde origin-verbindingen wilt |
Cloudflare raadt Full of Full (strict) aan. Daarmee voorkom je volgens de documentatie kwaadaardige verbindingen naar je origin. Voor een webshop met klantgegevens en betalingen is Full (strict) de norm.
Waarom Flexible riskant is
Bij Flexible gaat het verkeer tussen Cloudflare en jouw server onversleuteld. Klantgegevens, sessiecookies en formulieren reizen over dat stuk als platte tekst. Daarnaast ontstaat bij Flexible vaak een redirectlus: de server stuurt HTTP-verkeer door naar HTTPS, Cloudflare vraagt opnieuw via HTTP, en zo verder. Dat is een bekend probleem, vooral bij Magento met "HTTPS forceren". De oplossing is niet Flexible laten staan, maar Full (strict) instellen.
Full (strict) instellen
Voor Full (strict) moet je origin een geldig certificaat hebben. Twee opties:
- Een publiek certificaat, bijvoorbeeld van een bekende certificaatautoriteit.
- Een Cloudflare Origin CA-certificaat. Cloudflare geeft het uit voor verkeer tussen Cloudflare en jouw server. Het is alleen vertrouwd door Cloudflare, niet door browsers. Zolang je alles via de proxy laat lopen, is dat voldoende.
Let op bij het Origin CA-certificaat: bezoek je het domein ooit zonder Cloudflare (bijvoorbeeld bij een tijdelijke uitschakeling van de proxy), dan geeft de browser een certificaatwaarschuwing. Houd daar rekening mee.
Stappen:
- Installeer een geldig certificaat op je origin.
- Zorg dat de server op poort 443 luistert.
- Zet de modus in Cloudflare op Full (strict).
- Test de shop, de admin en de checkout.
Automatic SSL/TLS
Cloudflare kent een Automatic-modus. Een recommender kijkt wat je origin ondersteunt en zet je zone zo nodig naar een veiligere stand. Hij verlaagt de instelling nooit. Zorg dus dat je origin-configuratie geldig blijft, want een verlopen certificaat blijft anders onopgemerkt.
HSTS
HSTS vertelt browsers dat ze een site alleen via HTTPS mogen laden. Dat voorkomt downgrade-aanvallen. Het is krachtig en moeilijk terug te draaien: een browser onthoudt de instructie voor de ingestelde duur.
Gebruik HSTS pas als:
- Al je subdomeinen HTTPS aankunnen.
- Je Full (strict) draait.
- Je het eerst met een korte duur test.
Zie ook security headers en script-monitoring.
Minimum TLS-versie
Je kunt een minimale TLS-versie instellen. Oude versies bieden zwakke bescherming. Verhoog de minimale versie alleen als je klantenbestand en je betaalproviders dat aankunnen. Controleer vooraf of oudere koppelingen, bijvoorbeeld een oude ERP-client, nog op een lage versie draaien.
Veelvoorkomende fouten
- Redirectlus (ERR_TOO_MANY_REDIRECTS). Meestal Flexible in combinatie met een forced-HTTPS-regel op de server.
- 525 of 526 fouten. De handshake met de origin mislukt of het certificaat is ongeldig. Controleer certificaat en poort.
- Gemengde inhoud. Hardgecodeerde
http://-links. Zet je basis-URL's in Magento op HTTPS.
Een omzetting in de goede volgorde
De meeste SSL-problemen ontstaan doordat de modus wordt aangepast zonder dat de server klaar is. Werk in deze volgorde:
- Zorg dat de server HTTPS spreekt. Controleer rechtstreeks op de server (of via een hosts-bestandwijziging op je eigen machine) dat poort 443 antwoordt met een geldig certificaat.
- Kies het certificaattype. Een publiek certificaat (bijvoorbeeld Let's Encrypt) of een Cloudflare Origin CA-certificaat. Het Origin CA-certificaat wordt alleen door Cloudflare vertrouwd. Dat is prima zolang al het verkeer via Cloudflare loopt, maar je kunt je server dan niet meer rechtstreeks in een browser testen zonder certificaatwaarschuwing.
- Zet de modus op Full (strict). Pas daarna.
- Test alle domeinen en subdomeinen die achter Cloudflare staan.
- Pas HSTS pas toe als alles stabiel is.
Origin CA of publiek certificaat?
| Cloudflare Origin CA | Publiek certificaat (bijv. Let's Encrypt) | |
|---|---|---|
| Vertrouwd door browsers | Nee, alleen via Cloudflare | Ja |
| Geldigheid | Lang in te stellen | Kort, vaak 90 dagen |
| Vernieuwing | Zelden nodig | Automatiseren is verplicht |
| Directe toegang testen | Geeft waarschuwing | Werkt |
| Past als je ooit van Cloudflare wegstapt | Nee, je moet dan alsnog vervangen | Ja |
Voor een shop die vast achter Cloudflare staat is een Origin CA-certificaat een rustige keuze, omdat er niets verloopt wat je vergeet te vernieuwen. Gebruik je ook rechtstreekse verbindingen, bijvoorbeeld voor een monitoringtool of een API-koppeling die niet via Cloudflare loopt, dan is een publiek certificaat praktischer.
Wat er in de praktijk misgaat
- Omleidingslus (ERR_TOO_MANY_REDIRECTS). In Flexible-modus praat Cloudflare met je server over HTTP. Staat daar een "forceer HTTPS"-regel, dan stuurt de server elk verzoek terug naar HTTPS, waarna Cloudflare opnieuw over HTTP komt. De oplossing is niet de redirect weghalen, maar overstappen op Full (strict).
- Magento die zijn eigen basis-URL's in HTTP heeft. Controleer de base URLs in de Magento-configuratie en of de server het
X-Forwarded-Proto-signaal goed doorgeeft, zodat Magento weet dat de bezoeker over HTTPS komt. - Mixed content na de overstap. Afbeeldingen of scripts die nog via
http://worden ingeladen. Zoek ze in de broncode en in de database (CMS-blokken, productbeschrijvingen). - Fout 525 of 526. De verbinding tussen Cloudflare en je server faalt: bij 525 de TLS-handshake, bij 526 een ongeldig certificaat in strict-modus. Bekijk de vervaldatum, de keten (intermediate certificaten) en of de hostnaam in het certificaat klopt.
- Subdomeinen vergeten. Elk subdomein achter Cloudflare heeft hetzelfde nodig. Het certificaat moet de hostnaam dekken.
HSTS: pas op met een onomkeerbare instelling
HSTS vertelt browsers dat ze een domein alleen via HTTPS mogen benaderen, voor een bepaalde tijd. Dat is goed, maar een foutje wordt lang meegenomen. Daarom:
- Begin met een korte
max-age, bijvoorbeeld enkele minuten tot een dag, en verhoog stapsgewijs. - Zet
includeSubDomainsalleen aan als je zeker weet dat elk subdomein HTTPS goed afhandelt. Denk aan een oude test- of mailomgeving. - Overweeg "preload" pas als je het bewust wilt, omdat het terugdraaien traag gaat.
Controle in drie commando's
# Bekijk de certificaatketen van je origin (direct naar het server-IP)
openssl s_client -connect JOUW-ORIGIN-IP:443 -servername www.jouwshop.nl </dev/null 2>/dev/null | openssl x509 -noout -dates -subject
# Zie wat de bezoeker krijgt via Cloudflare
curl -sI https://www.jouwshop.nl | head -n 15
# Controleer de HSTS-header
curl -sI https://www.jouwshop.nl | grep -i strict-transport
Vervang de voorbeelddomeinen door jouw eigen. Zie je bij de tweede opdracht een cf-ray-header, dan loopt het verkeer via Cloudflare.
Voor de volledige uitrol, inclusief DNS en regels, lees je het stappenplan voor Cloudflare Pro. Meer over onze aanpak vind je bij webshop security.
Veelgestelde vragen
Welke SSL-modus kies ik voor een webshop?
Full (strict), mits je origin een geldig certificaat heeft. Flexible gebruik je niet voor een webshop.
Is een Cloudflare Origin CA-certificaat genoeg?
Voor verkeer via de Cloudflare-proxy wel. Browsers vertrouwen het certificaat zelf niet, dus omzeil je Cloudflare, dan krijg je een waarschuwing.
Moet ik HSTS aanzetten?
Het is aan te raden, maar pas na testen. Begin met een korte duur en verleng als alles werkt.
Wat betekent fout 526?
Cloudflare kan het certificaat van je origin niet valideren in Full (strict). Controleer geldigheid, keten en domeinnaam.
Een correct SSL-fundament voorkomt gedoe later. Neem contact op.

Geschreven door Ruthger Idema
15+ jaar ervaring in e-commerce development. Gespecialiseerd in Magento, Shopify en Laravel maatwerk.
Meer over ons team →


