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

J'ai des problèmes de configuration de SSL sur une Debian 6.0 32bit serveur. Je suis relativement nouveau avec SSL, donc s'il vous plaît garder avec moi. Je suis, y compris des informations autant que je le peux.

Remarque: Le vrai nom de domaine a été changé pour protéger l'identité et l'intégrité du serveur.

Configuration

Le serveur est en cours d'exécution à l'aide de 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 à l'aide de la méthode décrite ici

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

mysite.ca.crt est le certificat donné à moi par la signature de l'autorité, et la bundle.crt est le certificat d'autorité de certification a également envoyé à moi par mon pouvoir de signature. Le problème est que je n'ai pas acheté le certificat SSL directement à partir de GlobalSign, mais plutôt par le biais de mon fournisseur d'hébergement, Singlehop.

De test

Le certificat valide correctement sur Chrome et Safari, mais pas sur Firefox. Initiale de la recherche a révélé qu'il peut être un problème avec l'autorité de certification.

J'ai exploré la réponse à une question similaire, mais a été incapable de trouver une solution, comme je ne comprends pas vraiment ce que le but de chaque certificat sert.

J'ai utilisé de l'installation de openssl s_client pour tester la connexion, et a reçu de 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 l'installation de openssl réponse (avec les certificats et les informations inutiles tronquée) peut être trouvé ici.

J'ai aussi le message d'avertissement:

No client certificate CA names sent

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

Les tentatives pour 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 il a reçu le même message d'erreur. J'ai mis à jour la racine de l'autorité de certification sur mon serveur Debian à l'aide de la update-ca-certificates de commande, mais rien n'a changé. C'est probablement parce que la CA envoyé à partir de mon fournisseur était correct, donc il conduit au certificat enchaîné deux fois, ce qui n'aide pas.

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 si il ya quelque chose que je peux essayer, ou si j'ai juste le tout configuré de manière incorrecte.

  • Qu'est-ce que l'URL pour atteindre le serveur?
  • Votre domaine cert est signé par l'émetteur AlphaSSL CA - SHA256 - G2. Cependant, votre chaîne de fournitures intermédiaires AlphaSSL CA - G2. Je crois que vous avez besoin de supprimer l'actuel certificat intermédiaire (AlphaSSL CA - G2), et de la remplacer par une empreinte digitale ae:bf:32:c3:c8:32:c7:d7... (AlphaSSL CA - SHA256 - G2). Aussi, vous n'avez pas besoin d'envoyer GlobalSign Root CA. Le client doit racine sa confiance à leur (ou intermédiaires).
  • Vous serez en mesure de tester cette localement avec OpenSSL. Essayez openssl s_client -connect <server>:<port> -CAfile <GlobalSign Root CA.pem>. La commande doit se terminer un Verify OK (0) ou similaire. Lorsque vous obtenez la Verify OK (0), le serveur est configuré correctement (pour cette question).
  • Lorsque vous téléchargez que de nouveaux intermédiaires, vous aurez besoin de les convertir à PEM avec openssl x509 -in gsalphasha2g2.crt -inform DER -out Alpha-SHA256-G2.pem -outform PEM.
  • Belle. Je crois que ça fonctionne maintenant. Pour une raison que je pensais que j'ai essayé d'obtenir le SHA 256 un, mais j'ai pas réussi à convertir correctement. Je vous remercie, sincèrement.
  • oui, la chose à considérer sont l'Objet de l'Émetteur paires de marche arrière à une racine ou d'une ar. OpenSSL les affiche comme des i: et s: sous s_client. Une fois que vous avez le certificat de votre besoin, concat tous sauf la racine. Parce qu'ils sont concat avais, ils doivent être au format PEM. L'URL a été utile. Ses vieillir en essayant d'aider les gens qui ne veulent pas fournir des informations afin que nous puissions regarder localement avec s_client. (Si vous n'avez pas de fournir l'URL, j'aurais voté pour fermer).
  • Je vais garder cela à l'esprit (l'affichage de l'URL). Merci encore pour votre aide!