Apache httpd: Wie Vertrauen spezifischen client-Zertifikate?
Wie kann ich die Konfiguration des Apache-httpd Vertrauen spezifischen client-Zertifikate?
Brauchen wir beschränken den Zugriff auf einen webservice zu einem bestimmten (bekannten) Partners-Server.
Geplant ist die Verwendung einer CA-basierten Lösung für dieses (eine Vertrauenswürdige ZERTIFIZIERUNGSSTELLE, die würden nur Zeichen vertrauenswürdig CSRs, wie wir angenommen haben); aber unsere Firma CA erstellt Zertifikate für externe Unternehmen.
Um die gesicherte Verbindung immer, bis die erforderlichen PKI ist bereit, wir wollten Sie bestimmte client-Zertifikate als vertrauenswürdig an unserem Apache-httpd-proxy.
Aber httpd nicht akzeptiert, verbindungen von clients, die versuchen, eine Verbindung mit dem client-Zertifikat, das Hinzugefügt wurde, um die CACertificateFile (verkettet, x509-Zertifikate, codiert in Base64-und DER-format(PEM)), konfiguriert für den virtuellen host.
Des client-Zertifikats ist in diesem Fall nicht ein selbst-signiertes Zertifikat.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Konfigurieren Sie die CA-Zertifikate, die Sie Vertrauen über
SSLCACertificateFile
oderSSLCACertificatePath
und verwendenSSLVerifyClient
(optional
oderrequired
, nichtoptional_no_ca
, die nicht durchführen jegliche Authentifizierung), um die server-Anfrage eines client-Zertifikats.Wenn Sie
SSLVerifyClient
direkt in IhremVirtualHost
Abschnitt, das client-Zertifikat gesendet werden, während der handshake. Wenn du es innerhalb einerDirectory
/.htaccess
, das client-Zertifikat neu ausgehandelt werden.Ist es einfacher zu Debuggen, wenn das Zertifikat gesendet wird, wird der handshake, da das client-Zertifikat selbst wird nicht verschlüsselt. Sie sollten in der Lage sein, es zu sehen, durch den Blick auf den Verkehr mit Wireshark (in der
Certificate
Nachricht, die vom client gesendet). Beim Debuggen, lohnt es sich, zu prüfen, dass einCertificate Request
Nachricht wird vom server gesendet, und sucht auf seiner Zertifizierungsstellen Liste.Eine typische Ursache des Problems, wäre ein client, der nicht anerkennt, dass die Liste oder ein client, der sendet nicht seine intermediate-CA-Zertifikate in der Kette, wenn nötig.
Wenn Sie dann wollen, ermächtigen, bestimmte Zertifikate genauer gesagt, können Sie überprüfen Sie die variable SSL-Variablen (z.B.
SSL_CLIENT_S_DN_*
) und verwenden Sie es in einemSSLRequire
Richtlinie (siehe Beispiel)..htaccess
?