Normalement, avec un hôte virtuel, un SSL est installé 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
Et quelle est la différence entre SSLCertificateFile
et SSLCertificateChainFile
? Le client a acheté une clé de CA à GoDaddy. On dirait que GoDaddy ne fournit qu’un SSLCertificateFile
fichier (.crt) et un SSLCertificateKeyFile (fichier .key) et non pasSSLCertificateChainFile
.
Mon SSL fonctionnera-t-elle toujours sans SSLCertificateChainFile
chemin spécifié?
De plus, existe-t-il un chemin canonique où ces fichiers doivent être placés?
apache-2.2
ssl
chrisjlee
la source
la source
/etc/ssl
,/usr/local/etc/ssl
ou dans unssl
sous - répertoire spécifique au site Web (par exemple,/home/www/example.com/data
le site Webhome/www/example.com/ssl
contient-il les certificats)?Réponses:
À proprement parler, vous n’avez jamais besoin de la chaîne pour que SSL fonctionne.
Ce dont vous avez toujours besoin est un
SSLCertificateFile
avec unSSLCertificateKeyFile
contenant la bonne clé pour ce certificat.Le problème, c'est que si tout ce que vous donnez à Apache est le certificat, alors tout ce qu'il a à donner aux clients qui se connectent 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 disposent d’un grand nombre de certificats d’autorité de certification (racine et intermédiaires) sur lesquels il est possible de rechercher une relation de signature correspondante afin d’établir une relation de confiance. Cependant, parfois cela ne fonctionne pas; le plus souvent, le problème que vous rencontrez est un client qui ne détient pas le certificat pour une autorité de certification intermédiaire signant votre certificat.
C'est là que la chaîne entre; Cela permet à Apache de montrer au client exactement à quoi ressemble la relation de confiance, ce qui peut aider un client à remplir les espaces vides entre votre certificat, une racine de confiance et l’intermédiaire qu’ils ne connaissent pas. La chaîne peut être incluse dans votre configuration de deux manières:
SSLCertificateFile
, sur de nouvelles lignes après le certificat de serveur dans l’ordre (la racine doit être en bas). Si vous le configurez ainsi, vous voudrezSSLCertificateChainFile
pointer exactement le même fichier queSSLCertificateFile
.SSLCertificateChainFile
directive; 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 à 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.
la source
SSLCertificateChainFile
.SSLCertificateFile
et àSSLCertificateChainFile
indiquer le même fichier combiné, ce qui fonctionne - modifie ma réponse pour corriger ce problème.Voici une assez bonne explication des différences ainsi que des impacts observables entre le choix de l'un par rapport à l'autre:
https://stackoverflow.com/questions/1899983/difference-between-sslcacertificatefile-and-sslcertificatechainfile
la source
En fait, GoDaddy vous donne une chaîne intermédiaire:
http://support.godaddy.com/help/5238
Voici un peu plus de discussion.
http://support.godaddy.com/help/868/certificat-intermédiaire-
Le courrier électronique de GoDaddy vous expliquant 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 montée en gamme.
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, 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. cert à celui qui appartient à une autorité de certification connue du navigateur.
la source
J'aimerais ajouter aux bonnes réponses précédentes concernant 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 un ordre incorrect.
Testez la commande avec gnutls-cli, comme
où /etc/ssl/certs/ca-certificates.crt est l'emplacement où votre distribution place les certificats combinés.
la source