La difficulté à comprendre la chaîne de certificats SSL de vérification

Mon application qui utilise le protocole SSL pour communiquer de façon sécurisée avec un serveur et il éprouve de la difficulté de la vérification de la chaîne de certificats. La chaîne ressemble à ceci:

Entrust.net Serveur Sécurisé de l'Autorité de Certification -> DigiCert Mondiale CA -> *.ourdomain.com

Nous sommes à l'aide d'un magasin de certificats tiré de Mozilla. Il contient les Entrust.net certificat, mais pas les DigiCert CA Mondiale une.

Ma compréhension est qu'un intermédiaire de l'autorité n'a pas à être digne de confiance aussi longtemps que la racine de l'autorité de l'est, mais l'échec de la vérification:

% openssl verify -CAfile mozilla-root-certs.crt ourdomain.com.crt
error 20 at 0 depth lookup:unable to get local issuer certificate

Donc ai-je besoin pour approuver la DigiCert CA Mondiale pour la vérification de passer? Qui semble erroné. Mais me direz vous!

MODIFIER: je comprends maintenant que le fichier de certificat doit être disponible pour OpenSSL à l'avant. Quelque chose comme cela fonctionne:

% openssl verify -CAfile mozilla-root-certs.crt -untrusted digicert.crt ourdomain.com.crt
ourdomain.com.crt: OK

Cela me permet de fournir une copie de la DigiCert CA sans le dire explicitement "j'ai confiance", l'ensemble de la chaîne doit encore être vérifiée.

Mais sûrement les navigateurs comme Firefox ne sont pas toujours livrés avec un exemplaire de chaque certificat, il n'en aurez jamais besoin. Il y a toujours de nouveaux CAs et le point est à l'utilisation de la sécurité de la racine de certificat pour s'assurer que toutes les autorités de certification intermédiaires sont valides. Droit? Alors, comment ne ce travail? Est-il vraiment aussi bête que cela ressemble?

  • Sur OpenBSD, -CAfile peut être réglé pour /etc/ssl/cert.pem.
InformationsquelleAutor joshk0 | 2009-09-21