web-dev-qa-db-ja.com

Nginxで特定のSSLクライアント証明書を許可するにはどうすればよいですか?

Nginxのssl_client_certificateおよびssl_trusted_certificateディレクティブを使用して、特定の機関によって署名されたクライアント証明書を許可できます。しかし、どうすれば特定の証明書を許可できますか?証明書のフィンガープリントでフィルタリングするか、認証局+クライアント証明書のシリアル番号でフィルタリングしたいと思います。

2
JoeWhite

Nginxは、$ssl_client_fingerprint$ssl_client_serialのクライアント証明書のフィンガープリントとシリアル番号、および$ssl_client_i_dnの発行者のDNにアクセスできます。詳細については、 このドキュメント を参照してください。

mapを使用して指紋をフィルタリングできます。

例えば:

map $ssl_client_fingerprint $reject {
    default 1;
    87654321abcdef9876543210fedcba123456789a 0;
    fe8765432176543210fedcba12345678abcdef98 0;
}
server {
    ...
    if ($reject) { return 403; }
    ...
}

詳細については このドキュメント を、ifの使用については この注意 を参照してください。

2
Richard Smith