首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nginx SSL auth窗帘客户端证书

Nginx SSL auth窗帘客户端证书
EN

Server Fault用户
提问于 2021-05-17 14:32:13
回答 1查看 497关注 0票数 1

我在Nginx上使用了TLS身份验证,配置如下。所有具有有效客户端证书的请求将在Nginx终止,请求将被转发到后端应用程序。

代码语言:javascript
运行
复制
    upstream app {
        server app:8080;
    }

    server {
        listen                 443 ssl;
        server_name            localhost;
        ssl_certificate        /etc/ssl/cert_example_com.crt;
        ssl_certificate_key    /etc/ssl/cert_example_com.key;
        ssl_client_certificate /etc/ssl/ca.crt;
        ssl_protocols          TLSv1.2 TLSv1.3;
        ssl_ciphers            HIGH:!aNULL:!MD5;
        ssl_verify_client      on;

        location / {
                proxy_pass         http://app;
                proxy_set_header   X-Forwarded-For $remote_addr;
                proxy_http_version 1.1;
                proxy_set_header   Upgrade $http_upgrade;
                proxy_set_header   Connection 'upgrade';
                proxy_set_header   Host $host;
                proxy_cache_bypass $http_upgrade;
        }
    }

使用此配置,我希望Nginx只对某些客户端证书进行身份验证。这是因为我使用私有RootCA来生成A类型证书和B类型证书。A类证书与用于auth的MQTT一起使用,B类证书用于Nginx (HTTPS)身份验证。

MQTT的客户端证书(类型A)对于每个客户端.example.com都是唯一的。Nginx的客户端证书(B类型)将具有名称(DN) base.example.com &证书将在多个客户端之间共享。同样,同一名称(DN) base.example.com和不同证书ID的B类型证书一次活动的数量有限。

在这个问题上有什么帮助我怎么能做到这一点?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-05-17 17:30:49

所有证书都将被验证,但仍然可以通过检查客户端证书的DN来拒绝来自连接的请求。

例如:

代码语言:javascript
运行
复制
server {
    if ($ssl_client_s_dn !~ \bbase\.example\.com\b) { return 403; }
    ...
}
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1063842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档