web-dev-qa-db-fra.com

Erreur SSL: impossible d'obtenir le certificat de l'émetteur local

Je ne parviens pas à configurer SSL sur un serveur Debian 6.0 32 bits. Je suis relativement nouveau avec SSL, alors s'il vous plaît, supportez-moi. J'inclus autant d'informations que possible.
Remarque: le vrai nom de domaine a été modifié pour protéger l'identité et l'intégrité du serveur.

Configuration

Le serveur utilise nginx. Il est configuré comme suit:

ssl_certificate           /usr/local/nginx/priv/mysite.ca.chained.crt;
ssl_certificate_key       /usr/local/nginx/priv/mysite.ca.key;
ssl_protocols             SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers               HIGH:!aNULL:!MD5;
ssl_verify_depth          2;

J'ai enchaîné mon certificat en utilisant la méthode décrite ici

cat mysite.ca.crt bundle.crt > mysite.ca.chained.crt

mysite.ca.crt est le certificat qui m'a été fourni par l'autorité de signature et le bundle.crt est le certificat de CA qui m'a également été envoyé par mon autorité de signature. Le problème est que je n’ai pas acheté le certificat SSL directement auprès de GlobalSign, mais plutôt auprès de mon fournisseur d’hébergement, Singlehop.

Essai

Le certificat est correctement validé sur Safari et Chrome, mais pas sur Firefox. Une recherche initiale a révélé qu'il pourrait s'agir d'un problème avec l'autorité de certification.

J'ai exploré la réponse à un question similaire , mais je n'ai pas trouvé de solution car je ne comprends pas vraiment à quoi sert chaque certificat.

J'ai utilisé s_client de openssl pour tester la connexion et j'ai reçu une sortie qui semble indiquer le même problème que la question similaire . L'erreur est la suivante:

depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /OU=Domain Control Validated/CN=*.mysite.ca
verify error:num=27:certificate not trusted
verify return:1

Un détail complet de la réponse de openssl (avec les certificats et les informations inutiles tronquées) peut être trouvé ici .

Je vois aussi l'avertissement:

No client certificate CA names sent

Est-il possible que ce soit le problème? Comment puis-je m'assurer que nginx envoie ces noms de CA?

Tentatives de résoudre le problème

J'ai tenté de résoudre le problème en téléchargeant l'autorité de certification racine directement à partir de GlobalSign, mais j'ai reçu la même erreur. J'ai mis à jour les autorités de certification racines sur mon serveur Debian à l'aide de la commande update-ca-certificates, mais rien n'a changé. Cela est probablement dû au fait que l'autorité de certification envoyée par mon fournisseur était correcte. Le certificat a donc été chaîné deux fois, ce qui n'aide en rien.

0 s:/OU=Domain Control Validated/CN=*.mysite.ca
   i:/C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
1 s:/O=AlphaSSL/CN=AlphaSSL CA - G2
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
2 s:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA
   i:/C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA

Prochaines étapes

S'il vous plaît, laissez-moi savoir s'il y a quelque chose que je peux essayer, ou si tout est configuré de manière incorrecte.

72
Jamie Counsell

jww a raison - vous faites référence au mauvais certificat intermédiaire.

Comme vous avez reçu un certificat SHA256, vous aurez besoin de l’intermédiaire SHA256. Vous pouvez le récupérer à partir d'ici: http://secure2.alphassl.com/cacert/gsalphasha2g2r1.crt

44
RickK