security - Lua redis 传输中加密连接
问题描述
我正在使用redis-lua模块。如何在我的 lua 脚本中连接到启用了传输中的 redis 服务器?我正在使用 AWS 弹性缓存,我已启用传输中加密。
下面给出了我用来连接未启用传输中加密的 redis 实例的 Lua 脚本,
local redis = require 'redis'
local client = redis.connect('127.0.0.1', 6379)
local response = client:ping()
从我的另一个 node.js 脚本中,我找到了一个解决方案,可以从 Securing Node Redis连接到启用了传输中加密的实例
我尝试过的代码如下所示。并且工作正常不可靠,但是,是否有可用的模块或任何可靠的解决方案。
local ssl = require "ssl"
local socket = require "socket"
local params = {
mode = "client",
protocol = "tlsv1",
verify = "none",
options = "all",
}
local tcp_socket = socket.tcp()
tcp_socket:connect("xxxxxxxxxx", "6379")
local conn = ssl.wrap(tcp_socket, params)
conn:dohandshake()
conn:send("AUTH testing\n\n")
conn:send("SET test tcp\n\n")
local line, err = conn:receive()
print(err or line)
conn:close()
干杯
解决方案
redis-lua 模块支持多种方式提供连接参数。一种方法是在表中提供创建的套接字,例如,
{
socket = <socket>
}
要连接到启用了传输中加密的 redis 弹性缓存,
local ssl = require "ssl"
local socket = require "socket"
local redis = require "redis"
local config = {
host = "xxxxxxxxxxxxxx",
port = "6379",
password = "XXXXXXXXXXXXXXX"
}
local params = {
mode = "client",
protocol = "tlsv1",
verify = "none",
options = "all",
}
local tcp_socket = socket.tcp()
tcp_socket:connect(config.host, config.port)
local conn = ssl.wrap(tcp_socket, params)
conn:dohandshake()
local client = redis.connect({
socket = conn
})
client:auth(config.password)
print(client:ping())
推荐阅读
- angular - 如何仅使用 Angular Material 使我的应用程序响应?
- javascript - 使用 document.querySelector 应用样式
- javascript - 使用 MySQL 在 Node.js 中实现 async/await 和 Promise
- ruby-on-rails - 引用两个模型的模型的 Rails 迁移
- ajax - Ajax post call 似乎工作,仍然抛出错误?
- javascript - 如何使用 javascript 修复 div 元素内的鼠标指针?
- opencv - 在 OpenCv 中使用 SolvePnP 时的断言错误
- c# - Newtonsoft.Json System.InvalidOperationException:不允许同步操作
- sql - 查找给定课程的所有先决条件
- python - 在 django 调试模式下,浏览器中未显示的正确 url 列表