本文介绍: nginx: [emerg] SSL_CTX_load_verify_locations(“/opt/nginx/conf/none“) failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen(‘/opt/nginx/conf/none‘,’r’) error:2006D080:BIO routines:BIO_new_file:no such file error:0B084002:x509 cert
现象:
root@sandbox:/opt/nginx/sbin# ./nginx -t
nginx: [emerg] SSL_CTX_load_verify_locations("/opt/nginx/conf/none") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/opt/nginx/conf/none','r') error:2006D080:BIO routines:BIO_new_file:no such file error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib)
nginx: configuration file /opt/nginx/conf/nginx.conf test failed
Nginx 配置文件中存在 SSL/TLS 相关的指令,并且指定了一个无效的证书文件路径。具体来说,Nginx 尝试加载 /opt/nginx/conf/none 文件作为证书文件,但该文件不存在,因此加载失败。
排查:
1、检查nginx所有conf中引用的ssl路径是否正确?/证书有效性?/文件权限?
2、上述错误提示加载ssl证书找不到 /opt/nginx/conf/none ,但是nginx配置中压根就没配置
3、匹配查找有咩有关于 none字段的配置?
发现配置启用了 proxy_ssl_verify on,那么 Nginx 将验证反向代理服务器的 SSL/TLS 证书,以确保它是由受信任的证书颁发机构(CA)签发的,并且具有正确的主机名。如果验证失败,Nginx 将拒绝连接到反向代理服务器,并返回一个 SSL/TLS 错误。
root@sandbox:/opt/nginx/sites-available# grep -rn none *
cloud/prompt-test.conf:18: proxy_ssl_trusted_certificate none; # 不使用本地 CA 证书
root@sandbox:/opt/nginx/sites-available# grep -rn verify *
cloud/prompt-test.conf:20: ssl_verify_client off;
cloud/prompt-test.conf:38: proxy_ssl_verify on;
4、详细解析此conf文件
upstream prom-node {
server 192.168.10.23:6443; #
server 192.168.10.24:6443; #
server 192.168.10.27:6443; #
keepalive 32;
}
server {
listen 443;
server_name prompt-test-apiserver.demo.com;
access_log /opt/nginx/logs/prompt-test-apiserver.log main;
error_log /opt/nginx/logs/prompt-test-apiserver.log;
ssl off;
ssl_session_timeout 5m;
ssl_prefer_server_ciphers on;
proxy_ssl_trusted_certificate none; # 不使用本地 CA 证书
proxy_ssl_session_reuse on; # 获取外部请求的 CA 证书
ssl_verify_client off;
proxy_buffering off;
add_header Vary Accept-Encoding;
client_max_body_size 128m;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Connection "";
# retry next upstream
proxy_next_upstream error timeout http_570;
limit_conn servicelimit 2000;
location / {
proxy_pass https://prom-node;
proxy_ssl_verify on;
proxy_ssl_server_name on;
proxy_ssl_name kubernetes;
}
}
配置介绍:
ssl off:禁用 SSL/TLS,因为没有在该 Nginx 配置中提供 SSL/TLS 相关设置
proxy_pass https://prom-node:将来自 https://prom-node 上游服务器的请求代理到本地的 Nginx 服务器上。
proxy_ssl_verify on:启用 SSL/TLS 验证,以确保代理请求的上游服务器使用有效的 SSL/TLS 证书。
proxy_ssl_server_name on:启用 SSL/TLS 验证时使用服务器名验证,以确保上游服务器的 SSL/TLS 证书与当前正在连接的服务器名匹配。
proxy_ssl_name kubernetes:设置 SSL/TLS 连接的服务器名为 kubernetes,这通常是为了在 SSL/TLS 握手期间验证上游服务器的 SSL/TLS 证书。
最终排查下来因为上游服务器不可用,随之ssl也无法继续提供,这个时候执行Nginx -t 时,找不到上游服务器的ssl就会从本地找,因为配置了proxy_ssl_trusted_certificate none
,所以Ngx在/opt/nginx/conf/下寻找none
处理措施:
1.关闭代理ssl验证
proxy_ssl_verify off; #设置为off或者关闭
2.下线此conf(因当前环境不用这个配置了,所以博主直接清理了)
验证:
root@sandbox:~# /opt/nginx/sbin/nginx -t
nginx: the configuration file /opt/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /opt/nginx/conf/nginx.conf test is successful
原文地址:https://blog.csdn.net/chengyinwu/article/details/131687103
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_17091.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。