SSL错误:14094418:SSL例程:SSL3_READ_BYTES:tlsv1警报未知ca:SSL警报



我正在尝试设置Nginx保留代理,该代理重定向到需要证书才能正常工作的特定主机。但当我从浏览器点击端点时,我会收到这个错误:

2020/11/05 19:55:21 [error] 6334#6334: *111317 SSL_do_handshake() 
failed (SSL: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:SSL alert n$

这是nginx配置文件:

server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /home/ubuntu/appname.com.pem;
ssl_certificate_key /home/ubuntu/appname.com.key;
server_name appname.com;
ssl_protocols TLSv1.2;
set $target_server targetapp.com:443;
location /api/ {
rewrite ^/api(/.*) $1 break;
proxy_pass https://$target_server/$uri$is_args$args;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header Host appname.com;
error_log /var/log/nginx/target_server.log debug;
proxy_set_header Accept-Encoding text/xml;
proxy_ssl_certificate /home/ubuntu/target_server_client.pem;
proxy_ssl_certificate_key /home/ubuntu/target_server_key.pem;
proxy_ssl_trusted_certificate /home/ubuntu/target_server_CA.pem;
proxy_ssl_verify off;
proxy_ssl_verify_depth 1;
proxy_ssl_server_name on;
}
}

我尝试启用/禁用proxy_ssl_server_nameproxy_ssl_verify,但两者都没有解决问题。

当我通过SSH连接到该服务器并尝试下面的curl命令时,我可以得到预期的正确响应,只有当我尝试从浏览器访问端点时:

curl -vv --cert target_server_client.pem --key target_server_key.pem  --cacert target_server_CA.pem --url https://targetapp.com/api 2>&1|less

我不确定可能是什么问题,我怀疑Nginx代理在端点中使用的是IP地址而不是主机名,这就是为什么它会出现SSL验证问题。因为它通过curl命令正确地工作。我还尝试启用proxy_ssl_server_name,但没有帮助。

问题出现在@Steffen Ullrich 提到的中间证书中

最新更新