Il tuo certificato non è firmato direttamente dalla radice della Certification Authority, ma da un certificato intermedio. Chi si collega deve poter ricostruire la catena: il tuo certificato, l'intermedio che l'ha emesso, la radice già presente nel sistema.
Per questo il server deve inviare, insieme al tuo certificato, anche l'intermedio.
I sintomi
I browser spesso compensano un intermedio mancante, quindi il sito sembra funzionare. Altri client no, e rifiutano la connessione con errori come:
unable to get local issuer certificate(curl, OpenSSL, PHP);PKIX path building failed(Java);- errori di certificato non attendibile su app mobili e dispositivi.
Verificare la catena
openssl s_client -connect www.tuodominio.it:443 \
-servername www.tuodominio.it -showcerts
Deve mostrare almeno due certificati: il tuo e l'intermedio, con il subject
dell'intermedio uguale all'issuer del tuo. In fondo, Verify return code: 0 (ok).
Correggerla
Unisci in un unico file il tuo certificato e poi l'intermedio, in quest'ordine, e indica quel file al server (vedi nginx e Apache). La radice non serve. Attenzione a usare l'intermedio giusto per il tuo certificato: è quello che riceviamo con il rilascio e ti inviamo insieme al certificato.
