Kort svar
En hostname mismatch betyder at det domæne du forbinder til ikke står i certifikatets Subject Alternative Name (SAN)-liste. Moderne klienter ignorerer det gamle Common Name (CN)-felt fuldstændigt og validerer kun mod SAN. Hvis certifikatet er udstedt til www.example.com men brugeren går til example.com (eller omvendt), fejler valideringen — selvom certifikatet ellers er helt gyldigt.
Bekræft hvilke navne certifikatet dækker
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \ | openssl x509 -noout -text | grep -A1 "Subject Alternative Name"
Outputtet viser fx DNS:www.example.com. Er det domæne du besøger ikke på listen, er det årsagen til fejlen.
De typiske årsager
- www vs apex: Certifikatet dækker
www.example.commen ikkeexample.com. Løsning: udsted et certifikat med begge navne i SAN, eller redirect det ene til det andet. - Forkert certifikat på en multi-domæne-server: Klienten sendte ikke SNI, så serveren returnerede standardcertifikatet for et andet domæne. Se SNI-afsnittet i handshake-guiden.
- Wildcard-grænse:
*.example.comdækker ét niveau — altsåapi.example.com, men ikkeexample.comselv og heller ikkea.b.example.com. - IP-adresse i stedet for navn: Du forbinder til
https://203.0.113.10mens certifikatet kun har DNS-navne.
SAN vs CN: hvorfor det gamle felt er dødt
Tidligere blev domænet lagt i certifikatets Common Name. Siden 2017 ignorerer browsere CN og kræver at alle gyldige navne står i SAN-feltet. Et certifikat uden SAN — uanset hvad CN siger — vil derfor fejle i moderne klienter. Det er også derfor selvsignerede certifikater genereret med gamle one-liners ofte fejler: de mangler SAN.
Sådan retter du det
- Tilføj det manglende navn til SAN ved at udstede et nyt certifikat. Med ACME tilføjer du blot domænet til certifikatets navneliste.
- Eller brug et wildcard hvis du har mange subdomæner — men vær opmærksom på wildcard-risici.
- Eller redirect apex til www (eller omvendt) på server-niveau, så brugerne aldrig rammer det navn certifikatet ikke dækker.
Genererer du et selvsigneret certifikat til test, så husk eksplicit at sætte SAN:
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem \ -days 365 -subj "/CN=localhost" \ -addext "subjectAltName=DNS:localhost,DNS:dev.local,IP:127.0.0.1"
Undgå mismatch i drift
Hostname mismatch opstår ofte når et nyt subdomæne tages i brug, men ikke kommer med på certifikatet. CertControl scanner jeres domæner, opdager nye subdomæner via Certificate Transparency og DNS, og markerer endpoints hvor certifikatets SAN ikke dækker det navn der faktisk serveres — før jeres brugere ser advarslen.
Ofte stillede spørgsmål
Dækker et www-certifikat også domænet uden www?
Nej, ikke automatisk. www.example.com og example.com er to forskellige navne. Begge skal stå i SAN, ellers fejler det ene. Mange udsteder derfor altid begge navne sammen.
Dækker et wildcard *.example.com selve example.com?
Nej. Et wildcard dækker ét niveau af subdomæner, fx api.example.com, men ikke apex-domænet example.com og heller ikke a.b.example.com.
Hvorfor ignorerer browseren Common Name?
Siden 2017 kræver browsere at gyldige navne står i Subject Alternative Name-feltet. CN bevares kun af historiske årsager og bruges ikke længere til validering.
Kan jeg få et certifikat til en IP-adresse?
Det er muligt med IP i SAN, men de fleste offentlige CA'er udsteder ikke til private IP'er. Til interne IP-adresser bruger man typisk en intern CA.