Ich habe einen Apache-Webserver mit SSL, der ein von einer vertrauenswürdigen offiziellen Zertifizierungsstelle signiertes Serverzertifikat besitzt. Kann ich Apache SSL so konfigurieren, dass es Clients mit gültigen Zertifikaten akzeptiert, die von anderen Zertifizierungsstellen als der Zertifizierungsstelle signiert wurden, die das Serverzertifikat signiert hat?
Ich erhalte eine , ssl_error_unknown_ca_alert
obwohl ich andere CAs in Apache konfiguriert habe und der Server ohne Fehler gestartet ist. Ich habe eine Datei erstellt, die das CA-Zertifikat der CA enthält, die das Serverzertifikat signiert hat, und die Zertifikate der anderen CAs der CAs, denen ich vertrauen möchte. Dann habe ich die SSLCertificateChainFile
Direktive auf diese Datei gerichtet.
Ich verwende Apache 2.2.22
Bearbeiten:
Ich verwende
SSLCertificateFile
den Verweis auf das Serverzertifikat
SSLCertificateKeyFile
, den Verweis auf den Serverschlüssel,
SSLCertificateChainFile
den Verweis auf die Zertifikatskette, die das Serverzertifikat signiert hat,
SSLCACertificateFile
den Verweis auf eine Datei mit allen Zertifikatsketten, die ich akzeptieren möchte
SSLVerifyClient require
SSLVerifyDepth 1
Apache erkennt sie alle im Protokoll, wenn ich den Server neu starte, und es gibt keine Fehler. Trotzdem bekomme ich einen ssl_error_certificate_unknown_alert
Fehler. Ich habe auch überprüft, dass die Client-Zertifikatkette im SSLCACertificateFile
Textvergleich in Meld vorhanden ist.
Antwort1
Habe herausgefunden, wo das Problem liegt. Das Zertifikat ist von einer Kette aus 3 CAs signiert und ich habe SSLVerifyDepth auf 1 gesetzt. Auf 10 gesetzt und es hat funktioniert.
Antwort2
Ich glaube, Sie möchten ein Verzeichnis mit den Zertifikaten, die Sie verwenden möchten. Möglicherweise müssen Sie SSL-Magie anwenden, um die symbolischen Links für die Zertifikate zu erstellen. Siehemod_ssl SSLCACertificatePath Richtige Verwendung oder Was ist der beste Weg, um mehrere akzeptable Client-Zertifikat-CAs zu handhabenfür die erforderlichen Befehle.