Versione breve:
Firefox utilizza un proprio database CA che include il certificato intermedio Startcom necessario; OpenSSL usa invece / etc / ssl che non ha quel certificato intermedio. Ma dovresti sistemarlo sul lato server, non sul lato client.
Versione lunga:
La convalida dei certificati SSL richiede che ogni certificato della catena sia validato. La catena inizia alla radice, termina con il certificato del nodo e può includere zero o più certificati intermedi.
Il software client deve avere un elenco di root attendibili. Una radice è firmata da sola ed è considerata affidabile dal produttore del software, incluso quel certificato nel proprio archivio di radici attendibili. Nel caso di Firefox, è (credo) cert8.db. Nel caso di OpenSSL, utilizza la gerarchia / etc / ssl.
Il software client potrebbe includere anche certificati intermedi nel suo archivio. Tuttavia, è non richiesto per . Sembra che Firefox lo abbia fatto per Startcom, ma che l'albero di configurazione di / etc / ssl di Ubuntu non lo sia.
Per questo motivo, è consigliabile utilizzare i certificati di nodo firmati con un certificato intermedio per includere tutti i certificati intermedi quando si invia il certificato a qualsiasi client che si connette.
Per rispondere direttamente alla tua domanda, mettere l'intermediario in / etc / ssl risolverà il problema - per te. Non per chiunque altro navigando nel tuo sito. Per correggerlo correttamente, è necessario aggiungere il certificato intermedio alla catena che il server mette a disposizione. Ad esempio, con Apache, vedere la direttiva SSLCertificateChainFile - DigiCert ha una buona procedura e StartCom contiene anche istruzioni.
@DanFromGermany chiede, nei commenti, se posso dare un riferimento per:
best practices for servers using node certificates signed with an
intermediate cert to include all intermediate certs
In effetti, chiamare "best practice" non è strettamente vero, è un requisito. In base a RFC 5246 (TLS 1.2) :
[The certificate_list] is a sequence (chain) of certificates. The
sender's certificate MUST come first in the list. Each following
certificate MUST directly certify the one preceding it. Because
certificate validation requires that root keys be distributed
independently, the self-signed certificate that specifies the root
certificate authority MAY be omitted from the chain, under the
assumption that the remote end must already possess it in order to
validate it in any case.
Per deduzione - ogni certificato nella catena deve certificare direttamente quello che lo precede, e solo l'autorità di certificazione principale è facoltativa ("PU be essere omesso"), quindi tutti i certificati intermedi sono obbligatori.
Quindi non è strettamente vero dire che includere tutte le sostanze intermedie è una buona pratica - sarebbe più giusto dire che non compresi tutti gli intermedi sono le peggiori pratiche, ma succede, perché le persone sono pigre e perché funziona abbastanza del tempo.