部署的开源chatgpt\nodejs应用,今天使用时候发送消息一直返回域名的ssl验证错误 UNABLE_TO_VERIFY_LEAF_SIGNATURE
应用1: https://github.com/Chanzhaoyu/chatgpt-web
应用2: https://github.com/Yidadaa/ChatGPT-Next-Web
node版本: v16.18
错误截图
我使用的是acme.sh申请的免费证书,浏览器访问此域名,ssl验证也是没问题的,如果使用curl跳过ssl检测直接提交请求也正常
排查原因:应用之前都是好的,且没有修改代码,但是修改过代理域名地址(用curl直接请求成功,说明代理是可以用的)
1、ssl证书: 使用的zerossl颁发的免费证书,更换为Let's Encrypt颁发的证书,还是同样的错误【如果使用云厂商签发的免费ssl,应该是没问题的】
2、nodejs: 测试Node.js代码来检查CA机构的支持发现是nodejs无法验证ssl证书导致的,应该是我使用的CA签发的证书有问题,证书链不完整 nodejs文档-X509 证书的错误码
测试代码
const https = require('https');
const options = {
hostname: 'example.com', // 你要测试的主机名
port: 443, // HTTPS端口
};
const req = https.get(options, (res) => {
// 这里不需要做实际请求,只需建立连接即可
});
req.on('error', (error) => {
if (error.code === 'DEPTH_ZERO_SELF_SIGNED_CERT') {
console.log('CA机构不被支持');
} else {
console.error('发生错误: ', error);
}
});
解决方法:取消对ssl的验证,参考python&nodejs应用https代理抓包证书验证问题解决方法
我node也就这一个应用在用,所以直接修改系统环境变量,环境变量生效后重启下服务,就正常了
# 我的系统ubuntu:,在系统环境变量中配置NODE_TLS_REJECT_UNAUTHORIZED=0
sudo nano /etc/environment
# 文件末尾添加:
NODE_TLS_REJECT_UNAUTHORIZED=0
本文最后记录时间 2023-11-25
文章链接地址:https://me.jinchuang.org/archives/1461.html
本站文章除注明[转载|引用|来源],均为本站原创内容,转载前请注明出处
文章链接地址:https://me.jinchuang.org/archives/1461.html
本站文章除注明[转载|引用|来源],均为本站原创内容,转载前请注明出处