保护节点Redis

时间:2015-08-11 16:47:02

标签: node.js security ssl redis stunnel

我试图保护Node Redis IPC服务器使用私钥/公钥。我跟着this tutorial使用了stunnel,它将Redis在SSL层下使用的隧道包裹起来。

该示例不适用于Node,但它确实保护了连接,如果我在配置文件中包含认证,我只能连接到服务器,否则重置连接。

但是,我不能用NodeJS复制这个。在我的服务器计算机上,我有:

var redis = require('redis'); 
var client = redis.createClient();

client.auth('myPassword');
client.publish('instances', 'start');

我的客户端计算机上有:

var redis = require('redis');
var client = redis.createClient();

client.auth('myPassword');
client.subscribe('instances');
client.on('message', function (channel, message) {
  console.log("Got message " + message + " from channel " + channel);
})

但是,无论我是否在我的stunnel配置文件中包含认证,这两个设备都会进行通信。如何保证此连接?

干杯

2 个答案:

答案 0 :(得分:4)

您可以通过在创建客户端时传递tls配置来完成此操作

var redis = require("redis");

var client = redis.createClient(6380,'location.of.server', {auth_pass: 'password', tls: {servername: 'location.of.server'}});

答案 1 :(得分:-4)

我也搜索过这个。但redis并不需要任何ssl,因为只在经过验证的专用网络上运行。使用stunnel提供安全性的唯一方法。因为我们可以使用AUTH命令启用密码。在redis中,他们提供了一个名为GPG密钥的密码生成器。这产生了一个2048长度的密钥,它将提供安全性。我认为我的答案是相关的。