Tags voor dit FAQ item:
PHP SSL

Help ons door dit artikel te beoordelen!

Score van 0 sterren, gebaseerd op 1 beoordelingen

Correct detecteren van SSL verkeer op het Kinamo hosting platform

Laatste bijgewerkt: 26/04/2016

Dit artikel legt uit hoe u correct HTTPS verkeer kan detecteren op het Kinamo hosting platform. Het Kinamo hosting platform laat toe om gebruik te maken van verschillende soorten SSL certificaten.

Het hosting platform maakt gebruik van HA Proxy load balancers om het verkeer te spreiden over verschillende webservers (dit om een hogere graad van redundantie te bekomen en dus te zorgen voor een uiterst stabiele PHP hosting omgeving).

Op het Kinamo shared hosting platform worden de certificaten op de load balancers geplaatst en wordt het verkeer via SSL offloading naar de onderliggende webserver nodes gebracht.
Welke impact heeft dit voor u als ontwikkelaar: de verbindingen op de website zullen steeds als normaal HTTP verkeer toekomen (met andere woorden op poort 80 en niet ge-encrypteerd) daar de load balancers deze taak voor zich nemen (vandaar de naam "SSL offloading").

Vaak is het nodig om in de toepassing na te gaan of de bezoeker daadwerkelijk via HTTPS op de website kwam, en indien dit niet het geval is deze toch via die weg te sturen. Op een gewone webserver is dit geen probleem en kan u via PHP code eenvoudig nagaan of de poort waarop de bezoeker binnenkwam poort 80 (normaal HTTP verkeer) of poort 443 (HTTPS verkeer) was, of het protocol HTTP of HTTPS was. Echter, op het Kinamo web hosting platform zal dit niet werken om eerder vermelde reden.
Om dit probleem op te lossen hebben wij twee headers toegevoegd. Aan de hand van deze headers kan u nagaan of de bezoeker via HTTPS binnen kwam of niet:

$_SERVER["HTTP_X_FORWARDED_PORT"]

Deze header zal meegeven via welke poort de bezoeker is binnen gekomen: in het geval van HTTPS is dit 443, in het geval van normaal HTTP verkeer is dit 80.

$_SERVER["HTTP_X_FORWARDED_PROTO"]

Deze header geeft mee via welk protocol de bezoeker is binnen gekomen, HTTPS of HTTP.

Onderstaand voorbeeld geeft weer hoe u op poort of protocol kan detecteren of iemand via de juiste weg binnen kwam, en indien dit niet het geval is zal de bezoeker doorverwezen worden naar de juiste website url.
Opgelet, deze code werkt ENKEL en ALLEEN op het Kinamo hosting platform! Voor standaard PHP worden andere server headers gebruikt!

if ($_SERVER['HTTP_X_FORWARDED_PORT'] != 443 || $_SERVER['HTTP_X_FORWARDED_PROTO'] != 'https')
{
    $redirect = "Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    header( $redirect, true, 301 );
    exit(0);
}

Wordpress vereist enkele aanpassingen voor correct detecteren van HTTPS verkeer. Hiervoor verwijzen we u graag door naar het FAQ item rond Wordpress en HTTPS verkeer detecteren.

Happy coding!