

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 valkey-cli 使用传输加密连接到 ElastiCache (Valkey) 或亚马逊 ElastiCache For Redis OSS
<a name="connect-tls"></a>

要访问启用了传输加密 ElastiCache 的 Redis OSS 缓存中的数据，可以使用支持安全套接字层 (SSL) 的客户端。你还可以在亚马逊 Linux 2023 上使用带有 TLS 的 valkey-cli。如果您的客户端不支持 TLS，则可以在客户端主机上，使用 `stunnel` 命令创建连接到 Redis OSS 节点的 SSL 隧道。

## 与 Linux 的加密连接
<a name="connect-tls.linux"></a>

要使用 valkey-cli 连接到在 Amazon Linux 2023 上启用了传输加密的 Valkey 或 Redis OSS 集群，请按照以下步骤操作。

1. 在您的 EC2 实例的命令提示符下，安装 Valkey 软件包。该软件包中包含的 valkey-cli 实用程序是在支持 TLS 的情况下构建的。

   ```
   sudo dnf install valkey -y
   ```

1. 确认该实用程序已安装。

   ```
   valkey-cli --version
   ```

1. 要连接到启用了加密和身份验证的集群，请输入此命令。该`--askpass`选项会提示你输入密码，而不是在命令行中输入密码，这会使它不在你的 shell 历史记录和进程列表中。

   ```
   valkey-cli -h {{Primary or Configuration Endpoint}} --tls --askpass -p 6379
   ```
**注意**  
如果您使用配置终端节点连接到启用集群模式的缓存，请添加该`-c`标志以在客户端中启用集群模式。这允许客户端自动关注`MOVED`和`ASK`重定向：  

   ```
   valkey-cli -c -h {{Configuration Endpoint}} --tls --askpass -p 6379
   ```
**注意**  
如果您改为在亚马逊 Linux 2023 上安装 redis6 软件包，请使用该命令`redis6-cli`代替：`valkey-cli`  

   ```
   redis6-cli -h {{Primary or Configuration Endpoint}} --tls -p 6379
   ```
**注意**  
如果您的 Linux 发行版不提供 Valkey 软件包，则可以改为从源代码构建该实用程序。安装`gcc`和 OpenSSL 开发包，按照在 Valkey 网站上[安装 Valkey ](https://valkey.io/topics/installation/) 中所述下载最新的源代码版本，然后运行。`make` `make valkey-cli BUILD_TLS=yes`你从源代码构建的客户端不会收到软件包更新，因此你必须在新版本发布时自己进行更新。

## 与 stunnel 的加密连接
<a name="connect-tls.stunnel"></a>

要使用 valkey-cli 连接到使用 stunnel 进行传输中加密的 Redis OSS 集群，请按以下步骤操作。

1. 使用 SSH 连接到您的客户端并安装 `stunnel`。

   ```
   sudo yum install stunnel
   ```

1. 使用下面提供的输出作为模板，运行以下命令来`'/etc/stunnel/valkey-cli.conf'`同时创建和编辑文件，将 Redis OSS 集群终端节点添加到一个或多个连接参数中。 ElastiCache 

   ```
   vi /etc/stunnel/valkey-cli.conf
   
   				
   fips = no
   setuid = root
   setgid = root
   pid = /var/run/stunnel.pid
   debug = 7 
   delay = yes
   options = NO_SSLv2
   options = NO_SSLv3
   [valkey-cli]
      client = yes
      accept = 127.0.0.1:6379
      connect = primary.ssltest.wif01h.use1.cache.amazonaws.com:6379
   [valkey-cli-replica]
      client = yes
      accept = 127.0.0.1:6380
      connect = ssltest-02.ssltest.wif01h.use1.cache.amazonaws.com:6379
   ```

   在此示例中，配置文件具有两个连接，即 `valkey-cli` 和 `valkey-cli-replica`。参数设置如下所示：
   + **client** 设置为 yes（是）以指定此 Stunnel 实例是客户端。
   + **accept** 设置为客户端 IP。在此示例中，主 IP 设置为端口 6379 上的 Redis OSS 默认 127.0.0.1。副本必须调用另一个端口并设置为 6380。您可以使用临时端口 1024-65535。有关更多信息，请参阅 *Amazon VPC 用户指南*中的[临时端口](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html#VPC_ACLs_Ephemeral_Ports)。
   + **connect** 设置为 Redis OSS 服务器端点。有关更多信息，请参阅 [在中查找连接端点 ElastiCache](Endpoints.md)。

1. 启动 `stunnel`。

   ```
   sudo stunnel /etc/stunnel/valkey-cli.conf
   ```

   使用 `netstat` 命令确认隧道已启动。

   ```
   sudo netstat -tulnp | grep -i stunnel
   				
   tcp        0      0 127.0.0.1:6379              0.0.0.0:*                   LISTEN      3189/stunnel        
   tcp        0      0 127.0.0.1:6380              0.0.0.0:*                   LISTEN      3189/stunnel
   ```

1. 使用隧道的本地端点连接到加密的 Redis OSS 节点。
   + 如果在创建 Redis OSS 集群期间 ElastiCache 未使用身份验证密码，则此示例使用 valkey-cli 在 Amazon Linux 上使用 valkey-cli 的完整路径连接到 ElastiCache for Redis OSS 服务器：

     ```
     /home/ec2-user/redis-7.2.5/src/valkey-cli -h localhost -p 6379
     ```

     如果在创建 Redis OSS 集群时未使用 AUTH 密码，此示例将在 Amazon Linux 上使用 valkey-cli 通过其完整路径连接到 Redis OSS 服务器：

     ```
      /home/ec2-user/redis-7.2.5/src/valkey-cli -h localhost -p 6379 -a {{my-secret-password}}
     ```

   或
   + 将目录更改为 redis-7.2.5 并执行以下操作：

     如果在创建 Redis OSS 集群期间 ElastiCache 未使用身份验证密码，则此示例使用 valkey-cli 在 Amazon Linux 上使用 valkey-cli 的完整路径连接到 ElastiCache for Redis OSS 服务器：

     ```
     src/valkey-cli -h localhost -p 6379
     ```

     如果在创建 Redis OSS 集群时未使用 AUTH 密码，此示例将在 Amazon Linux 上使用 valkey-cli 通过其完整路径连接到 Valkey 或 Redis OSS 服务器：

     ```
     src/valkey-cli -h localhost -p 6379 -a {{my-secret-password}}	
     ```

   此示例使用 Telnet 连接到 Valkey Redis OSS 服务器。

   ```
   telnet localhost 6379
   			
   Trying 127.0.0.1...
   Connected to localhost.
   Escape character is '^]'.
   auth MySecretPassword
   +OK
   get foo
   $3
   bar
   ```

1. 要停止并关闭 SSL 隧道，请对 Stunnel 过程执行 `pkill` 操作。

   ```
   sudo pkill stunnel
   ```