Pogosta, zmedena napaka: spletna stran na tvojem računalniku deluje brezhibno, pri nekaterih obiskovalcih, na določenih telefonih ali ko se z njo poveže drug program (na primer plačilni sistem ali odjemalec API), pa javi napako potrdila. Vzrok je največkrat manjkajoče vmesno potrdilo.
Kaj je veriga potrdil?
Brskalniki in operacijski sistemi poznajo nekaj deset zaupanja vrednih korenskih potrdil (root CA), ki jih vsebujejo vnaprej nameščena. Izdajatelji potrdil pa potrdil spletnih strani ne podpisujejo neposredno s korenskim potrdilom, temveč z enim ali več vmesnimi potrdili (intermediate CA). Veriga je videti takole:
- Korensko potrdilo: vnaprej nameščeno v brskalniku.
- Vmesno potrdilo: podpisalo ga je korensko potrdilo.
- Potrdilo spletne strani: podpisalo ga je vmesno potrdilo.
Brskalnik sprejme potrdilo spletne strani le, če lahko verigo sledi vse do korenskega potrdila. Za to mora strežnik poleg svojega potrdila poslati tudi vmesno potrdilo. Datoteka, ki vsebuje vmesna potrdila, se imenuje CA bundle.
Zakaj v nekaterih brskalnikih vseeno deluje?
Del namiznih brskalnikov si vmesna potrdila zapomni iz prejšnjih obiskov ali jih prenese sam. Zato nepopolna veriga na računalniku razvijalca pogosto ostane neopažena. Druge naprave (veliko mobilnih telefonov, curl, PHP, Java, plačilne in druge storitve API) tega ne naredijo in javijo napako.
Kako ga preverim?
Najpreprostejši je brezplačni preizkus Qualys SSL Labs: če je veriga nepopolna, se v poročilu pojavi vrstica Chain issues: Incomplete.
Iz ukazne vrstice:
openssl s_client -connect pelda.hu:443 -servername pelda.hu -showcerts </dev/null
V izpisu morata biti pod Certificate chain navedeni vsaj dve potrdili (spletne strani in vmesno). Če je le eno, manjka vmesno potrdilo. Verify return code: 0 (ok) na koncu izpisa pomeni, da je veriga v redu.
Kako jo popravim?
Brezplačno potrdilo na gostovanju
AutoSSL vmesno potrdilo namesti samodejno, s tem nimaš dela.
Plačljivo potrdilo v cPanelu
Če si potrdilo na portalu za stranke nastavil v načinu Autoinstall (via cPanel), portal namesti tudi vmesno potrdilo. Pri ročni namestitvi:
- Na portalu za stranke na strani potrdila prenesi vmesno potrdilo (Prenos vmesnega potrdila).
- V cPanelu v razdelku Varnost klikni ikono SSL/TLS, nato povezavo Manage SSL sites.
- Prilepi potrdilo (Certificate: CRT), zasebni ključ (Private Key: KEY) in vmesno potrdilo v polje Certificate Authority Bundle: CABUNDLE.
- Klikni gumb Install Certificate.
Podrobneje: Kako lahko uporabim svoje obstoječe potrdilo SSL?
Na lastnem strežniku (Nginx, Apache)
Najpreprosteje je, če potrdilo in vmesno potrdilo združiš v eno datoteko (vrstni red je pomemben: najprej tvoje, za njim vmesno):
cat pelda.hu.crt ca-bundle.crt > pelda.hu-fullchain.crt
Nginx:
ssl_certificate /etc/ssl/pelda.hu-fullchain.crt;
ssl_certificate_key /etc/ssl/pelda.hu.key;
Apache (2.4.8 ali novejši):
SSLCertificateFile /etc/ssl/pelda.hu-fullchain.crt
SSLCertificateKeyFile /etc/ssl/pelda.hu.key
Po spremembi znova naloži spletni strežnik (systemctl reload nginx ali systemctl reload httpd). Pri potrdilih Let’s Encrypt Certbot v datoteki fullchain.pem že da združeno verigo, spletnemu strežniku je treba navesti to, ne datoteke cert.pem.
Podrobno o nastavitvi Apacheja: Vodnik po korakih za nastavitev SSL na strežniku Apache.
Korenskega potrdila ne dodajaj v verigo
Korenskega potrdila ni treba (in tudi ni smiselno) pošiljati s strežnika, saj ga brskalnik že pozna. Odvečno potrdilo le upočasni vzpostavitev povezave.