Voor een gastennetwerk op basis van een FortiGate, FortiSwitches en FortiAP’s hebben we een captive portal ingericht. Bezoekers die verbinding maken met het gastennetwerk worden hierbij automatisch doorgestuurd naar een webpagina waar zij toegang tot het netwerk kunnen krijgen.
Technisch werkte deze oplossing zoals bedoeld, maar er was één punt dat de gebruikerservaring behoorlijk beïnvloedde: bij het openen van de captive portal verscheen in de browser een certificaatwaarschuwing.
Waarom ontstaat deze certificaatmelding?
Een captive portal draait via HTTPS en heeft daarom een SSL/TLS-certificaat nodig. Wanneer hiervoor het standaardcertificaat van de FortiGate wordt gebruikt, kan de browser dit certificaat niet automatisch vertrouwen.
Daarnaast moet de hostnaam waarmee de captive portal wordt benaderd overeenkomen met de naam die in het certificaat is opgenomen. Als dit niet het geval is, zal een moderne browser eveneens een waarschuwing tonen.
Voor een beheerinterface kan een dergelijke melding soms nog acceptabel zijn. Voor een gastennetwerk is dat minder wenselijk. Een bezoeker krijgt immers direct bij het verbinden een waarschuwing dat de verbinding mogelijk niet veilig is. Dat geeft niet alleen een slechte gebruikerservaring, maar kan er ook voor zorgen dat gebruikers de portal niet verder durven te openen.
FortiDDNS en Let’s Encrypt
Om dit op te lossen hebben we gebruikgemaakt van twee functies die beschikbaar zijn binnen het Fortinet-platform:
- FortiDDNS voor een publiek bereikbare en herkenbare DNS-naam;
- Let’s Encrypt voor het automatisch verkrijgen van een publiek vertrouwd SSL/TLS-certificaat.
Via FortiDDNS hebben we eerst een DNS-naam aan de FortiGate gekoppeld. Deze hostnaam kan vervolgens worden gebruikt als naam voor de captive portal.
Daarna hebben we op de FortiGate via Let’s Encrypt een certificaat laten genereren voor deze DNS-naam. Omdat Let’s Encrypt een publiek vertrouwde Certificate Authority is, wordt het uitgegeven certificaat standaard door moderne browsers vertrouwd.
Het certificaat is vervolgens gekoppeld aan de captive portal van het gastennetwerk.
Het resultaat
Na het toepassen van het Let’s Encrypt-certificaat kon de captive portal via de juiste FortiDDNS-hostnaam worden geopend zonder de eerdere certificaatwaarschuwing.
De werking ziet er daarmee als volgt uit:
Gast → FortiAP → FortiSwitch → FortiGate → Captive Portal via HTTPS → toegang tot gastennetwerk
Voor de gebruiker verandert er functioneel weinig: deze maakt nog steeds verbinding met het gastennetwerk en krijgt de captive portal te zien. Het belangrijke verschil is dat de browser nu een geldig en vertrouwd certificaat ontvangt.
Een klein technisch detail met veel impact
Dit is een mooi voorbeeld van een relatief kleine technische aanpassing die veel verschil kan maken in de gebruikerservaring.
Een captive portal kan technisch volledig correct zijn ingericht, maar een certificaatwaarschuwing zorgt ervoor dat de oplossing voor de eindgebruiker alsnog onbetrouwbaar kan overkomen. Door de captive portal te voorzien van een correcte DNS-naam en een publiek vertrouwd certificaat ontstaat een professionelere en gebruiksvriendelijkere gastennetwerkoplossing.
Binnen een Fortinet-omgeving kan de combinatie van FortiGate, FortiDDNS en Let’s Encrypt hiervoor een praktische oplossing bieden, zonder dat hiervoor apart een certificaat bij een externe leverancier hoeft te worden aangeschaft.
Source: r/CyberSecurity_NL · by /u/SolidBE