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_clientoptional_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

+0

我曾试过链式证书。所以现在我的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