一尘不染

使用Redis-cli + stunnel以外的客户端通过传输加密+ Auth连接到AWS ElastiCache

redis

我正在尝试使用Ruby
Redis客户端和两个NodeJS客户端(node_redisioredis)之一来连接到具有过渡加密和身份验证且启用了Amazon
ElastiCache集群的问题。对于所有三个客户端,一旦我连接,我就会立即收到ECONNRESET错误,并在发生连接重试时一遍又一遍。

我已经关注过AWS文档,并且能够使用stunnel通过redis-
cli成功进行连接,但是到目前为止,尚未能够与任何其他客户端进行连接。

从这个SO答案来看,似乎不需要证书,我们只需要将空选项传递给TLS配置(如果适用),但是无论我输入什么内容都不会成功。我还尝试过stunnel.pem在所有客户端中传递默认的tunnel
私钥作为证书,以防万一,这显然也不起作用。其他使用ElastiCache的人的帮助或专业知识将是有帮助的!


阅读 1051

收藏
2020-06-20

共1个答案

一尘不染

对于这两个客户端,默认的TLS行为是验证服务器证书,我们需要将其禁用。这两个客户端的解决方案如下:

NodeJS客户端:

const redis = require('redis')
const client = redis.createClient({host: hostOrIp, port: 6379, auth_pass: 'thePassword', tls: { checkServerIdentity: () => undefined }})

Ruby客户端:

require "redis"
redis = Redis.new(url: connectionString, ssl_params: { verify_mode: OpenSSL::SSL::VERIFY_NONE })
2020-06-20