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