如何连接节点的amqplib与SSL连接?

我试图连接我的RabbitMQ服务器,它被迫使用SSL,并用用户和密码保护。 以前,我成功地从C#,PHP和Python应用程序连接到此服务器。

这是我的node.js代码:

const amqp = require('amqplib'); const fs = require('fs'); const config = {...} const opts = { ca: [fs.readFileSync(config.certificatePath)] }; const url = `amqps://${config.username}:${config.password}@${config.hostname}:${config.port}`; const open = amqp.connect(url, opts); open.then(function(conn) { console.log('connected.'); }).then(null, console.warn); 

我得到的错误是:无法获得本地发行者证书

1)错误是什么意思?

2)我需要做什么才能连接?

注意:在图书馆的ssl指南中写着“(必须)提供一个选项对象,它将被传递给tls.connect() 。 我无法理解这个指令,也没有tls.connect()使用的例子。 我尝试了一些变化,但失败了,也许会给这里的某个人提供线索。

你有你的证书path分配给ca ,你错过了你的certkey

 var opts = { cert: certificateAsBuffer, // client cert key: privateKeyAsBuffer, // client key passphrase: 'MySecretPassword', // passphrase for key ca: [caCertAsBuffer] // array of trusted CA certs }; 

你可以在这里find一个参考