Javascript 在arangojs中配置TLS证书授权

Javascript 在arangojs中配置TLS证书授权,javascript,ssl,certificate,arangodb,arangojs,Javascript,Ssl,Certificate,Arangodb,Arangojs,我创建了自己的证书颁发机构,以便为我的开发环境生成TLSv1.2证书。 我的CA有一个根证书、一个由根签署的中间证书和一系列由中间证书签署的“叶”证书。我使用其中一个叶证书安全地连接到arangodb服务器。 arangod进程似乎运行良好,因为在浏览器中安装根证书/中间证书后,我可以成功访问web界面与数据库交互 当我尝试使用arangojs javascript驱动程序将我的nodejs API服务器连接到数据库时,就会出现问题,如我在何处找到的: 如果您需要支持自签名HTTPS证书,您可能

我创建了自己的证书颁发机构,以便为我的开发环境生成TLSv1.2证书。 我的CA有一个根证书、一个由根签署的中间证书和一系列由中间证书签署的“叶”证书。我使用其中一个叶证书安全地连接到arangodb服务器。 arangod进程似乎运行良好,因为在浏览器中安装根证书/中间证书后,我可以成功访问web界面与数据库交互

当我尝试使用arangojs javascript驱动程序将我的nodejs API服务器连接到数据库时,就会出现问题,如我在何处找到的:

如果您需要支持自签名HTTPS证书,您可能需要将您的证书添加到代理中,例如:

agentOptions: {
  ca: [
    fs.readFileSync('.ssl/sub.class1.server.ca.pem'),
    fs.readFileSync('.ssl/ca.pem')
  ]
}
使用自签名证书时,agentOption配置有效,并且:

agentOptions: {
  ca: [
    fs.readFileSync('db.crt.pem')
  ]
}
但在使用我自己的CA签名证书时失败,并且:

agentOptions: {
  ca: [
    fs.readFileSync('interm.crt.pem')
  ]
}
我还尝试了其他几种ca设置,如: 1.正在传递[root,interm]证书缓冲区 2.传递[interm,root]证书缓冲区(交换订单) 3.传递[root+interm]证书缓冲区(单个连接文件) 4.传递[interm+root]证书缓冲区(如上所述,交换订单) 但这一切似乎都不起作用。我总是从arangojs收到一条很长的错误消息,在开始的时候,我看到无法验证叶子签名

通过查找它,我找到了对节点ssl根cas npm模块的引用,但由于我使用自己的CA,我不明白为什么要使用它(我也尝试过,但也没有成功)

我的问题似乎与类似,但解决方案似乎与上面的文档是1:1同步的,仍然不起作用


最后,我认为这只是arangojs中agantOptions的一个微妙配置问题。有人能给我指一下正确的配置吗?

我终于通过以下方式建立了一个安全的TLS连接:

agentOptions: {
  ca: [
    fs.readFileSync('interm_root.crt.pem')
  ]
}
其中interm_root.crt.pem是中间证书和根证书的串联,其获得方式如下:

cat interm.crt.pem root.crt.pem>interm_root.crt.pem

由于某种原因,我在第一轮测试中没有正确地进行连接


希望这对其他arangojs用户有所帮助

我终于通过以下方式建立了安全的TLS连接:

agentOptions: {
  ca: [
    fs.readFileSync('interm_root.crt.pem')
  ]
}
其中interm_root.crt.pem是中间证书和根证书的串联,其获得方式如下:

cat interm.crt.pem root.crt.pem>interm_root.crt.pem

由于某种原因,我在第一轮测试中没有正确地进行连接


希望这可以帮助其他arangojs用户

它也可以通过读取单独文件中的根证书和中间证书来工作,并且与它们在ca阵列中传递的顺序无关。它还可以通过读取单独文件中的根证书和中间证书来工作,与它们在ca阵列中传递的顺序无关