SSL error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:SSL alert
SSL error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:SSL alert
我正在尝试设置 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(/.*) 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;
}
}
我尝试 enable/disable proxy_ssl_server_name
和 proxy_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 提到的问题出在中间证书中
我正在尝试设置 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(/.*) 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;
}
}
我尝试 enable/disable proxy_ssl_server_name
和 proxy_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 提到的问题出在中间证书中