首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Node.js连接到IBM Cloud Databases for Redis?

问如何使用Node.js连接到IBM Cloud Databases for Redis?
EN

Stack Overflow用户
提问于 2019-07-22 23:01:03
回答 1查看 564关注 0票数 0

我无法从Node.js应用程序连接到IBM Cloud Databases for Redis实例。我已经提供了一个实例并创建了服务凭据,这为我提供了一个连接字符串。

将此连接字符串与Node.js client library for Redis一起使用会引发以下连接错误:

代码语言:javascript
复制
Error: Redis connection to <id>.databases.appdomain.cloud:port failed - read ECONNRESET
  at TCP.onread (net.js:657:25) errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read'

如果我在客户端构造函数中设置了tls属性,我会得到以下错误:

代码语言:javascript
复制
Error: Redis connection to <id>.databases.appdomain.cloud:port failed failed - self signed certificate in certificate chain
    at TLSSocket.onConnectSecure (_tls_wrap.js:1055:34)
    at TLSSocket.emit (events.js:182:13)
    at TLSSocket._finishInit (_tls_wrap.js:635:8) code: 'SELF_SIGNED_CERT_IN_CHAIN'

这是用于创建客户端库实例的代码。

代码语言:javascript
复制
const redis = require("redis"),
const url = 'rediss://<URL_FROM_SERVICE_CREDS/'
const client = redis.createClient(url);

这适用于Redis的本地实例,但不适用于IBM Cloud数据库版本?

EN

回答 1

Stack Overflow用户

发布于 2019-07-22 23:01:03

IBM Cloud Databases for Redis uses TLS connections用于保护对所有数据库实例的访问。TLS连接使用self-signed certificate进行身份验证。由于证书是自签名的,因此如果不提供来自服务的公共证书,则Node.js运行时无法信任该证书。

服务凭据中的connection.rediss.certificate.certificate_base64值提供了一个包含证书文件的Base64编码字符串。然后,该字符串可以与Node.js客户端库一起使用,如下所示...

代码语言:javascript
复制
const ca = Buffer.from(cert_base64, 'base64').toString('utf-8')
const tls = { ca };
const client = redis.createClient(url, { tls });

tls属性传递给Node.js中的tls.connect方法,该方法用于设置TLS连接。此方法支持ca参数以扩展系统中预安装的受信任CA证书。通过使用此属性提供自签名证书,将不会看到上面的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57148766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档