Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于使用自签名证书问题 #1830

Closed
zxx74520 opened this issue Jun 24, 2024 · 4 comments
Closed

关于使用自签名证书问题 #1830

zxx74520 opened this issue Jun 24, 2024 · 4 comments
Labels
bug Something isn't working

Comments

@zxx74520
Copy link

我这边在通过fastgpt去调用我们自己部署的一个应用的时候报证书问题(该应用我们是布置了自签发证书)
报错信息如下:
{
"error": {
"message": "self-signed certificate in certificate chain",
"name": "Error",
"method": "post",
"baseURL": "
http://fastgpt-xxxxxx:3000"
,
"url": "
https://awx.apps.os.xxxxxx.com/api/v2/job_templates/116/launch/"
,
"code": "SELF_SIGNED_CERT_IN_CHAIN"
}
}

请问,该问题该如何解决?是否是需要给fastgpt也要部署相应的自签发证书?如果是的话,请问fastgpt应该如何配置自签发证书?

@zxx74520 zxx74520 added the bug Something isn't working label Jun 24, 2024
@ppkitty
Copy link

ppkitty commented Jun 25, 2024

我也遇到类似的问题,部署的是根证书,但是不确定为什么Fastgpt没有去调用这个根证书,也是显示self-signed certificate in certificate chain。

@c121914yu
Copy link
Collaborator

c121914yu commented Jul 4, 2024

没遇到过,一般环境中,发起方不需要配置任何证书,除非被请求方有特殊要求。

@zxx74520
Copy link
Author

zxx74520 commented Jul 5, 2024 via email

@zzjin
Copy link

zzjin commented Jul 5, 2024

默认情况下,fastgpt 安装了通用根证书ca-certificates并保证其是最新的.CA 机构正式签名的 https 证书都是支持的.

对于自签名证书,由于没有任何可信证书,解决思路有如下几种:

  1. 修改自定义外部 http 调用的代码,在接口层增加变量
var req = https.request({ 
  host: 'https://self-signed.example.com', 
  port: 443,
  path: '/',
  method: 'GET',
  rejectUnauthorized: false, // <-修改这个参数为 false,默认为 true
  requestCert: true,
  agent: false
},...)
  • 优势: 可以在配置界面做只一个开关参数,来让用户控制是否允许自签名证书的调用,代码修改较小
  • 劣势: 需要修改代码+发版,同时会不验证 ca,有一定的安全风险
  1. 基本同上,但是修改代码如下:
var req = https.request({ 
  host: 'https://self-signed.example.com', 
  port: 443,
  path: '/',
  method: 'GET',
  ca: [<ca-string[]>, {encoding: 'utf-8'})], // <-这里是自签名证书的根证书字符串
  requestCert: true,
  agent: false
},...)
  • 优势: 功能完备,按序配置自签名证书,请求还是加密的,安全性不降低
  • 劣势: 需要大改造界面与存储根证书内容,让用户上传自签名的根证书;不同的域名,不同的根证书也需要配置多次
  1. 对于私有化部署的 fastgpt,还可以在启动的 env 中配置:NODE_TLS_REJECT_UNAUTHORIZED=0,可以让整个 node 进程不再检查 tls 证书的合法性
  • 优势: 不需要修改任何代码,重启服务即可
  • 非常不安全,任意 https 请求都不再验证 tls 证书
    建议仅在内网或可信环境环境中使用

@c121914yu c121914yu changed the title 通过FASTGPT去调用其他应用接口的时候报证书问题 关于使用自签名证书问题 Jul 7, 2024
@c121914yu c121914yu pinned this issue Aug 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants