Comment se connecter à un nœud Amazon ElastiCache pour Redis activé avec le chiffrement en transit à l'aide de redis-cli ?

Date de la dernière mise à jour : 09/07/2020

L'interface de ligne de commande Redis (redis-cli) ne prend pas en charge les clients SSL. Comment accéder aux données d'un nœud Amazon ElastiCache pour Redis activé avec le chiffrement en transit ?

Brève description

Le client redis-cli ne prend pas en charge les connexions SSL/TLS. Pour utiliser redis-cli pour accéder à un nœud ElastiCache pour Redis (mode cluster désactivé) avec le chiffrement en transit, utilisez le package stunnel dans les clients sur Linux. La commande stunnel crée un tunnel SSL vers des nœuds Redis spécifiés dans la configuration stunnel. Après avoir établi le tunnel, vous pouvez utiliser redis-cli pour connecter un nœud de cluster activé avec le chiffrement en transit.

Remarque : pour vous connecter aux nœuds Redis (mode cluster activé) avec le chiffrement en transit, utilisez les clients Redis qui prennent en charge en natif SSL et les clusters activés en mode cluster. Pour plus d'informations, consultez Redis.io/clients sur le site Web de Redis.

Solution

1.    Connectez-vous à l'instance client Linux à l'aide de SSH et installez le package stunnel :

Sur les systèmes basés sur CentOS :

$sudo yum install stunnel

Sur les systèmes basés sur Debian (Ubuntu 16) :

$sudo apt-get install stunnel

2.    Dans le fichier redis-cli.conf, ajoutez un point de terminaison de cluster Redis à un ou plusieurs paramètres de connexion :

# cat /etc/stunnel/redis-cli.conf
fips = no
setuid = root
setgid = root
pid = /var/run/stunnel.pid
debug = 7
options = NO_SSLv2
options = NO_SSLv3
[redis-cli]
  client = yes
  accept = 127.0.0.1:6379
  connect = master.ssltest.wif0lh.use1.cache.amazonaws.com:6379
[redis-cli-replica]
  client = yes
  accept = 127.0.0.1:6380
  connect = ssltest-002.ssltest.wif0lh.use1.cache.amazonaws.com:6379

Dans cet exemple, le fichier de configuration comporte deux connexions : redis-cli et redis-cli-replica. Les paramètres sont définis comme suit :

  • client est défini sur yes (oui), pour indiquer que l'instance stunnel est un client.
  • accept (accepter) est défini sur l'adresse IP du client. Dans cet exemple, le principal est défini sur la valeur par défaut Redis 127.0.0.1 sur le port 6379. Le réplica doit appeler un port différent et il est défini sur 6380. Vous pouvez utiliser les ports éphémères 1024 à 65535.
  • connect (connecter) est défini sur le point de terminaison du serveur Redis. Pour plus d'informations, consultez Recherche des points de terminaison de connexion.

3.    Démarrez stunnel.

$ sudo stunnel /etc/stunnel/redis-cli.conf

Utilisez la commande netstat pour vérifier que les tunnels sont démarrés :

# 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

4.    Vous pouvez désormais utiliser l'interface de ligne de commande Redis (redis-cli) pour vous connecter au nœud Redis chiffré en utilisant le point de terminaison du tunnel local :

# redis-cli -h localhost -p 6379 -a MySecretPassword
localhost:6379>set foo "bar"
OK
localhost:6379>get foo
"bar"

Remarque : si l'instance est protégée par un mot de passe, l'option -a MySecretPassword dans l'interface de ligne de commande Redis (redis-cli) exécute l'authentification sans avoir besoin de la commande AUTH. Pour plus d'informations, consultez redis-cli, l'interface de ligne de commande Redis sur le site Web de Redis.

Cet exemple utilise telnet pour la connexion au serveur Redis :

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

Exécutez la commande pkill pour arrêter et fermer les tunnels SSL :

$ sudo pkill stunnel

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?