首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用`ioredis`通过SSL的ssh通道连接到Redis实例(AWS弹性缓存)?

如何使用`ioredis`通过SSL的ssh通道连接到Redis实例(AWS弹性缓存)?
EN

Stack Overflow用户
提问于 2020-12-25 00:37:04
回答 1查看 474关注 0票数 1

这似乎与ioredis及其对TLS的支持有关。这一切都在mac、Catalina等电脑上。

我有一个弹性缓存Redis实例在VPC内运行。我使用ssh通过隧道连接到它,

代码语言:javascript
运行
复制
ssh -L 6379:clustercfg.my-test-redis.amazonaws.com:6379 -N MyEC2

以下代码不适用于node 12.9ioredis 4.19.4

代码语言:javascript
运行
复制
> const Redis = require("ioredis");
> const redis = new Redis('rediss://127.0.0.1:6379');

[ioredis] Unhandled error event: Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames: IP: 127.0.0.1 is not in the cert's list: 
    at Object.checkServerIdentity (tls.js:287:12)
    <repeated ... many times>

这也不起作用:

代码语言:javascript
运行
复制
> const Redis = require("ioredis");
> const redis = new Redis('redis://127.0.0.1:6379');
> redis.status
'connect'
> redis.set('fooo','barr').then(console.log).catch(console.error)
Promise { <pending> }
> redis.status
'connect'

有没有办法让我用ioredis做到这一点?这只是为了调试。如果第一个表单是正确的,是否有一个设置允许对证书或其他东西进行“非严格”验证?

这可以(在mac上)使用

代码语言:javascript
运行
复制
% openssl s_client -connect localhost:6379
set "fred" "Mary"
+OK
get "fred"
$4
Mary

这是可行的(通过pip3安装redis )

代码语言:javascript
运行
复制
#!/usr/bin/env python3
import redis
r = redis.Redis(host='127.0.0.1', ssl=True, port=6379)
r.set('foo', 'bar')
print(r.get('foo'))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-28 16:52:21

虽然我不建议将其用于生产环境,但您说这是用于调试。

您需要禁用服务器身份检查。您可以通过使用noop覆盖配置中的函数来实现:

代码语言:javascript
运行
复制
const Redis = require("ioredis");
const redis = new Redis('rediss://127.0.0.1:6379', {
  tls: {
    checkServerIdentity: () => undefined,
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65441003

复制
相关文章

相似问题

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