Hallo zusammen, ich habe hier ein kniffliges Problem bei dem ich bislang weder mit Suchen im Internet, noch in diversen Foren weitergekommen bin. Eigentlich geht es "nur" um den Schutz eines Verzeichnisses mittels .htaccess

Folgende Ausgangssituation:

Ich betreibe eine Website auf meinem eigenen Server. Installiert ist ein Apache 2.2.22; die Module mod_ssl und OpenSSL sind ebenfalls installiert. Der Zugriff über das Internet erfolgt ausschließlich über https. Im Router ist hierfür der Port 443 freigeschaltet. Um auf eine bestimmte Seite zugreifen zu können habe ich in einer .htaccess Datei eine SSL Client Authentifizierung eingerichtet. Dies funktioniert auch alles völlig problemlos.

Nun möchte ich aber zusätzlich folgendes erreichen:
Um aus dem LAN auf die selbe Seite zugreifen zu können, möchte ich keine SSL Client Authentifizierung durchführen. Hier soll jeder Client aus einem bestimmten Subnetz berechtigt sein die Seite mittels HTTP aufzurufen.

Es gibt Apache Konfiguartionen sowohl für den Zugriff mittels HTTPS, als auch für HTTP.

Nun gibt es in der Apache-Dokumentation eine Kombinationsprüfung, die (so wie ich das verstehe) genau das umsetzt was ich vorhabe und ich habe versucht diese in eine .htaccess Datei umzubauen. Leider mit mäßigem Erfolg.

So wie ich die Doku verstehe kann man hier unterschiedliche Prüfungskriterien definieren, die dann entweder jeweils einzeln (Satisfy any) oder alle zusammen (Statisfy all) zutreffen müssen, damit der Zugriff gestattet wird. Eigentlich entspricht das ganz exakt dem was ich vorhabe.

Ich habe mir aus dem Beispiel nun eine .htaccess Datei gebastelt, wobei ich das FakeBasicAuth aus der Doku weggelassen habe, da ich ja gerade keine Passwortabfrage generieren möchte, sondern eine reine Client-Zertifikats-Auth.

Meine .htaccess sieht nun so aus:


Code:
SSLOptions +StrictRequire
SSLVerifyClient optional
SSLVerifyDepth  5
SSLRequire %{SSL_CLIENT_S_DN_CN} eq "xxxxx" \
        or %{SSL_CLIENT_S_DN_CN} > "yyyyy" 

Order deny,allow
Deny from all
Allow from 192.168.178.0/24

Satisfy any
Leider funktioniert das nicht so wie in der Doku beschrieben.

Wenn ich nun aus dem LAN heraus per http auf die Webseite zugreife, wird mir diese einwandfrei angezeigt.
Wenn ich aus dem Internet per https auf die Webseite zugreife, wird mir eine Fehlerseite angezeigt, dass die Seite nicht gefunden werden konnte. Wenn ich allerdings die Order, Deny, Allow und Satisfy Anweisung auskommentiere und dann nochmal per https aus dem Internet die Seite aufrufe, wird, so wie es sein soll, nach dem Zertifikat gefragt und danach die Seite korrekt angezeigt.
Scheinbar funktioniert hier die Satisfy Prüfung irgendwie nicht.

Hab ich etwas übersehen oder muss in den Apache-Conf Dateien etwas besonderes eingestellt werden, damit die Satisfy Prüfung überhaupt stattfindet?

Ich hoffe, ich habe mich jetzt nicht zu verwirrend ausgedrückt.