Zugriffskontrolle mit .htaccess

Status
Für weitere Antworten geschlossen.

Wolfman_II

Benutzer
Mitglied seit
14. Apr 2009
Beiträge
98
Punkte für Reaktionen
2
Punkte
8
Hallo miteinander, ich hätte mal eine Frage an die .htaccess Profis unter euch.

Folgende Ausgangssituation:

Ich betreibe eine Website auf der DS. 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 aufzurufen.

Bei meinen Recherchen im Internet bin ich über die <IfDefine SSL> Direktive gestolpert, die man auch in einer .htaccess Datei verwenden kann. Die momentane .htaccess Datei mit der ich dies versuche sieht folgendermaßen aus:

Rich (BBCode):
<IfDefine !SSL> 
order deny,allow
deny from all
allow from 192.168.178
</IfDefine>

<IfDefine SSL>
SSLOptions +StrictRequire
SSLVerifyClient require
SSLVerifyDepth  10
SSLRequireSSL
SSLRequire %{SSL_CLIENT_S_DN_CN} eq "xxxxxx" \
        or %{SSL_CLIENT_S_DN_CN} > "yyyyyy" 
</IfDefine>

Wenn ich über das Internet mittels https://domain/Seite auf meine Seite zugreife wird auch der SSL-Teil korrekt ausgeführt und es wird vom Server das Client Zertifikat verlangt und geprüft. Ist das Zertifikat vorhanden und gültig wird die Seite angezeigt; andernfalls kommt eine Fehlermeldung. Soweit so gut.
Wenn ich nun aber über das LAN mittels http://IP_der_DS/Seite auf meine Seite zugreife kommt eine Synology Fehlerseite, dass die Seite leider nicht gefunden werden konnte. Hier ist entweder ein Fehler im Code oder die Direktive <IfDefine !SSL> wird nicht ausgeführt, was mir aber schleierhaft wäre, weil der SSL Teil ja funktioniert. Selbst wenn ich alles auskommentiere und nur die Befehle order, deny und allow stehen lasse kommt die Fehlermeldung. Wenn ich die ganze .htaccess Datei umbenenne wird die Seite natürlich tadellos angezeigt; dann ist sie aber natürlich auch via https offen und das soll nicht sein.

Kann mir hier jemand helfen?
 

Wolfman_II

Benutzer
Mitglied seit
14. Apr 2009
Beiträge
98
Punkte für Reaktionen
2
Punkte
8
Hat keiner eine Idee zu dem Problem oder kann mir einen alternativen Tip geben, wie ich in einer .htaccess Datei checken kann, ob ein Besucher per SSL oder unverschlüsselt auf den Server kommt?
 

Wolfman_II

Benutzer
Mitglied seit
14. Apr 2009
Beiträge
98
Punkte für Reaktionen
2
Punkte
8
Also zwischenzeitlich weiß ich, dass die Idee mit der IfDefine-Direktive falsch war und diese für meine Zwecke nicht verwendet werden kann. :(

Nun hat mich jemand auf eine Kombinationsprüfung aus der Apache-Dokumentation aufmerksam gemacht 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:

Rich (BBCode):
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?

Gruß
Wolfgang
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat