Mithilfe der negation in LocationMatch Richtlinie
Unsere site läuft auf apache und gesichert ist die Verwendung von client-Zertifikaten. Bisher gab es nur ein Zertifikat, das den Zugriff auf die gesamte Website. Nun, wir haben eine Anforderung zum aussetzen jira zu einer neuen Gruppe von Benutzern, die sollten keinen Zugriff auf irgendetwas anderes, aber jira. Ich erstellt ein separates Zertifikat für die Gruppe und die Planung, um diese zu unterscheiden, indem Sie mit SSLRequire und Lage/LocationMatch Kombination.
Also die Kriterien:
- Benutzer mit dem alten Zertifikat
Zugriff auf vollständige site - Benutzer mit dem neuen Zertifikat können nur Zugangs - /jira-URL-Muster
Ich habe versucht, einige Kombination aber nicht in der Lage, die negation für LocationMatch Arbeit. Jede Hilfe würde geschätzt werden.
Den httpd.conf-Datei sieht wie folgt aus:
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile /etc/apache2/ssl/myca.crt
<Location /jira>
SSLRequire %{SSL_CLIENT_S_DN_CN} in {"AllUsers", "JiraUsers"}
</Location>
<LocationMatch /!(jira)>
SSLRequire %{SSL_CLIENT_S_DN_CN} eq "AllUsers"
</LocationMatch>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Negative regexes sind nicht unterstützt in apache 2.2
Sehen https://issues.apache.org/bugzilla/show_bug.cgi?id=10932
Ich weiß nicht, ob es wurde behoben in der letzten apache-version.
Als workaround verwenden :
oder
try this one : (danke Milos für den Tipp)
Apache2 verwendet pcre unterstützt perl5-RE-syntax und dies ist möglich mit negativen look-ahead-wie beschrieben-auf http://perldoc.perl.org/perlre.html#Extended-Patterns.
Dies könnte ein handy haben, machen Sie unsichtbar versteckte Datei/Verzeichnis (zu schützen .git, .htaccess, etc...) und immer noch erlauben, den Zugriff auf /.bekannt/
Eingebaut werden kann Sie in jedem apache 2.4 virtualhost oder direkt in der apache2.conf
Als brauchte ich diese und konnte Sie nicht finden, eine fertige Lösung, hier ist es.
Hoffe, es hilft.
War es eine Frage der regex richtig. Die LocationMatch-Direktive mit der folgenden regex funktioniert gut.