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
.
Vous devez vous connecter pour publier un commentaire.
Les certificats intermédiaires doivent être installés sur vos serveurs web ainsi que les certs pour votre propre nom de domaine. J'ai eu ce même problème la semaine dernière... Firefox semble être plus difficiles que le reste des navigateurs à ce sujet.
Ici est la bonne façon de vérifier un certficate à venir à partir d'un serveur web
Lorsqu'un client connecté à un serveur, il obtient le certificat du serveur et du certificat intermédiaire(s) à partir du serveur. Le client a ensuite construit une chaîne de confiance du certificat de serveur, par l'intermédiaire de certificat(s) à la une de l'autorité de certification les certificats RACINES approuvés. Les Certificats RACINES sont toujours auto-signé - c'est donc là que la chaîne s'arrête.
Ici est une simple commande pour tester un certificat de serveur web à l'aide d'openssl
Dans le cas de l'hébergement virtuel, où plusieurs certificats sont servis sur la même IP:PORT, SNI (server name indication) peut être activée à l'aide d'
-servername <FQDN>
. Sinon, la valeur par défaut de certificat vous sera envoyé.