如何在 Nginx 中允许特定的 SSL 客户端证书?

Joe*_*ite 5 ssl nginx ssl-certificate

Nginx 的ssl_client_certificatessl_trusted_certificate指令可用于允许给定机构签署客户端证书。但我怎样才能允许特定的证书呢?我想按证书指纹进行过滤,或者按证书颁发机构+客户端证书序列号进行过滤。

Ric*_*ith 6

$ssl_client_fingerprintNginx 可以访问和中的客户端证书指纹和序列号$ssl_client_serial,以及 中的颁发者的 DN $ssl_client_i_dn。看此文档

您可以使用以下方法过滤指纹map

例如:

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

请参阅此文档了解详细信息以及使用if.