Perché devo installare il certificato intermedio startcom?

7

Ho rilasciato al mio server un certificato di classe 1 Startcom. Senza modifiche sul client, posso accedere a questo server tramite FF senza problemi. Tuttavia, quando provi a convalidare il certificato tramite openssl s_client , i chokes si lamentano dei certificati mancanti.

Posso risolvere il problema di openssl di cui sopra copiando il certificato "intermedio" di Startcom in /etc/ssl/certs e collegando il file nel formato <hash>.<iterator> .

Domanda: Devo fare questo passo? Sembra che il certificato radice di Startcom sia già affidabile. Inoltre FF è in grado di completare la catena di certificati senza problemi. Mi manca un passaggio? Perché il pacchetto ca-certificates si fida della radice e non del certificato intermedio? Perché devo fidarmi manualmente di Startcom?

EDIT: sto usando Ubuntu 12.04 in questo caso.

    
posta Dane O'Connor 08.05.2014 - 16:19
fonte

1 risposta

19

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.

    
risposta data 08.05.2014 - 17:16
fonte

Leggi altre domande sui tag