支持 TLS 的 Memcached 客户端?

问题描述 投票:0回答:2

我在 AWS ElastiCache 中使用 Memcached,并启用了传输中加密作为安全要求。

但是,在客户端,当尝试连接到启用了传输中加密的新缓存集群时,连接立即失败,并出现以下错误。

Error: read ECONNRESET

我使用客户端 memcached-elasticache,它本质上是围绕客户端 memcached 进行集群节点自动发现。这个客户端并不容易使用,但它们是迄今为止我在开源世界中找到的最好的客户端。

但是,引用自述文件,该客户端尚不支持 TLS(传输层安全性),这是在服务器集群中启用传输中加密后所需要的。

与其他数据库和消息队列一样,该模块使用 ASCII 协议与服务器通信,这意味着您可以看到通过线路发送的内容。对于调试来说,这对用户和开发人员来说都更容易,但这也意味着不支持 SASL 身份验证,因为它需要二进制协议。

我相信这就是我因为网络协议不匹配而立即重置连接的原因。此开源包中有一个未解决的问题,人们正在询问 TLS 支持。

现有的 Memcached JS/TS 客户端是否具有完整的 TLS 支持?

memcached amazon-elasticache
2个回答
3
投票

对于 Java,我们建议您使用支持 TLS 的 memcached Java 客户端 https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-java

对于 PHP,我们建议您使用支持 TLS 的 PHP 客户端。 https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-php

对于 Python,pymemcache 客户端支持 TLS https://pypi.org/project/pymemcache/

对于 Rust,我发现了这个支持 TLS 的 rust-memcache 客户端https://crates.io/crates/memcache

对于 Ruby,有 memcached Dalli 客户端支持 TLS https://github.com/petergoldstein/dalli

到目前为止,我还不知道有任何 NodeJS 或 C# .NET 客户端支持 TLS。


1
投票

我们最近为 electrode-io memcache 客户端 提供了 TLS 支持。除了 NodeJS 之外,它还支持 Typescript。它可以在NPM上获得。

如果memcached服务器配置了TLS,您可以通过指定

tls
ConnectionOptions让客户端连接到它。对于生产环境,服务器应使用由受信任的公共 CA 签名的 TLS 证书。在 在这种情况下,您可以简单地执行以下操作来创建客户端:

import MemcacheClient from "memcache-client";
const client = new MemcacheClient({server: "{server_hostname}:11211", tls: {}});
client.set("key", "value");

如果服务器需要客户端证书认证,可以执行以下操作:

import MemcacheClient from "memcache-client";
import Fs from "fs";
const client = new MemcacheClient({server: "{server_hostname}:11211", tls: {
  key: Fs.readFileSync("client-key.pem"),
  cert: Fs.readFileSync("client-cert.pem"),
}});
client.set("key", "value");

如果您使用自签名证书运行服务器(即用于本地开发),您可以创建客户端 通过指定 CA 证书并禁用主机名验证,如下所示:

import MemcacheClient from "memcache-client";
import Fs from "fs";
const client = new MemcacheClient({server: "localhost:11211", tls: {
  ca: Fs.readFileSync("ca-cert.pem"),
  checkServerIdentity: () => {return undefined;}
}});
client.set("key", "value");
© www.soinside.com 2019 - 2024. All rights reserved.