Guides 7 min lesing

SSL-sertifikatfeil forklart: årsaker og løsninger

NET::ERR_CERT_DATE_INVALID, ERR_CERT_COMMON_NAME_INVALID og de andre SSL-advarslene i nettleseren forklart: hva hver av dem betyr, hva som forårsaker dem, og hvordan du løser dem på serveren.

En SSL-sertifikatfeil betyr at nettleseren ikke klarte å opprette en sikker tilkobling den stoler på, så den stopper og viser en advarsel i stedet for nettstedet ditt. De vanligste årsakene er et utløpt sertifikat (NET::ERR_CERT_DATE_INVALID), et sertifikat som ikke dekker domenenavnet (ERR_CERT_COMMON_NAME_INVALID), et sertifikat nettleseren ikke stoler på (ERR_CERT_AUTHORITY_INVALID) og en server som sender en ufullstendig sertifikatkjede eller bruker utdaterte TLS-innstillinger. Nesten alle løses på serveren, og den vanligste, utløp, kan forebygges helt.

Denne guiden går gjennom feilene besøkende faktisk ser, hva som forårsaker hver av dem og hvordan du løser dem, med kommandoer du kan kjøre for å sjekke ditt eget nettsted.

Hvorfor nettlesere blokkerer siden

Når en nettleser kobler til over HTTPS, viser serveren frem et sertifikat. Nettleseren sjekker tre ting før den sender noe som helst: at sertifikatet er innenfor gyldighetsperioden, at det er utstedt for nøyaktig det vertsnavnet som står i adressefeltet, og at det kan føres tilbake til en sertifiseringsinstans nettleseren stoler på. Feiler en av sjekkene, viser nettleseren en helsides advarsel som «Tilkoblingen din er ikke privat». De fleste besøkende forsvinner da. API-klienter og apper viser ingen advarsel i det hele tatt; de avviser tilkoblingen, og integrasjonen din slutter å virke.

Nettlesere kaller de samme problemene forskjellige ting. Slik henger de vanlige feilene sammen på tvers av dem:

ProblemChrome og EdgeFirefoxUtløpt eller ikke gyldig ennåNET::ERR_CERT_DATE_INVALIDSEC_ERROR_EXPIRED_CERTIFICATEFeil vertsnavnNET::ERR_CERT_COMMON_NAME_INVALIDSSL_ERROR_BAD_CERT_DOMAINIkke-klarert utsteder eller selvsignertNET::ERR_CERT_AUTHORITY_INVALIDSEC_ERROR_UNKNOWN_ISSUERProblem med protokoll eller chifferERR_SSL_PROTOCOL_ERROR, ERR_SSL_VERSION_OR_CIPHER_MISMATCHSSL_ERROR_NO_CYPHER_OVERLAP

Safari viser «Denne tilkoblingen er ikke privat» for de fleste av disse, med detaljene bak «Vis detaljer».

Se først på sertifikatet selv

Før du retter noe, bør du sjekke hva serveren faktisk sender. Denne kommandoen viser sertifikatets gyldighetsdatoer, subject og vertsnavnene det dekker:

echo | openssl s_client -connect northwind.shop:443 -servername northwind.shop 2>/dev/null \
| openssl x509 -noout -dates -subject -issuer -ext subjectAltName

Flagget -servername er viktig. Servere som har flere nettsteder, velger sertifikat ut fra navnet klienten ber om, og uten det kan du få se feil sertifikat. For å se hele kjeden serveren sender, legger du til -showcerts i den første kommandoen.

NET::ERR_CERT_DATE_INVALID

Sertifikatet er utenfor gyldighetsperioden. Nesten alltid betyr det at det har utløpt. Sjeldnere går klokken på den besøkendes datamaskin feil, slik at et gyldig sertifikat ser utløpt eller ikke gyldig ennå ut.

Typiske årsaker på serversiden:

Den automatiske fornyelsen sluttet å virke etter en serverflytting, et bytte av webserver eller en DNS-endring som ødela domenevalideringen.

Sertifikatet ble fornyet, men webserveren ble aldri lastet inn på nytt, så den serverer fortsatt det gamle fra minnet.

Sertifikatet ble utstedt manuelt for et år siden for et underdomene alle har glemt.

En lastbalanserer, et CDN eller en annen server har fortsatt det gamle sertifikatet, mens hovedserveren har det nye.

Løsning: forny sertifikatet, installer det overalt der det serveres, og last inn tjenesten på nytt. Med Certbot forteller en testkjøring deg om fornyelsen virker før det gjelder:

sudo certbot renew –dry-run
sudo systemctl reload nginx

Sjekk deretter det serverte sertifikatet igjen med openssl-kommandoen over. Filen på disken er ikke det besøkende ser; det serverte sertifikatet er det.

Hvis bare én besøkende melder om feilen og sertifikatet er gyldig, kan du be dem sjekke dato og klokkeslett på enheten sin.

NET::ERR_CERT_COMMON_NAME_INVALID

Sertifikatet er gyldig, men ikke for dette vertsnavnet. Nettlesere sammenligner adressefeltet med navnene som står i sertifikatets Subject Alternative Name-felt.

Vanlige årsaker:

Sertifikatet dekker northwind.shop, men ikke www.northwind.shop, eller omvendt.

Et wildcard-sertifikat for *.northwind.shop brukes på shop.eu.northwind.shop. Et wildcard dekker bare ett nivå.

Et nytt underdomene ble pekt mot en server som serverer et standardsertifikat for et annet nettsted.

En DNS-post peker til feil server, for eksempel en gammel vert eller et CDN som ikke har noe sertifikat for domenet ditt.

Løsning: utsted et sertifikat som lister opp alle vertsnavnene du serverer, eller ett per vertsnavn, og sjekk at hver serverblokk eller virtuelle vert bruker riktig sertifikat. Hvis vertsnavnet ikke skal serveres i det hele tatt, fjerner du DNS-posten.

NET::ERR_CERT_AUTHORITY_INVALID

Nettleseren stoler ikke på den som signerte sertifikatet. Årsaker:

Et selvsignert sertifikat, ofte en rest fra staging eller fra standardinstallasjonen av et kontrollpanel.

Et sertifikat fra en privat eller intern sertifiseringsinstans brukt på et offentlig nettsted.

En ufullstendig kjede på enkelte klienter, se nedenfor.

Noe mellom den besøkende og serveren som avskjærer tilkoblingen, for eksempel en bedriftsproxy eller antivirusprogramvare. Da ser bare noen besøkende feilen.

Løsning: erstatt selvsignerte og interne sertifikater på offentlige nettsteder med et fra en offentlig klarert sertifiseringsinstans. Gratis sertifikater fra Let’s Encrypt og lignende tjenester er klarert av alle de store nettleserne.

Ufullstendig sertifikatkjede

Sertifikatet ditt er signert av et mellomsertifikat, som igjen er signert av et rotsertifikat nettleseren stoler på. Serveren må sende både sertifikatet ditt og mellomsertifikatet. Sender den bare sertifikatet ditt, avhenger resultatet av klienten: noen nettlesere på datamaskin henter det manglende mellomsertifikatet selv og viser ingen feil, mens andre nettlesere, mobilapper, curl og API-klienter feiler. Derfor dukker dette problemet ofte opp som «virker for meg, men betalingsleverandørens webhooks feiler».

curl melder det slik:

curl: (60) SSL certificate problem: unable to get local issuer certificate

Løsning: sett opp serveren med filen for hele kjeden. Med Certbot på nginx betyr det fullchain.pem, ikke 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 og chifferfeil

Disse feilene betyr at nettleseren og serveren ikke ble enige om hvordan de skulle kommunisere sikkert, før noen sertifikatsjekk i det hele tatt fant sted. Årsakene kan være en server som bare tilbyr gamle protokollversjoner som TLS 1.0 og 1.1, som dagens nettlesere ikke lenger godtar, en feilkonfigurert port som snakker vanlig HTTP på 443, et ødelagt TLS-oppsett etter en oppgradering, eller en brannmur eller proxy som forstyrrer handshaken.

Løsning: aktiver TLS 1.2 og TLS 1.3, bruk webserverens moderne standardchiffer eller en anerkjent konfigurasjonsgenerator, og sjekk at port 443 faktisk serverer TLS. Du kan teste en bestemt protokollversjon med openssl:

openssl s_client -connect northwind.shop:443 -servername northwind.shop -tls1_2

Blandet innhold

Blandet innhold (mixed content) er ikke en sertifikatfeil, men besøkende opplever det ofte slik. Siden lastes over HTTPS, men noen ressurser, som skript, bilder, stilark eller iframes, hentes over vanlig HTTP. Nettlesere blokkerer usikre skript og rammer helt, noe som kan ødelegge oppsettet eller funksjonaliteten, og kan vise siden uten den vanlige sikkerhetsindikatoren.

Løsning: endre hardkodede http://-adresser i maler, database og innstillinger til https:// eller relative adresser. På WordPress kommer blandet innhold ofte fra gamle adresser lagret i innleggsinnholdet etter en overgang til HTTPS. Som et sikkerhetsnett ber headeren Content-Security-Policy: upgrade-insecure-requests nettlesere hente disse ressursene over HTTPS i stedet.

For å finne blandet innhold før de besøkende gjør det, gjennomsøker Uptimechecks overvåking av ødelagte lenker nettstedet ditt og sitemapen hver dag og rapporterer blandet innhold og ødelagte lenker side for side.

Slik forebygger du sertifikatfeil

De fleste sertifikatfeil er konfigurasjonsfeil du retter én gang. Utløp er annerledes: det kommer tilbake hver gang et sertifikat når slutten av levetiden sin, og det slår gjerne til når personen som satte opp fornyelsen, har gått videre. Forebygging er en rutine, ikke en engangsløsning:

Ha en oversikt. List opp alle vertsnavn som serverer HTTPS, inkludert API-er, adminpaneler, staging og kundenettsteder.

Automatiser fornyelsen der du kan, og vit hvor den fortsatt er manuell.

Sjekk det serverte sertifikatet etter hver endring. Serverflyttinger, nye lastbalanserere og DNS-endringer er når fornyelser slutter å virke.

Overvåk utløpsdatoene, slik at du får en påminnelse uker før et sertifikat går ut, mens det fortsatt er tid til å rette en feilende fornyelse i ro og mak.

Følg med på domenet og DNS-postene også. Et utløpt domene eller en endret DNS-post ødelegger valideringen, og nettstedet med den.

Uptimechecks SSL-overvåking følger utløpsdatoen til sertifikatet som serveres på hvert domene og underdomene du overvåker over HTTPS, og sender påminnelser til varslingskanalene dine før det utløper. Det er inkludert i alle planer. Kombiner det med overvåking av domeneutløp og DNS-overvåking, siden et sertifikat bare er så pålitelig som domenet og postene bak det. Guiden vår om overvåking av SSL-sertifikatutløp har en fullstendig sjekkliste for fornyelse, og hvis nettleseren ikke engang finner nettstedet ditt, kan du lese om DNS_PROBE_FINISHED_NXDOMAIN.

Oppsummering

Hver SSL-feil er nettleseren som nekter å stole på en tilkobling: fordi sertifikatet er utløpt, utstedt for et annet navn, signert av noen den ikke kjenner, sendt uten kjeden sin eller tilbudt over en protokoll den ikke lenger godtar. Sjekk det serverte sertifikatet med openssl, rett konfigurasjonen, last inn serveren på nytt og sjekk igjen. Gjør deretter utløp til en påminnelse i stedet for en hendelse.

Uptimecheck minner deg på det før sertifikater og domener utløper, og varsler deg når nettstedet ditt slutter å svare. Prøv gratis i 14 dager, uten kredittkort.

Spørsmål

Hva forårsaker NET::ERR_CERT_DATE_INVALID?

Nesten alltid et utløpt sertifikat, ofte fordi den automatiske fornyelsen sluttet å virke eller serveren ikke ble lastet inn på nytt etter fornyelsen. Hvis bare én besøkende ser feilen, kan klokken på enheten deres gå feil.

Hvorfor virker nettstedet mitt i Chrome, men feiler i curl eller en app?

Som regel en ufullstendig sertifikatkjede. Noen nettlesere på datamaskin henter det manglende mellomsertifikatet selv, mens curl, mobilapper og API-klienter feiler. Server filen med hele kjeden.

Dekker et wildcard-sertifikat alle underdomener?

Det dekker ett nivå. Et sertifikat for *.northwind.shop dekker shop.northwind.shop, men ikke shop.eu.northwind.shop, og det dekker ikke selve domenet med mindre det også står oppført.

Er blandet innhold en SSL-sertifikatfeil?

Nei. Sertifikatet kan være i orden. Blandet innhold betyr at HTTPS-siden laster noen ressurser over HTTP, og nettlesere blokkerer eller flagger dem. Oppdater adressene til HTTPS.

Les videre

Guides 4 min lesing

SSL-sertifikatovervåking: gå aldri glipp av en fornyelse igjen

Et utløpt SSL-sertifikat gjør nettstedet ditt om til en advarsel i nettleseren. Hvorfor sertifikater fortsatt utløper med automatisk fornyelse, hva du bør overvåke, og hvordan du setter opp påminnelser som virker.

Les

Nedetid er fortid.

Sett opp din første monitor på under ett minutt, eller se deg rundt i livedemoen først.

14 dagers gratis prøveperiode · Deretter gratis for 5 monitorer · Uten kredittkort