SSL-varmennevirhe tarkoittaa, että selain ei pystynyt muodostamaan suojattua yhteyttä, johon se luottaa, joten se pysähtyy ja näyttää sivustosi sijaan varoituksen. Yleisimmät syyt ovat vanhentunut varmenne (NET::ERR_CERT_DATE_INVALID), varmenne, joka ei kata verkkotunnusta (ERR_CERT_COMMON_NAME_INVALID), varmenne, johon selain ei luota (ERR_CERT_AUTHORITY_INVALID), sekä palvelin, joka lähettää puutteellisen varmenneketjun tai käyttää vanhentuneita TLS-asetuksia. Lähes kaikki korjataan palvelimella, ja yleisin niistä, vanheneminen, on täysin estettävissä.
Tämä opas käy läpi virheet, joita kävijät oikeasti näkevät, mikä kunkin aiheuttaa ja miten sen korjaa, sekä komennot, joilla voit tarkistaa oman sivustosi.
Miksi selaimet estävät sivun
Kun selain muodostaa HTTPS-yhteyden, palvelin esittää varmenteen. Selain tarkistaa kolme asiaa ennen kuin se lähettää mitään: että varmenne on voimassaoloaikansa sisällä, että se on myönnetty täsmälleen osoiterivillä olevalle isäntänimelle ja että sen ketju johtaa varmentajaan, johon selain luottaa. Jos jokin tarkistus epäonnistuu, selain näyttää koko sivun varoituksen, kuten ”Yhteytesi ei ole yksityinen”. Useimmat kävijät poistuvat siinä vaiheessa. API-asiakkaat ja sovellukset eivät näytä varoitusta lainkaan, vaan ne kieltäytyvät yhteydestä, ja integraatiosi lakkaa toimimasta.
Selaimet nimeävät samat ongelmat eri tavoin. Näin yleisimmät virheet vastaavat toisiaan:
OngelmaChrome ja EdgeFirefoxVanhentunut tai ei vielä voimassaNET::ERR_CERT_DATE_INVALIDSEC_ERROR_EXPIRED_CERTIFICATEVäärä isäntänimiNET::ERR_CERT_COMMON_NAME_INVALIDSSL_ERROR_BAD_CERT_DOMAINEpäluotettava myöntäjä tai itse allekirjoitettuNET::ERR_CERT_AUTHORITY_INVALIDSEC_ERROR_UNKNOWN_ISSUERProtokolla- tai salausongelmaERR_SSL_PROTOCOL_ERROR, ERR_SSL_VERSION_OR_CIPHER_MISMATCHSSL_ERROR_NO_CYPHER_OVERLAP
Safari näyttää useimmista näistä ilmoituksen ”This Connection Is Not Private”, ja tarkemmat tiedot löytyvät kohdasta ”Show Details”.
Katso ensin varmenne itse
Ennen kuin korjaat mitään, tarkista, mitä palvelin oikeasti lähettää. Tämä komento näyttää varmenteen voimassaoloajat, kohteen ja sen kattamat isäntänimet:
echo | openssl s_client -connect northwind.shop:443 -servername northwind.shop 2>/dev/null \
| openssl x509 -noout -dates -subject -issuer -ext subjectAltName
-servername-valitsimella on väliä. Useita sivustoja ylläpitävät palvelimet valitsevat varmenteen asiakkaan pyytämän nimen perusteella, ja ilman sitä saatat nähdä väärän varmenteen. Jos haluat nähdä koko palvelimen lähettämän ketjun, lisää ensimmäiseen komentoon -showcerts.
NET::ERR_CERT_DATE_INVALID
Varmenne on voimassaoloaikansa ulkopuolella. Lähes aina se tarkoittaa, että varmenne on vanhentunut. Harvemmin kävijän tietokoneen kello on väärässä, jolloin voimassa oleva varmenne näyttää vanhentuneelta tai siltä, ettei se ole vielä voimassa.
Tyypillisiä syitä palvelimen puolella:
Automaattinen uusiminen lakkasi toimimasta palvelinmuuton, verkkopalvelimen vaihdon tai verkkotunnuksen vahvistuksen rikkoneen DNS-muutoksen jälkeen.
Varmenne uusittiin, mutta verkkopalvelinta ei koskaan ladattu uudelleen, joten se tarjoaa yhä vanhaa varmennetta muistista.
Varmenne myönnettiin käsin vuosi sitten aliverkkotunnukselle, jonka kaikki unohtivat.
Kuormantasaajalla, CDN:llä tai toisella palvelimella on yhä vanha varmenne, vaikka pääpalvelimella on uusi.
Korjaus: uusi varmenne, asenna se kaikkialle, missä sitä tarjotaan, ja lataa palvelu uudelleen. Certbotin kuivaharjoitus kertoo, toimiiko uusiminen, ennen kuin sillä on väliä:
sudo certbot renew –dry-run
sudo systemctl reload nginx
Tarkista sitten tarjottu varmenne uudelleen yllä olevalla openssl-komennolla. Kävijät eivät näe levyllä olevaa tiedostoa, vaan palvelimen tarjoaman varmenteen.
Jos virheestä ilmoittaa vain yksi kävijä ja varmenne on voimassa, pyydä häntä tarkistamaan laitteensa päivämäärä ja kellonaika.
NET::ERR_CERT_COMMON_NAME_INVALID
Varmenne on voimassa, mutta ei tälle isäntänimelle. Selaimet vertaavat osoiteriviä varmenteen Subject Alternative Name -kentässä lueteltuihin nimiin.
Yleisiä syitä:
Varmenne kattaa nimen northwind.shop mutta ei nimeä www.northwind.shop, tai päinvastoin.
Nimelle *.northwind.shop myönnettyä wildcard-varmennetta käytetään nimellä shop.eu.northwind.shop. Wildcard kattaa vain yhden tason.
Uusi aliverkkotunnus ohjattiin palvelimelle, joka tarjoaa toisen sivuston oletusvarmennetta.
DNS-tietue osoittaa väärälle palvelimelle, esimerkiksi vanhalle palveluntarjoajalle tai CDN:lle, jolla ei ole varmennetta verkkotunnuksellesi.
Korjaus: hanki varmenne, jossa on lueteltu jokainen tarjoamasi isäntänimi, tai erillinen varmenne kullekin isäntänimelle, ja tarkista, että jokainen server-lohko tai virtuaalipalvelin käyttää oikeaa varmennetta. Jos isäntänimeä ei pitäisi tarjota lainkaan, poista sen DNS-tietue.
NET::ERR_CERT_AUTHORITY_INVALID
Selain ei luota varmenteen allekirjoittajaan. Syitä:
Itse allekirjoitettu varmenne, joka on usein jäänyt testiympäristöstä tai hallintapaneelin oletusasennuksesta.
Yksityisen tai sisäisen varmentajan varmenne julkisella sivustolla.
Puutteellinen ketju joillakin asiakasohjelmilla, katso alta.
Jokin kävijän ja palvelimen välissä sieppaa yhteyden, esimerkiksi yrityksen välityspalvelin tai virustorjuntaohjelma. Silloin virheen näkevät vain osa kävijöistä.
Korjaus: vaihda julkisten sivustojen itse allekirjoitetut ja sisäiset varmenteet julkisesti luotetun varmentajan varmenteeseen. Kaikki suuret selaimet luottavat Let’s Encryptin ja vastaavien palveluiden ilmaisiin varmenteisiin.
Puutteellinen varmenneketju
Varmenteesi on allekirjoitettu välivarmenteella, jonka on allekirjoittanut selaimen luottama juurivarmenne. Palvelimen on lähetettävä sekä oma varmenteesi että välivarmenne. Jos se lähettää vain oman varmenteesi, lopputulos riippuu asiakasohjelmasta: jotkin työpöytäselaimet hakevat puuttuvan välivarmenteen itse eivätkä näytä virhettä, kun taas muut selaimet, mobiilisovellukset, curl ja API-asiakkaat epäonnistuvat. Siksi tämä ongelma näkyy usein muodossa ”minulla toimii, mutta maksupalvelun webhookit eivät toimi”.
curl ilmoittaa siitä näin:
curl: (60) SSL certificate problem: unable to get local issuer certificate
Korjaus: määritä palvelimelle koko ketjun sisältävä tiedosto. Certbotilla ja nginxillä se tarkoittaa tiedostoa fullchain.pem, ei cert.pem:
ssl_certificate /etc/letsencrypt/live/northwind.shop/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/northwind.shop/privkey.pem;
ERR_SSL_PROTOCOL_ERROR ja salausalgoritmien yhteensopimattomuus
Nämä virheet tarkoittavat, että selain ja palvelin eivät päässeet sopuun suojatusta yhteydestä jo ennen varmenteen tarkistusta. Syynä voi olla palvelin, joka tarjoaa vain vanhoja protokollaversioita, kuten TLS 1.0 ja 1.1, joita nykyiset selaimet eivät enää hyväksy, väärin määritetty portti, joka puhuu porttiin 443 tavallista HTTP:tä, päivityksen jälkeen rikkoutunut TLS-määritys tai palomuuri tai välityspalvelin, joka häiritsee kättelyä.
Korjaus: ota käyttöön TLS 1.2 ja TLS 1.3, käytä verkkopalvelimesi nykyaikaisia oletussalausalgoritmeja tai luotettavan määritysgeneraattorin asetuksia ja tarkista, että portti 443 todella tarjoaa TLS:ää. Voit testata tietyn protokollaversion openssl:llä:
openssl s_client -connect northwind.shop:443 -servername northwind.shop -tls1_2
Sekasisältö
Sekasisältö (mixed content) ei ole varmennevirhe, mutta kävijät kokevat sen usein sellaisena. Sivu latautuu HTTPS:n kautta, mutta osa resursseista, kuten skriptit, kuvat, tyylitiedostot tai iframet, pyydetään tavallisella HTTP:llä. Selaimet estävät suojaamattomat skriptit ja kehykset kokonaan, mikä voi rikkoa ulkoasun tai toiminnot, ja voivat näyttää sivun ilman tavallista suojatun yhteyden merkkiä.
Korjaus: vaihda pohjiin, tietokantaan ja asetuksiin kovakoodatut http://-osoitteet muotoon https:// tai suhteellisiksi osoitteiksi. WordPressissä sekasisältö johtuu usein vanhoista osoitteista, jotka ovat jääneet artikkelien sisältöön HTTPS-siirron jälkeen. Varmistukseksi Content-Security-Policy: upgrade-insecure-requests -otsake käskee selaimia pyytämään nämä resurssit HTTPS:n kautta.
Jotta löydät sekasisällön ennen kävijöitä, Uptimecheckin rikkinäisten linkkien valvonta käy sivustosi ja sen sivukartan läpi joka päivä ja raportoi sekasisällön ja rikkinäiset linkit sivu kerrallaan.
Varmennevirheiden ehkäisy
Useimmat varmennevirheet ovat määritysvirheitä, jotka korjataan kerran. Vanheneminen on eri asia: se palaa aina, kun varmenteen elinkaari päättyy, ja se iskee yleensä silloin, kun uusimisen määrittänyt henkilö on siirtynyt muihin tehtäviin. Ehkäisy on rutiini, ei kertaluontoinen korjaus:
Pidä luetteloa. Listaa jokainen HTTPS:ää tarjoava isäntänimi, myös rajapinnat, hallintapaneelit, testiympäristöt ja asiakkaiden sivustot.
Automatisoi uusiminen kaikkialla, missä voit, ja tiedä, missä se on yhä käsin tehtävä.
Tarkista tarjottu varmenne jokaisen muutoksen jälkeen. Uusiminen hajoaa juuri palvelinmuutoissa, uusien kuormantasaajien käyttöönotossa ja DNS-muutoksissa.
Valvo vanhenemispäiviä, jotta saat muistutuksen viikkoja ennen varmenteen vanhenemista, kun epäonnistuneen uusimisen ehtii vielä korjata rauhassa.
Valvo myös verkkotunnusta ja sen tietueita. Rauennut verkkotunnus tai muuttunut DNS-tietue rikkoo vahvistuksen ja samalla sivuston.
Uptimecheckin SSL-valvonta seuraa jokaisen HTTPS:n kautta valvomasi verkkotunnuksen ja aliverkkotunnuksen tarjoaman varmenteen vanhenemispäivää ja lähettää muistutukset hälytyskanaviisi ennen vanhenemista. Se sisältyy jokaiseen pakettiin. Yhdistä se verkkotunnuksen vanhenemisen valvontaan ja DNS-valvontaan, sillä varmenne on vain yhtä luotettava kuin sen takana olevat verkkotunnus ja tietueet. SSL-varmenteiden vanhenemisen valvontaa käsittelevässä oppaassamme on kattava uusimisen tarkistuslista, ja jos selain ei löydä sivustoasi lainkaan, lue DNS_PROBE_FINISHED_NXDOMAIN-virheestä.
Yhteenveto
Jokainen SSL-virhe tarkoittaa, että selain kieltäytyy luottamasta yhteyteen: varmenne on vanhentunut, myönnetty toiselle nimelle, sen on allekirjoittanut tuntematon taho, se lähetetään ilman ketjuaan tai sitä tarjotaan protokollalla, jota selain ei enää hyväksy. Tarkista tarjottu varmenne openssl:llä, korjaa määritys, lataa palvelin uudelleen ja tarkista uudestaan. Tee sitten vanhenemisesta muistutus eikä häiriötä.
Uptimecheck muistuttaa ennen kuin varmenteet ja verkkotunnukset vanhenevat ja hälyttää, kun sivustosi lakkaa vastaamasta. Kokeile ilmaiseksi 14 päivää, luottokorttia ei tarvita.