53 votes

Différence entre SSLCertificateFile et SSLCertificateChainFile ?

Normalement, avec un hôte virtuel, un ssl est configuré avec les directives suivantes :

Listen 443 

SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt

De : Cette configuration fonctionnera-t-elle pour activer SSL pour un seul domaine sur un serveur avec plusieurs serveurs virtuels ?

Quelle est la différence entre SSLCertificateFile y SSLCertificateChainFile ? Le client a acheté une clé d'autorité de certification auprès de GoDaddy. Il semble que GoDaddy ne fournisse qu'une clé de SSLCertificateFile (fichier .crt) et un fichier SSLCertificateKeyFile (fichier .key) et non à l'adresse SSLCertificateChainFile .

Mon ssl fonctionnera-t-il toujours sans SSLCertificateChainFile chemin spécifié ?

Par ailleurs, existe-t-il un chemin canonique où ces fichiers doivent être placés ?

68voto

Shane Madden Points 112034

Strictement parlant, vous n'avez jamais besoin de la chaîne pour que SSL fonctionne.

Ce que vous avez toujours besoin est un SSLCertificateFile avec un SSLCertificateKeyFile contenant la clé correcte pour ce certificat.

Le problème est que si tout ce que vous donnez à Apache est le certificat, alors tout ce qu'il doit donner aux clients qui se connectent est le certificat - qui ne dit pas toute l'histoire de ce certificat SSL. Cela revient à dire : "Je suis signé par quelqu'un, mais je ne vais pas vous en parler".

Cela fonctionne généralement bien, car la plupart des systèmes clients disposent d'un grand nombre de certificats d'autorité de certification (racine et intermédiaire) qu'ils peuvent consulter pour trouver une relation de signature correspondante afin d'établir la confiance. Cependant, il arrive que cela ne fonctionne pas ; le plus souvent, le problème rencontré est celui d'un client qui ne détient pas le certificat d'une autorité de certification intermédiaire qui a signé votre certificat.

C'est là que la chaîne entre en jeu ; elle permet à Apache de montrer au client à quoi ressemble exactement la relation de confiance, ce qui peut aider le client à combler les lacunes entre votre certificat, une racine en laquelle il a confiance, et l'intermédiaire qu'il ne connaît pas. La chaîne peut être incluse dans votre configuration de deux manières :

  • Incorporé dans le même fichier que celui que vous avez défini pour votre SSLCertificateFile sur de nouvelles lignes après le certificat du serveur dans l'ordre (la racine doit être en bas). Si vous le configurez comme ceci, vous aurez besoin de SSLCertificateChainFile pointe sur le même fichier que SSLCertificateFile .
  • Dans un fichier séparé configuré dans le SSLCertificateChainFile le certificat de l'autorité de certification qui a émis le certificat du serveur doit figurer en premier dans le fichier, suivi de tous les autres jusqu'à la racine.

Vérifiez le fichier de certificat que vous avez maintenant - je parie qu'il ne contient pas les données de la chaîne. Ce qui fonctionne généralement bien, mais finira par causer un problème avec un navigateur ou un autre.

5voto

WerkkreW Points 5799

Voici une assez bonne explication des différences ainsi que des effets observables entre le choix de l'un et de l'autre :

https://stackoverflow.com/questions/1899983/difference-between-sslcacertificatefile-and-sslcertificatechainfile

4voto

cjc Points 24265

En fait, GoDaddy vous donne une chaîne intermédiaire :

http://support.godaddy.com/help/5238

Voici un complément de discussion.

http://support.godaddy.com/help/868/what-is-an-intermediate-certificate

L'e-mail de GoDaddy vous indiquant comment télécharger votre nouveau certificat contiendra également des informations sur le fichier de certificat intermédiaire. C'est quelque part vers le bas, peut-être après que vos yeux se soient éteints à cause du verbiage et de la vente incitative.

En ce qui concerne ce qui se passera si vous n'incluez pas la directive SSLCertificateChainFile appropriée : vous verrez un gros avertissement rouge dans votre navigateur parce que votre site SSL ne sera pas validé dans les navigateurs, car ils ne peuvent pas suivre la chaîne de certificats depuis le certificat de votre site jusqu'à un certificat détenu par une autorité de certification que le navigateur connaît.

4voto

Serge Points 46

J'aimerais ajouter aux bonnes réponses précédentes concernant le fichier SSLCertificateChainFile que l'ordre des certificats dans ce fichier est également important. Les clients basés sur OpenSSL s'occuperont eux-mêmes de l'ordre, mais les clients basés sur gnutls échoueront sur une chaîne dont l'ordre est incorrect.

Testez la commande avec gnutls-cli, comme suit

gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p https wwwsec.cs.uu.nl

où /etc/ssl/certs/ca-certificates.crt est l'emplacement où votre distro place les certificats combinés.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X