Ich benötige für eine unternehmensinterne Web-Seite sowohl einen IP-Filter als auch die Validierung des Client-TLS-Zetrifikats. Das erforderliche Verhalten soll so aussehen, dass außerhalb der erlaubten IP-Range sofort geblockt wird, d.h. in diesem Fall soll auch erst gar kein Client-TLS-Zetrifikats vom Browser angefordert werden. Kommt der Request aus der erlaubten IP-Range, dann soll das Client-TLS-Zetrifikat angefordert und validiert werden.
Erfolgreicher Zugriff also nur aus der erlaubten IP-Range und mit gültigem Client-TLS-Zetrifikat.
Der IP-Filter war bisher wie folgt realisiert und das funktioniert auch wie gewünscht:
- Code: Select all
Order deny,allow
Deny from all
Allow <erlaubte IP-Adressen>
Nun weist mein Kollege aber zurecht darauf hin, dass diese Syntax seit Apache 2.4 veraltet ("deprecated") ist und womöglich bald nicht mehr unterstützt wird.
Also haben wir auf folgende "neue" Syntax umgestellt:
- Code: Select all
Require all denied
Allow <erlaubte IP-Adressen>
Das Ergebnis ist leider, dass nun zwar weiterhin die Zugriffe auf die gewünschte IP-Range begrenzt sind, aber die Prüfung der Client-IP erfolgt offenbar erst nach der Validierung des Client-Zertifikats!
Der Benutzer wird nun also immer aufgefordert sein Client-TLS-Zetrifikat zu übermitteln, egal ob er in der erlaubten IP-Range ist oder nicht.
Erst nach der (scheinbar erfolgreichen) Übermittlung des Client-TLS-Zetrifikats kommt dann ggf. die "Forbidden" Fehlerseite, weil erst dann der IP-Filter zu greifen scheint. Das ist natürlich für den Benutzer höchst verwirrend
Gibt es eine Möglichkeit, das "alte" (gewünschte) Verhalten des Apache mit der "neuen" Syntax nachzubauen? Ich finde leider keine Möglichkeit die Reihenfolge der Prüfung zu beeinflussen...
Für Hinweise wäre ich sehr dankbar!