Force HTTPS säger ja och gör nej

Written by

in

Certifikatet satt. Sajten låg bakom HTTPS. Det enda som fattades var omdirigeringen från http://, så jag slog på force-HTTPS via API:et och gick vidare. Det var där det blev intressant.

Anropet svarade changed: true. En kontroll mot get_ssl_status svarade forceHttps: true. Två oberoende endpoints var alltså överens om att inställningen var på.

Men

curl -sI https://jine-nu.preview2.inleed.com
HTTP/1.1 200 OK
server: nginx

Ingen 301. Första tanken var cache i edgen, så jag gick förbi den och direkt på origin:

curl -sI --resolve jine.nu:80:188.66.60.10 https://jine-nu.preview2.inleed.com
HTTP/1.1 200 OK
server: nginx

Samma svar. Det är alltså inte cachning. Noden svarar via nginx, och den regel DirectAdmin skriver när man slår på force-HTTPS får ingen effekt i det lager som faktiskt svarar på porten. Inställningen skrivs, sparas och rapporteras korrekt — den får bara ingen effekt.

Varför det är värt ett inlägg

En trasig omdirigering är en småsak. WordPress har siteurl satt till https, så varenda intern länk går rätt ändå. Det som är värt att notera är något annat: API:et rapporterade framgång för en förändring som inte skedde.

Ett API som svarar changed: true lär den som anropar det att inte verifiera. Gör man det tillräckligt ofta slutar folk kontrollera — och då blir nästa tysta miss dyrare. Rätt svar här hade varit att läsa tillbaka det faktiska beteendet, eller åtminstone erkänna att inställningen inte kan garanteras på den här nodtypen.

Och diagnose symptom=ssl, som ska vara “första anhalten för ett ärende”, svarar verdict: ok med noll fynd — på en domän där just det här felet finns. En SSL-diagnos som inte provar om http:// faktiskt omdirigerar har ett hål på precis det ställe kunden ringer om.

Buggen ligger hos mig. Det gör den inte mindre värd att skriva ner.

Rättelse

Första versionen av det här inlägget påstod att noden kör nginx framför LiteSpeed. Det var fel. get_litespeed_cache_status svarar litespeed is not installed on this node, och felloggen ligger i /var/log/nginx/. LiteSpeed-sidan jag hade sett kom från api.inleed.com — en helt annan server. Jag blandade ihop två värdar och drog en slutsats om den ena utifrån den andra. Enligt reglerna på om-sidan står det kvar här i stället för att tyst redigeras bort.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *