it-swarm.com.de

Unterschied zwischen SSLCACertificateFile und SSLCertificateChainFile

Ich stelle SSL-Seiten auf meinem Webserver bereit und habe eine Frage. Was ist der Unterschied zwischen SSLCACertificateFile und SSLCertificateChainFile?

Wenn ich SSLCertificateChainFile verwende, werden Warnungen vom japanischen Browser für Mobiltelefone ausgegeben. Wenn ich jedoch einen PC-Browser verwende (z. B. IE, FF), ist dies kein Problem. Andererseits verursachte SSLCACertificateFile für beide Browser keine Probleme.

Gibt es einen Unterschied, wenn Browser eine Verbindung zu Apache herstellen?

71
nam

SSLCertificateChainFile war eine richtige Option, aber diese Anweisung wurde veraltet ab Apache 2.4.8 . Diese Anweisung hat dazu geführt, dass die aufgelistete Datei zusammen mit dem Zertifikat an alle Clients gesendet wurde, die eine Verbindung herstellen.

SSLCACertificateFile (im Folgenden "CACert") ersetzt SSLCertificateChainFile (im Folgenden "Chain") und ermöglicht außerdem die Verwendung des fraglichen Zertifikats zum Signieren des Clients Zertifikate. Diese Art der Authentifizierung ist (zumindest im Moment) recht selten und wenn Sie sie nicht verwenden, gibt es IMHO keinen Grund, ihre Funktionalität durch die Verwendung von CACert anstelle von Chain zu erweitern. Auf der anderen Seite könnte man argumentieren, dass die zusätzliche Funktionalität keinen Schaden anrichtet und CACert alle Fälle abdeckt. Beide Argumente sind gültig.

Es erübrigt sich zu erwähnen, dass sie bei Fragen an den Zertifizierungsanbieter immer auf CACert over Chain drängen, da sie dadurch eine andere Sache (Client-Zertifikate) erhalten, die sie möglicherweise später verkaufen können. ;)

70
BMDan

Tatsächlich können beide Optionen gültig sein.

Verwenden Sie SSLCertificateChainFile, um Ihr von einer öffentlichen Zertifizierungsstelle (VeriSign, RapidSSL usw.) signiertes Zertifikat zu veröffentlichen.

Verwenden Sie SSLCACertificateFile, um Ihre "private" Zertifizierungsstelle bereitzustellen, die Client-Zertifikate ausstellen kann, die Sie an einige ausgewählte Benutzer verteilen können. Diese client -Zertifikate eignen sich hervorragend für die Authentifizierung (im Vergleich zur grundlegenden Kennwortauthentifizierung) und müssen normalerweise nicht von einer öffentlichen Zertifizierungsstelle verteilt werden (daher können Sie Geld sparen).

Wenn Sie also einem Teil Ihrer Website eine sichere Autorisierung hinzufügen möchten, gehen Sie folgendermaßen vor:

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

  SSLOptions +StrictRequire
  SSLUserName SSL_CLIENT_S_DN_CN
  SSLRequireSSL
</Directory>

Nur zur kurzen Erklärung SSLUserName SSL_CLIENT_S_DN_CN setzt den authentifizierten Benutzernamen auf CommonName des Zertifikats im Vergleich zum gesamten Betreff x509 '/ OU = Foo/CN = ...'.

18