Gyakori, zavarba ejtő hiba: a weboldal a saját gépén hibátlanul működik, de egyes látogatóknál, bizonyos telefonokon, vagy amikor egy másik program (például egy fizetési rendszer vagy egy API-kliens) kapcsolódik hozzá, tanúsítványhibát jelez. Az ok legtöbbször a hiányzó köztes tanúsítvány.
Mi a tanúsítványlánc?
A böngészők és az operációs rendszerek néhány tucat megbízható gyökértanúsítványt (root CA) ismernek, ezeket előre telepítve tartalmazzák. A tanúsítványkiadók azonban a weboldalak tanúsítványait nem közvetlenül a gyökértanúsítvánnyal írják alá, hanem egy vagy több köztes tanúsítvánnyal (intermediate CA). A lánc így néz ki:
- Gyökértanúsítvány: a böngészőben előre telepítve.
- Köztes tanúsítvány: a gyökértanúsítvány írta alá.
- A weboldal tanúsítványa: a köztes tanúsítvány írta alá.
A böngésző csak akkor fogadja el a weboldal tanúsítványát, ha végig tudja követni a láncot a gyökértanúsítványig. Ehhez a szervernek a saját tanúsítványa mellett a köztes tanúsítványt is el kell küldenie. A köztes tanúsítvány(oka)t tartalmazó fájlt hívják CA bundle-nek.
Miért működik mégis egyes böngészőkben?
Az asztali böngészők egy része korábbi látogatásokból megjegyzi a köztes tanúsítványokat, vagy maga tölti le őket. Ezért a hiányos lánc a fejlesztő gépén gyakran észrevétlen marad. Más eszközök (sok mobiltelefon, a curl, a PHP, a Java, a fizetési és egyéb API-szolgáltatások) ezt nem teszik meg, és hibát jeleznek.
Hogyan ellenőrizhetem?
A legegyszerűbb a Qualys SSL Labs ingyenes tesztje: ha a lánc hiányos, a jelentésben a Chain issues: Incomplete sor jelenik meg.
Parancssorból:
openssl s_client -connect pelda.hu:443 -servername pelda.hu -showcerts </dev/null
A kimenetben a Certificate chain alatt legalább két tanúsítványnak kell szerepelnie (a weboldalé és a köztes). Ha csak egy van, hiányzik a köztes tanúsítvány. A kimenet végén a Verify return code: 0 (ok) jelzi, hogy a lánc rendben van.
Hogyan javíthatom?
Ingyenes tanúsítvány a tárhelyen
Az AutoSSL a köztes tanúsítványt automatikusan telepíti, ezzel nincs teendője.
Fizetős tanúsítvány cPanelben
Ha a tanúsítványt az Ügyfélportálon Autoinstall (via cPanel) módban állította be, a portál a köztes tanúsítványt is telepíti. Kézi telepítésnél:
- Az Ügyfélportálon a tanúsítvány oldalán töltse le a köztes tanúsítványt (Köztes tanúsítvány letöltése).
- A cPanelben a Biztonság részben kattintson az SSL/TLS ikonra, majd a Manage SSL sites linkre.
- Illessze be a tanúsítványt (Certificate: CRT), a privát kulcsot (Private Key: KEY) és a köztes tanúsítványt a Certificate Authority Bundle: CABUNDLE mezőbe.
- Kattintson az Install Certificate gombra.
Részletesebben: Hogyan használhatom már meglévő SSL tanúsítványomat?
Saját szerveren (Nginx, Apache)
A legegyszerűbb, ha a tanúsítványt és a köztes tanúsítványt egy fájlba fűzi (a sorrend fontos: előbb a sajátja, utána a köztes):
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 vagy újabb):
SSLCertificateFile /etc/ssl/pelda.hu-fullchain.crt
SSLCertificateKeyFile /etc/ssl/pelda.hu.key
A módosítás után töltse újra a webszervert (systemctl reload nginx vagy systemctl reload httpd). A Let’s Encrypt tanúsítványoknál a Certbot a fullchain.pem fájlban már eleve az összefűzött láncot adja, a webszervernek ezt kell megadni, nem a cert.pem fájlt.
Az Apache beállításáról részletesen: Lépésről lépésre útmutató az SSL beállításához Apache szerveren.
Gyökértanúsítványt ne tegyen a láncba
A gyökértanúsítványt nem kell (és nem is érdemes) a szerveren elküldeni, hiszen a böngésző már ismeri. A felesleges tanúsítvány csak lassítja a kapcsolat felépítését.