NGINX客户端验证:注册一个自我分配的根ca
问题描述:
我目前正在开发测试env,在IIS和NGINX之间建立SSL握手。 NGINX运行在一个操作系统Linux Beaglebone上。NGINX客户端验证:注册一个自我分配的根ca
我使用自我分配的根/中间/服务器证书,因为我不在prod中,而且我遇到了问题。
继在配置文件中:
server {
# SSL configuration
#
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_client_certificate intermediate.crt;
ssl_verify_client optional_no_ca;
error_log /etc/nginx/info.log info;
如上CONF文件,该ssl_verify_client
是optional_no_ca
。这里,握手起作用。当我将ssl_verify_client
更改为optional
时。握手失败。
我也尝试安装的自签名根证书和自签名的中间根证书链在Linux操作系统Beaglebone如下:
Copy your CA to dir /usr/local/share/ca-certificates/
Use command: sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
Update the CA store: sudo update-ca-certificates
不过握手还是失败了。
感谢您阅读我的文章。
答
optional
标志尝试验证客户端证书。如果您的客户端证书由中间CA签署,则nginx
需要根证书和中间证书来验证它。
您应该将根证书和中间证书连接成一个文件,并通过ssl_client_certificate
指令使其可用。详情请参阅this document。
我曾试过链式证书。所以现在我的conf文件如下:'server {listen 443 ssl default_server; listen [::]:443 ssl default_server; ssl_certificate server.crt; ssl_certificate_key server.key; ssl_client_certificate intermediate-certificateAuthority-chain.crt; ssl_verify_client可选;'我仍然有同样的问题。 – austin