Certifikát webu prohlížeč nepřijme

Co to je

Server na portu 443 sice odpovídá, ale certifikát, který nám předal, prohlížeč nepřijme. Zkontrolovali jsme ho stejně jako prohlížeč, jen zvenku. Nic dalšího jsme na vašem webu netestovali.

Podle toho, co jsme viděli, jde o jeden z těchto případů:

Proč je to problém

Návštěvník většinou vidí celostránkové varování a většina lidí stránku zavře, stejně jako u vypršelého certifikátu. Chybějící prostřední certifikát je mírnější případ: řada prohlížečů si ho stáhne sama, ale jiní klienti selžou (viz níže).

Jak to opravit

Nejdřív zjistěte, co server posílá

openssl s_client -connect example.cz:443 -servername example.cz </dev/null 2>/dev/null |
  openssl x509 -noout -subject -issuer -dates -ext subjectAltName

Výpis ukáže vystavitele (issuer), platnost a jména v subjectAltName. Podle něj poznáte, který případ máte.

Self-signed, neznámá autorita, špatné jméno, slabý klíč

Všechno řeší nový certifikát od veřejné autority, který pokrývá doménu i variantu s www. Let’s Encrypt je zdarma a nový certifikát má moderní klíč:

sudo certbot --nginx -d example.cz -d www.example.cz

Chybí prostřední certifikát

Server musí posílat celý řetězec, ne jen svůj vlastní certifikát. Mnoho desktopových prohlížečů tuhle mezeru zakryje tím, že chybějící certifikát stáhnou samy (přes AIA), takže vám web může fungovat. Někteří klienti, třeba API klienti, skripty, platební brány a starší Android, to nedělají a spojení odmítnou. U nginx použijte soubor fullchain.pem, ne cert.pem:

ssl_certificate     /etc/letsencrypt/live/example.cz/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.cz/privkey.pem;

U Apache dejte fullchain.pem do SSLCertificateFile.

Ještě neplatí

Nejčastěji je špatně čas na serveru, který certifikát vystavoval. Zkontrolujte date a synchronizaci času (NTP), pak certifikát vystavte znovu.

Sdílený hosting

V administraci hledejte sekci SSL nebo HTTPS a přidejte certifikát pro vaši doménu. Pokud výchozí certifikát hostingu zůstává, napište podpoře.

Reference