質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Q&A

解決済

1回答

1821閲覧

特定のクライアント証明書を持つユーザーのアクセスを制限したい

lifeguard

総合スコア16

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

0グッド

1クリップ

投稿2019/05/28 06:22

前提・実現したいこと

Windows環境にnginxをインストールしてアクセス制限の実験を行っています。
クライアント証明書(testX)を持つユーザーからのアクセスは許可し、特定のクライアント証明書(test1)を持つユーザーのアクセスを制限したいと思っております。

発生している問題・エラーメッセージ

本来アクセスを弾くべきのクライアント証明書(test1)を持つユーザーもアクセスが出来てしまっております。

該当のソースコード

nginx.conf

1server{ 2 if($ssl_client_s_dn = "CN=test1@xxx.com"){ 3 return 403; 4 } 5 if($client_client_s_dn !~ "CN=test.*@xxx.com"){ 6 return 403; 7 } 8}

試したこと

ググったところ、nginxのif文は特殊な動きをするとの記載があったので、下記の通り書き換えて実行してみましたが、結果は変わりませんでした。

nginx.conf

1server{ 2 set $test1 0; 3 set $test2 0; 4 if($ssl_client_s_dn = "CN=test1@xxx.com"){ 5 set $test1 1; 6 } 7 if($client_client_s_dn !~ "CN=test.*@xxx.com"){ 8 set $test2 1; 9 } 10 if($test1){ 11 return 403; 12 } 13 if($test2){ 14 return 403; 15 } 16}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

$ssl_client_s_dn の値が、おそらく、CN=test1@xxx.com,O=example.com,C=JP のように、OU=, O=, ST, C=JP などが含まれていて、= (完全一致) でマッチしないのではないでしょうか。
$ssl_client_s_dn をログに出力するなどして確認するといいと思います。

あるいは、ssl_crl で revoke すると確実かと思います。

投稿2019/05/28 11:45

編集2019/05/28 23:30
TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lifeguard

2019/05/29 07:44

ご回答ありがとうございます。 CN部分の中身に問題がありそうだというヒントを頂けたので、$ssl_client_s_dnをログ出力して確認を行ってみます。
lifeguard

2019/05/29 08:21 編集

TaichiYanagiyaさんのおっしゃる通り、CN部分に問題がありました。 2行目を下記の通り書き換えることで、期待動作通りの挙動となることが確認できました。 if($ssl_client_s_dn ~ "CN=test1@xxx.com") 実際のCNの中身についてはこれから確認しますが、TaichiYanagiyaさんのヒントのおかげで期待動作通りの挙動となりましたので、本件はこれにてCloseとさせてください。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問