web-dev-qa-db-fra.com

Différence entre SSLCACertificateFile et SSLCertificateChainFile

Je fournis des pages SSL sur mon serveur Web et j'ai une question. Quelle est la différence entre SSLCACertificateFile et SSLCertificateChainFile?

Lorsque j'utilise SSLCertificateChainFile, j'ai reçu des avertissements du navigateur de téléphone cellulaire japonais, mais lorsque j'utilise le navigateur PC (comme IE, FF), il n'y avait aucun problème. D'un autre côté, SSLCACertificateFile n'a causé aucun problème pour les deux navigateurs.

Y a-t-il une différence lorsque les navigateurs se connectent à apache?

71
nam

SSLCertificateChainFile était une option correcte à choisir mais cette directive est devenue obsolète depuis Apache 2.4.8 . Cette directive a provoqué l'envoi du fichier répertorié avec le certificat à tous les clients qui se connectent.

SSLCACertificateFile (ci-après "CACert") remplace SSLCertificateChainFile (ci-après "Chain") et permet en outre l'utilisation du certificat en question pour signer les certificats client. Ce type d'authentification est assez rare (du moins pour le moment), et si vous ne l'utilisez pas, il n'y a à mon humble avis aucune raison d'augmenter ses fonctionnalités en utilisant CACert au lieu de Chain. D'un autre côté, on pourrait faire valoir qu'il n'y a aucun mal dans la fonctionnalité supplémentaire, et CACert couvre tous les cas. Les deux arguments sont valides.

Inutile de dire que si vous demandez au fournisseur de certificats, ils pousseront toujours pour CACert sur la chaîne, car cela leur donne une autre chose (certificats clients) qu'ils peuvent potentiellement vous vendre en ligne. ;)

70
BMDan

En fait, les deux peuvent être des options valides.

Utilisez SSLCertificateChainFile pour publier votre certificat signé par l'autorité de certification publique (VeriSign, RapidSSL, etc.)

Utilisez SSLCACertificateFile pour fournir votre autorité de certification "privée", qui peut émettre des certificats clients, que vous pouvez distribuer à certains utilisateurs sélectionnés. Ces certificats client sont en fait parfaits pour l'authentification (par rapport à l'authentification par mot de passe de base), et ne sont généralement pas tenus d'être distribués par une autorité de certification publique (vous pouvez donc économiser de l'argent).

Donc, si vous souhaitez ajouter une autorisation sécurisée à une partie de votre site Web, procédez comme suit:

<Directory /var/www/html/authorized>
  SSLVerifyClient require
  SSLVerifyDepth  5

  SSLOptions +StrictRequire
  SSLUserName SSL_CLIENT_S_DN_CN
  SSLRequireSSL
</Directory>

Juste pour une courte explication SSLUserName SSL_CLIENT_S_DN_CN définira le nom d'utilisateur authentifié sur CommonName du certificat, par rapport à l'ensemble du sujet x509 '/ OU = Foo/CN = ...'.

18