使用 Nodejs 进行 Redis TLS 配置

Raj*_*pta 10 ssl redis node.js ioredis

我正在使用 ioRedis 节点包将我的 Node js 应用程序连接到受 TLS 保护的 Redis 服务器。我使用的Redis版本是Redis 6.0。我的服务器使用证书运行良好,但从节点应用程序连接时出现错误。

 Redis({
          host: "localhost",
          port: 6379,
          tls: {
            key: fs.readFileSync('./redis.key'),
            cert: fs.readFileSync('./redis.crt'),
            maxVersion: 'TLSv1.3',
            minVersion: 'TLSv1.3',
            ca: [fs.readFileSync('./redis.pem')]
          }
        })
Run Code Online (Sandbox Code Playgroud)

Nodejs应用程序端的错误是

This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason:
   Error: read ECONNRESET
            at TCP.onStreamRead (internal/stream_base_commons.js:205:27)
Run Code Online (Sandbox Code Playgroud)

尝试从 Nodejs 应用程序连接时服务器出错

17:29:44.295 # Error accepting a client connection: error:1408F10B:SSL routines:ssl3_get_record:wrong version number

目的只是建立一个具有 TLS 安全性的 Redis 连接。

小智 23

我也在做同样的事情,我尝试这种方法(node-redisv2.8.0):

const redis = require('redis');
const fs = require('fs');

const client = redis.createClient({
    host: '<hostname>',
    port: <port>,
    tls: {}
});
Run Code Online (Sandbox Code Playgroud)

尝试将tls作为空对象传递,而不是传递证书密钥。此方法的指南如下。 https://docs.upstash.com/docs/howto/connectwithtls