14

私たちのサイトはApacheで実行されており、クライアント証明書を使用して保護されています. これまでのところ、サイト全体へのアクセスを提供する証明書は 1 つしかありませんでした。ここで、jira 以外にアクセスできない新しいユーザー グループに jira を公開する必要があります。そのグループ用に別の証明書を作成し、SSLRequire と Location/LocationMatch の組み合わせを使用してそれらを区別することを計画しています。

したがって、基準は次のとおりです。

  1. 古い証明書を持つユーザーは完全なサイトにアクセスできます
  2. 新しい証明書を持つユーザーは /jira URL パターンにのみアクセスできます

私はいくつかの組み合わせを試しましたが、LocationMatch の否定を得ることができませんでした。どんな助けでも大歓迎です。

httpd.conf ファイルは次のようになります。

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>
4

5 に答える 5

13

負の正規表現は apache 2.2 ではサポートされていません

https://issues.apache.org/bugzilla/show_bug.cgi?id=10932を参照してください。

最新のApacheバージョンで修正されたかどうかはわかりません。

回避策として、次を使用します。

<LocationMatch "/[^s][^t][^a][^t][^i][^c]">
</LocationMatch>

また

<LocationMatch "^/(?!static)">
</LocationMatch>
于 2010-08-24T18:53:29.007 に答える
4

これを試してください:(ヒントをくれたMilosに感謝します)

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>
于 2011-11-15T01:23:08.997 に答える
4

これは便利なもので、すべての隠しファイル/ディレクトリを非表示にし (.git、.htaccess などを保護)、/.well-known/ へのアクセスを許可します。任意の apache 2.4 仮想ホストに、または直接取り付けることができます。 apache2.conf で

これが必要で、既成の解決策が見つからなかったので、ここにあります。それが役に立てば幸い。

<LocationMatch "^/(?!\.well-known/)">
    RedirectMatch 404 ^(.*/)?\.
</LocationMatch>
于 2018-03-20T16:56:26.947 に答える
2

Apache2 は perl5 RE 構文をサポートする pcre を使用します。これは、 http://perldoc.perl.org/perlre.html#Extended-Patternsで説明されているように、否定先読みを使用して可能です。

于 2009-10-27T02:37:43.697 に答える
1

正規表現を正しくすることが問題でした。次の正規表現を使用した LocationMatch ディレクティブは正常に機能しました。

SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile /etc/apache2/ssl/myca.crt

<Location /jira> 
   SSLRequire   %{SSL_CLIENT_S_DN_CN} in {"AllUsers", "JiraUsers"}
</Location> 

<LocationMatch ^/[a-ik-zA-IK-Z]> 
   SSLRequire   %{SSL_CLIENT_S_DN_CN} eq "AllUsers"
</LocationMatch>
于 2009-01-12T20:10:16.163 に答える