【发布时间】:2013-12-02 06:50:12
【问题描述】:
我有一个自签名根证书和一个由该根签名的中间证书。基本上是这样的:
.
└── master (CA)
└── servant1 (CA)
我有一些来自master->servant1 证书链的客户端证书:
.
└── master (CA)
└── servant1 (CA)
├── client1
├── client2
└── client3
我正在寻找在 nginx 中对这些客户端证书进行身份验证,但我在这样做时遇到了很多麻烦。
这是我的 nginx 配置:
upstream luci {
server localhost:8080;
}
server {
listen 127.0.0.1:80;
server_name myserver;
return 301 https://$host$request_uri;
}
server {
listen 127.0.0.1:443;
server_name myserver;
ssl on;
ssl_certificate /etc/nginx/certs/myserver.crt;
ssl_certificate_key /etc/nginx/certs/myserver.key;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2 TLSv1.1;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AES:!ECDH+3DES:!DH+3DES:!RSA+3DES:!aNULL:!MD5:!DSS;
ssl_client_certificate /etc/nginx/certs/servant1-ca-chain.crt;
ssl_verify_client on;
ssl_verify_depth 2;
location / {
proxy_pass http://luci;
}
}
这应该很简单。所有由中间servant1 CA 签名的客户端证书都应该被允许连接到 nginx。
但是,当我尝试使用这些客户端证书访问服务器时,我得到了这个:
(显然是一个非常详细且有用的错误)
我在我的日志中找到了这个:
2013/12/01 22:46:18 [alert] 7478#0: *5 ignoring stale global SSL error (SSL: error:0407006A:lib(4):func(112):reason(106) error:04067072:lib(4):func(103):reason(114) error:0D0C5006:lib(13):func(197):reason(6)) while reading client request line, client: 192.168.1.208, server: myserver
这里有用的信息是:
忽略过时的全局 SSL 错误
出了什么问题,我该如何解决?
【问题讨论】: