2009-12-14 5 views
59

Ich stelle SSL-Seiten auf meinem Webserver zur Verfügung, und ich habe eine Frage. Was ist der Unterschied zwischen SSLCACertificateFile und SSLCertificateChainFile?Unterschied zwischen SSLCACertificateFile und SSLCertificateChainFile

Wenn ich SSLCertificateChainFile verwende, habe ich Warnungen von japanischen Handy-Browser, aber wenn ich PC-Browser (wie IE, FF) verwenden, gab es kein Problem. Auf der anderen Seite verursachte SSLCACertificateFile kein Problem für beide Browser.

Gibt es einen Unterschied, wenn Browser mit Apache verbunden sind?

+0

das ist zu einfach Die Root-Sig ist nicht im Stammspeicher des Mobiltelefons, das gemeinsame –

Antwort

59

SSLCertificateChainFile war eine korrekte Option zu wählen, aber diese Anweisung wurde obsolete as of Apache 2.4.8. Diese Anweisung führte dazu, 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 zudem die Verwendung des cert in Frage Client Zertifikate zu unterzeichnen. Diese Art der Authentifizierung ist ziemlich selten (zumindest für den Moment), und wenn Sie sie nicht verwenden, gibt es für IMHO keinen Grund, ihre Funktionalität zu erweitern, indem Sie CACert anstelle von Chain verwenden. 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.

Unnötig zu sagen, wenn Sie den Cert-Anbieter fragen, werden sie immer auf CACert over Chain drängen, da es ihnen eine andere Sache gibt (Client certs), dass sie Sie potenziell auf der ganzen Linie verkaufen können. ;)

+0

ist Eine andere Sache zu prüfen, ist eigentlich der Algorithmus. "Aber Vorsicht: Die Angabe der Zertifikatskette funktioniert nur, wenn Sie ein einzelnes (entweder RSA oder DSA) basiertes Serverzertifikat verwenden. Wenn Sie ein gekoppeltes RSA + DSA-Zertifikatpaar verwenden, funktioniert dies nur, wenn beide Zertifikate dasselbe verwenden Zertifikatskette. Andernfalls sind die Browser in dieser Situation verwirrt. " ---- http: //httpd.apache.org/docs/2.0/mod/mod_ssl.html#sslcertificatechainfile – Eddie

+0

@Eddie Korrekt, obwohl ich glaube, es ist wichtig zu erwähnen, dass dies beide Optionen gleichermaßen betrifft. Auch ist es wahrscheinlich wert, darauf hinzuweisen, dass DSA-Zertifikate (glücklicherweise) verschwindend selten sind. – BMDan

17

Eigentlich können beide gültige Optionen sein.

Verwenden SSLCertificateChainFile Ihr Zertifikat publish mit öffentlichen Zertifizierungsstelle (VeriSign, RapidSSL, etc.) unterzeichnet

Verwenden SSLCACertificateFile Ihre ‚private‘ CA zur Verfügung zu stellen, dass Client-Zertifikate ausstellen kann, dass Sie einige ausgewählte verteilen Benutzer. Diese client Zertifikate eignen sich hervorragend für die Authentifizierung (im Vergleich zur grundlegenden Passwortauthentifizierung) und müssen normalerweise nicht von einer öffentlichen Zertifizierungsstelle verteilt werden (Sie können also etwas Geld sparen).

Also, wenn Sie eine sichere Autorisierung zu einem gewissen Teil Ihrer Website hinzufügen wollen, dies tun:

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

    SSLOptions +StrictRequire 
    SSLUserName SSL_CLIENT_S_DN_CN 
    SSLRequireSSL 
</Directory> 

Nur für kurze Erklärung SSLUserName SSL_CLIENT_S_DN_CN wird die authentifizierte Benutzernamen Zertifikat des Commonname, im Vergleich zu den gesamten x509 gesetzt '/ OU = Foo/CN = ...' Thema.