如何解决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_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提到的中间证书中
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。