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
Quelle est la différence entre SSLCertificateFile
et SSLCertificateChainFile
? Le client a acheté une clé CA auprès de GoDaddy. Il semble que GoDaddy ne fournisse qu'un SSLCertificateFile
(fichier .crt) et un SSLCertificateKeyFile (fichier .key) et pas à SSLCertificateChainFile
.
Mon SSL fonctionnera-t-il toujours sans un chemin SSLCertificateChainFile
spécifié?
Existe-t-il également un chemin canonique où ces fichiers doivent être placés?
À strictement parler, vous n'avez jamais besoin de la chaîne pour que SSL fonctionne.
Ce dont 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 a à donner aux clients se connectant est le certificat - qui ne raconte pas toute l'histoire de ce certificat SSL. Il dit: "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 ont un grand magasin de certificats d'autorité de certification (à la fois racine et intermédiaire) qu'il peut vérifier pour une relation de signature correspondante pour établir la confiance. Cependant, parfois cela ne fonctionne pas; le plus souvent, le problème que vous rencontrerez est un client qui ne détient pas le certificat pour une autorité de certification intermédiaire qui a signé votre certificat.
C'est là qu'intervient la chaîne; il permet à Apache de montrer au client exactement à quoi ressemble la relation d'approbation, ce qui peut aider un client à remplir les blancs 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:
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 voudrez que SSLCertificateChainFile
pointe vers le même fichier que SSLCertificateFile
.SSLCertificateChainFile
; le certificat CA qui a émis le certificat du serveur doit être le premier dans le fichier, suivi par tous les autres en haut de 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 causera éventuellement un problème avec un navigateur ou un autre.
Voici une assez bonne explication des différences ainsi que des impacts observables entre le choix de l'un par rapport à l'autre:
En fait, GoDaddy vous donne une chaîne intermédiaire:
http://support.godaddy.com/help/5238
Voici quelques discussions supplémentaires.
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 sont glacés du verbiage et de la vente incitative.
En termes de ce qui se passera si vous n'incluez pas la directive SSLCertificateChainFile appropriée: vous verrez un gros avertissement rouge dans votre navigateur car votre site SSL ne sera pas validé dans les navigateurs, car ils ne peuvent pas suivre la chaîne de certificats de votre site. un certificat appartenant à une autorité de certification connue du navigateur.
Je voudrais ajouter aux bonnes réponses précédentes sur le SSLCertificateChainFile que l'ordre des certificats dans ce fichier est également important. Les clients basés sur OpenSSL trieront l'ordre eux-mêmes, mais les clients basés sur gnutls échoueront sur une chaîne avec l'ordre incorrect.
Testez la commande avec gnutls-cli, comme
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 distribution place les certificats combinés.