abonneren

KeyCDN: Mixed content voorzien van https

Mixed content https
Ben je voor een eigen website overgestapt naar een https-verbinding, dan moet je er voor zorgen dat ook alle losse onderdelen zoals scripts en afbeeldingen (mixed content) via een versleutelde verbinding worden geladen. Lees hier hoe je dat doet met KeyCDN.

De meest voorkomende fout bij het overzetten van een website naar een https-verbinding gaat over de zogenaamde mixed content. Zo’n fout ontstaat als een website zelf over een beveiligde https-verbinding wordt opgevraagd, maar bijbehorende losse onderdelen (zoals scripts, css-bestanden, afbeeldingen en video’s) via een onbeveiligde http-verbinding worden ingeladen. De website zal daardoor alsnog als onveilig worden beschouwd en het groene slotje in de adresbalk ontbreekt.

Je zult bij de overstap naar https niet alleen je ssl-configuratie moeten controleren, maar ook goed je website zelf na moeten lopen om te controleren dat bijvoorbeeld daadwerkelijk alle bronnen via https worden geladen. Chrome geeft via het Hulpprogramma’s voor ontwikkelaars (Ctrl+Shift+I) inzicht in zulke fouten als je de console opent. Er zijn ook handige websites die je helpen bij het controleren op mixed content, zoals JitBit.

Eigenlijk kun je pas als alles goed is opgezet nadenken over een permanente omleiding van http naar https of het gebruik van HSTS. Zulke wijzigingen zijn namelijk erg lastig terug te draaien voor jouw bezoekers, omdat browsers als Chrome en Firefox die verwijzingen zeer lang in hun cache bewaren.

Content Delivery Network

Voor statische content zoals scripts, css-bestanden en afbeeldingen maken steeds meer mensen gebruik van een zogenaamd Content Delivery Network (CDN). Met een kleine wijziging in de aanroep van content zorg je ervoor dat, als een bezoeker die content opvraagt, het vanaf een ‘cachende’ server dicht bij die gebruiker wordt opgehaald in plaats van bij je eigen server. Dat geeft veel minder vertraging en kan de snelheid waarmee je website wordt geladen enorm vergroten.

Ook hier geldt dat, om mixed content te voorkomen, je bij gebruik van een CDN moet zorgen dat er een https-verbinding naar de CDN is. Hoe je dat oplost verschilt per CDN.

KeyCDN instellen

We nemen KeyCDN als voorbeeld, een van de populairste aanbieders, met wereldwijde datacenters op 33 locaties. De aanbieder biedt goede faciliteiten, waaronder http/2 en https met meerdere opties om uit te kiezen, inclusief Let’s Encrypt. Dankzij de gratis proefperiode kun je kosteloos kennismaken met de mogelijkheden.

Na het inloggen bij KeyCDN begin je met het aanmaken van een zogenaamde zone voor je website via de optie Zones. Kies Add Zone, voer een herkenbare naam in en kies bij Zone Type voor Pull. Onder Pull Zone Settings geef je bij Origin URL de url van je website op. Vink de optie Show Advanced Features aan voor geavanceerde instellingen. Dat geeft je de mogelijkheid om https te configureren.

Mixed content https

Als je de geavanceerde instellingen hebt uitgeklapt, kun je bij het kopje SSL kiezen voor https-ondersteuning, met de opties shared, custom en letsencrypt. De makkelijkste en snelste optie, die we als eerste zullen kiezen, is shared. Klik daarna onderaan de pagina op Save om dit actief te maken. Na een paar minuten is de instelling actief. Onder Zones zie je de zogenaamde Zone URL die is aangemaakt. Alle statische content van de website is nu beschikbaar via die zone-url.

We nemen de ‘default page’ van Apache als voorbeeld, waarin een logo wordt opgevraagd. We voeren hier nu de zone-url in, zodat de afbeelding voortaan vanuit de CDN wordt geladen. KeyCDN gebruikt in deze situatie overigens een certificaat van Thawte, zoals je ook in bijvoorbeeld het hulpprogramma’s voor ontwikkelaars in Chrome kunt terugzien op het tabblad Security.

Let's Encrypt

KeyCDN ondersteunt ook het gebruik van Let’s Encrypt met een zogenaamde zonealias , wat er ook meteen mooier en professioneler uitziet dan gebruik van de zone-url zoals hierboven. We laten zien hoe dat werkt. We gaan terug naar Zones en klikken bij de hiervoor aangemaakte zone op Manage / Edit. Vink de optie Show Advanced Features aan en kies nu bij SSL voor letsencrypt. Klik op Save om de aanpassingen te bewaren.

Nu moet je een zogenaamd cname-record aan de dns-instellingen voor het domein toevoegen met in ons geval de naam cdn en als waarde de zone-url. Bij het invoeren van die waarde moet je hier, onder andere bij TransIP, overigens nog een afsluitende punt achter zetten. Nu hoef je alleen nog een Zonealias toe te voegen bij KeyCDN.

Mixed content https

Voordat je de zonealias gaat toevoegen is het voor de validatie van Let’s Encrypt belangrijk dat de dns-instellingen zijn doorgevoerd. Dit kan tot maximaal 24 uur duren na een wijziging, maar gaat meestal veel sneller. Controleer eventueel of dit al klaar is via deze site. Ga in je KeyCDN-account naar Zonealiases en kies Add Zonealias. Bij Alias voer je de naam in die je voor de cname hebt gebruikt. Bij Zone kies je de zone die er bij hoort. Druk ten slotte op Add.

Het kan nu tot vijf minuten duren voordat de zonealias overal actief is. De afbeelding is nu voortaan beschikbaar via (bijvoorbeeld) https://cdn.xda.nl/icons/openlogo-75.png. Het feit dat je eigenlijk gewoon www kunt vervangen door cdn, voor bronnen die vanuit de CDN geladen moeten worden, maakt het gebruik hiervan net wat eenvoudiger.

Certificaat vernieuwen

Je hoeft je over het vernieuwen van het bewuste certificaat geen zorgen te maken, die taak ligt bij KeyCDN. Heb je je website zelf nog niet overgezet naar https? Je kunt dan evengoed je CDN gebruiken en de statische content via een https-verbinding bij de CDN laden. Hoewel de website zelf geen https-gebruikt, is het laden van bronnen via https geen probleem en dit geeft dus ook geen mixed content fouten.

Je profiteert bovendien van http/2 van KeyCDN, wat een flink snelheidsvoordeel biedt als je meerdere bronnen bij de CDN opvraagt vanuit dezelfde internetpagina, bijvoorbeeld een flink aantal scripts, stylesheets en afbeeldingen. Als je website wél al een https-verbinding heeft, profiteer je daar natuurlijk ook van.

Geschreven door: Gertjan Groen op

Category: Workshop, Internet

Tags: