HTTPS/SSL ja sivuston tietoturva
Mikä on HTTPS/SSL?
HTTPS (HTTP Secure) on protokolla, joka salaa verkkosivuston ja kävijän selaimen välisen tiedonvaihdon. Salaus toteutetaan sivuston SSL/TLS-varmenteen avulla; varmenne toimii selaimelle kuin digitaalinen asiakirja, joka vahvistaa sivuston identiteetin. Selaimen osoiterivillä näkyvä lukkosymboli osoittaa, että yhteys on salattu ja varmenne on voimassa.
HTTP:n kautta lähetetyt tiedot siirretään selväkielisenä (plaintext), mikä tarkoittaa, että samassa verkossa (esim. julkisessa Wi-Fi-verkossa) oleva kolmas osapuoli voi lukea tiedot. HTTPS salaa nämä tiedot, jolloin ne ovat luettavissa vain lähettäjän ja vastaanottajan välillä.
SSL-varmenteet ovat yleensä voimassa tietyn ajan (esim. vuoden), ja ne on uusittava voimassaolon päätyttyä; nykyään monet webhotellipalveluntarjoajat ovat automatisoineet tämän prosessin, jolloin varmenne uusitaan automaattisesti, mikä vähentää manuaalisen seurannan tarvetta.
Miksi se on tärkeää?
HTTPS suojaa käyttäjien tietoja (lomaketiedot, kirjautumistiedot, maksutiedot) man-in-the-middle-hyökkäyksiltä. Google pitää HTTPS:n käyttöä lievänä sijoitussignaalina, ja selaimet näyttävät HTTP-sivustoille ”Ei turvallinen” -varoituksen, mikä vaikuttaa suoraan käyttäjien luottamukseen.
Turvattomat sivustot vähentävät kävijöiden halukkuutta jäädä sivustolle; erityisesti lomakkeita täyttävät tai maksuja suorittavat käyttäjät saattavat poistua sivustolta kesken toiminnon, kun he näkevät ”Ei turvallinen” -varoituksen. Tämä on luottamuskysymys, joka vaikuttaa suoraan konversioasteeseen.
Lisäksi useimmat nykyaikaisten selainten ominaisuudet (esim. sijaintipalvelut, ilmoitukset, tietyt maksu-API:t) toimivat ainoastaan HTTPS-yhteyden kautta; HTTP-yhteyttä käyttävä sivusto ei voi hyödyntää näitä ominaisuuksia lainkaan, ja sen tekniset mahdollisuudet kaventuvat jatkuvasti.
Miten tämä korjataan?
- Asenna sivustollesi voimassa oleva SSL-varmenne ja varmista, että se uusitaan automaattisesti, jotta sen voimassaoloaika ei pääse umpeutumaan.
- Ohjaa kaikki HTTP-pyynnöt 301-uudelleenohjauksella HTTPS-versioon.
- Poista sekasisältöä (mixed content) koskevat varoitukset: varmista, että kaikki sivun kuvat, skriptit ja CSS-tiedostot ladataan HTTPS-yhteyden kautta; muuten selain saattaa merkitä sivun ”osittain turvalliseksi”.
- Lisää mahdollisuuksien mukaan HSTS (HTTP Strict Transport Security) -otsikko, jotta selain muodostaa yhteyden sivustoon aina HTTPS-yhteyden kautta.
- Vähennä uudelleenohjausketjut (kuten peräkkäiset uudelleenohjaukset HTTP → HTTPS → www → non-www) yhteen vaiheeseen; jokainen ylimääräinen uudelleenohjaus lisää pienen viiveen sivun latausaikaan.
- Tarkista, että myös kolmansien osapuolten palveluiden (kuten kuvien CDN, lomakepalvelu tai chat-widget) tarjoamat resurssit toimitetaan HTTPS-yhteyden kautta; nämä ovat usein sekoitetun sisällön ongelman huomaamatta jääneitä lähteitä.
Esimerkki
# .htaccess-esimerkki
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Huono esimerkki: sivulla olevan vanhan absoluuttisen HTTP-linkin, kuten <img src="http://esimerkki.fi/logo.png">, päivittämisen unohtaminen; tämä aiheuttaa selaimessa sekasisältövaroituksen, vaikka sivu näyttäisikin yleisesti ottaen turvalliselta.
Yleisiä virheitä
- HTTP-version jättäminen auki sen sijaan, että se suljettaisiin; tällöin sivustoon pääsee sekä HTTP:n että HTTPS:n kautta, ja sisältö toistuu kahdella eri osoitteella.
- Jättää sivulle HTTPS-sivuston alle edelleen HTTP:n kautta ladattavia kuvia tai skriptejä (sekoitettu sisältö).
- SSL-varmenteen voimassaolon päättyminen; tässä tapauksessa selain saattaa näyttää sivuston täysin saavuttamattomana.
- Luoda tarpeettomia, useista vaiheista koostuvia uudelleenohjausketjuja.
- Sertifikaatin hankkiminen vain pääverkkotunnukselle ja aliverkkotunnusten (esim. blog.esimerkki.fi) jättäminen sen ulkopuolelle.
- Vanhojen HTTP-osoitteiden käyttäminen sisäisissä linkeissä (valikko, alatunniste, sisäiset linkit); tämä laukaisee jokaisella klikkauksella tarpeettoman 301-uudelleenohjauksen ja hidastaa sivun latautumista hieman.
- Viittaaminen vanhoihin HTTP-osoitteisiin sivukartassa ja kanonisten tagien yhteydessä; tämä lähettää hakukoneelle sekavia signaaleja.
- Itse allekirjoitetun (self-signed) varmenteen siirtäminen vahingossa paikallisesta kehitysympäristöstä (localhost) tuotantoympäristön konfiguraatioon; selaimet eivät pidä tällaisia varmenteita luotettavina.
- Seoraporu.co-raportti merkitsee HTTPS:n puuttumisen tai sekasisältövaroitukset ensisijaisesti teknisten havaintojen osiossa, koska ne vaikuttavat samanaikaisesti sekä luotettavuuteen että suorituskykyyn.