So schließen Sie einige Pfade/Seiten von der Client-Zertifizierung in Apache 2 aus

So schließen Sie einige Pfade/Seiten von der Client-Zertifizierung in Apache 2 aus

Ich versuche, einen Apache-Server mit aktivierter Client-Zertifizierung einzurichten. Damit können die Kunden mit einem gültigen Client-Zertifikat auf den Inhalt zugreifen.

Nehmen wir an, ich habe den Server als

https://myserver/myservice/

Außerdem muss ich meinen Kunden eine Schnittstelle zur Verfügung stellen, über die sie ihre Client-Zertifikate erhalten können, indem ich ihnen einige Authentifizierungsinformationen zur Verfügung stelle.

https://myserver/myservice/register

Sobald die Upload-Informationen überprüft wurden, wird ein Client-Zertifikat zurückgegeben.

Wenn ich das richtig verstehe, sollte dieser Pfad vom Client-Zertifizierungsmechanismus ausgeschlossen werden, einfach weil er zum Generieren von Zertifikaten verwendet wird. Die Frage ist also, wie kann ich die httpd-Konfiguration angeben, um dies zu erreichen?

Meine aktuelle Konfiguration sieht so aus:

ProxyPass /myservice/register http://localhost:4444/register

<Virtualhost *:443>
    ServerName myserver
    DocumentRoot /path/to/my/server/root
    ProxyPass /myservice/ ajp://localhost:8009/myservice/
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCertificateFile /path/to/server.cert
    SSLCertificateKeyFile /path/to/server.key
    ...
    SSLVerifyClient require
    SSLVerifyDepth 10
    SSLCACertificateFile /path/to/ca.buddle.pem
</Virtualhost>

Mit dieser Konfiguration kann ich das Client-Zertifikat von

http://myserver/myservice/register

dann greife ich darüber auf den Dienst zu. Allerdings habe ich es nicht geschafft, es auf https umzustellen, damit ich den Port 80 schließen kann.

Antwort1

Jetzt habe ich die Lösung, indem ich einfach oder verwende, um den Ziel-URL-Pfad auszuschließen.

<Virtualhost *:443>
    ServerName myserver
    DocumentRoot /path/to/my/server/root
    ProxyPass /myservice/register http://localhost:4444/register
    ProxyPass /myservice/ ajp://localhost:8009/myservice/
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCertificateFile /path/to/server.cert
    SSLCertificateKeyFile /path/to/server.key
    ...
    SSLVerifyClient require
    SSLVerifyDepth 10
    SSLCACertificateFile /path/to/ca.buddle.pem

    <LocationMatch ^/myservice/register$>
        SSLVerifyClient none
    </LocationMatch>

</Virtualhost>

verwandte Informationen