Activation des connexions sécurisées à Redis Enterprise

Activation des connexions sécurisées à Redis Enterprise

La création de logiciels qui utilisent des connexions sécurisées à un serveur devrait être une compétence que chaque développeur possède. Même si vous choisissez de ne pas activer SSL dans un environnement de production spécifique, vous devez savoir comment sécuriser les connexions à chaque serveur avec lequel vous travaillez. Ce post est la suite promise à Activation des connexions sécurisées à Redis Enterprise Cloud en Python pour nos fans de Java.

Cet article décrit un processus simple pour activer, tester et configurer les connexions cryptées entre Cloud d’entreprise Redis et un programme client Java utilisant SSL. L’une des parties déroutantes de l’activation de SSL pour les programmes Java consiste à convertir les certificats et les clés dans un format que Java comprend. Il s’agit d’une procédure Java uniquement que nous devons nous faufiler entre les étapes de test et de configuration de notre processus.

Ensemble d’outils

Saisissez ces outils afin de pouvoir fermer ce ticket pour activer SSL sur Redis :

Vous devrez également disposer du Frapper shell installé afin que vous puissiez exécuter un petit script que nous fournissons. Si votre système d’exploitation n’inclut pas Bash dans le cadre de l’installation standard, vous devrez l’installer ou traduire notre script dans votre shell préféré.

Pour utiliser SSL, votre abonnement Redis Enterprise Cloud doit avoir la fonctionnalité SSL activée. Si votre compte n’est pas déjà activé pour SSL, vous devrez contacter l’équipe d’assistance Redis pour l’activer. Vous trouverez un lien pour contacter l’équipe d’assistance dans le menu principal du tableau de bord de votre compte. La documentation relative à la configuration de SSL se trouve dans le Guide d’exploitation et d’administration de Redis Enterprise Cloud.

SSL contre TLS

Juste un rappel : comme dans notre article sur Python, nous allons suivre la convention informelle consistant à utiliser l’acronyme “SSL” pour désigner les connexions sécurisées “SSL” ou “TLS”. Même si Redis Enterprise Cloud utilise actuellement (juin 2018) la version 1.2 du protocole TLS pour sécuriser les connexions, Redis Enterprise Cloud et Jedis utilisent “SSL”, nous allons donc emboîter le pas.

Étapes un et deux

Les deux premières étapes sont identiques à celles utilisées pour configurer SSL pour un client Python. Au lieu de tout répéter ici, nous allons simplement vous renvoyer à notre Poste Python. Il y a beaucoup d’informations utiles dans cet article pour travailler avec SSL dans n’importe quelle langue. Je vous recommande de tout lire jusqu’à l’étape 3 avant de continuer.

Le processus commence à diverger pour Java après l’étape 2, nous allons donc insérer une étape 2.5 ici pour transformer les fichiers d’informations d’identification que vous avez téléchargés depuis Redis Enterprise Cloud dans un format qui fonctionne bien avec JavaSE.

Étape 2.5 : Transformer les informations d’identification

En tant que partie standard de JavaSE, Oracle fournit une variété de services de sécurité, y compris le Architecture cryptographique Java (JCA). La JCA définit un ensemble d’API pour que les applications Java appellent les services de sécurité mis en œuvre par les fournisseurs de plug-ins. Les applications sont libres d’utiliser n’importe quel fournisseur disponible (qui fournit souvent des services supplémentaires au-delà de l’API standard), mais la plupart des applications utilisent le fournisseurs par défaut livré avec le JDK.

Le défi de l’utilisation des fournisseurs par défaut est qu’ils ne prennent pas en charge le format PEM couramment utilisé avec les bibliothèques Linux SSL pour stocker les certificats et les clés. Dans la JCA, le matériel d’identification est stocké dans un fichier protégé par mot de passe. magasin de clés dépôts. Dans les applications Java, il est courant d’utiliser deux référentiels : l’un est appelé dans la documentation keystore et l’autre est appelé truststore. Le keystore est utilisé pour stocker les certificats et les clés privées du logiciel client et le truststore est utilisé pour stocker les certificats de confiance des autorités de certification. Le format PEM est utilisé par Redis Enterprise Cloud, nous avons donc créé un script utilisant OpenSSL et le Outil de clé Java pour exécuter toutes les commandes nécessaires pour convertir vos fichiers PEM en truststore et keystore utilisables pour vos programmes clients Java.

Le script suivant, transmogrify.sh, doit être exécuté à partir du répertoire dans lequel vous avez décompressé votre redis_credentials.zip. Le script utilise le certificat Redis Certificate Authority (redis_ca.pem) pour créer un truststore (redis_truststore.p12) et utilise le certificat client (redis_user.crt) et la clé privée correspondante (redis_user_private.key) pour créer un keystore (redisclient_keystore.p12) . Bien que le magasin de clés du client soit protégé par un mot de passe, vous devez tout de même prendre des mesures pour assurer la sécurité de votre magasin de clés. Le magasin de clés et le magasin de confiance devront être distribués à chaque client qui se connecte à une instance de base de données Redis particulière, donc encore une fois, vous voudrez intégrer ces fichiers dans votre système de gestion des informations d’identification.

Les versions Java antérieures à JDK9 favorisaient le propriétaire Format Java KeyStore (JKS)mais à partir de JDK9, Java utilise par défaut la norme de l’industrie Format PKCS12. Ce script crée des magasins au format PKCS12, mais si vous pouvez modifier le script, utilisez le format JKS en modifiant l’option de type de magasin et l’extension de fichier.

Étape 3 : Configurez SSL dans votre code client

La dernière étape pour activer SSL dans votre client Java consiste à modifier le code client pour établir une connexion SSL. Notre exemple de code établira une connexion sécurisée à notre instance Redis Enterprise Cloud, puis enverra la commande Redis PING. Notre code modifié ressemble à :

Vous remarquerez que nulle part dans le code nous ne faisons référence au keystore ou au truststore que nous avons créé pour notre programme Java à l’étape 2.5. Le comportement par défaut des fournisseurs JCA authentifie le serveur ; il nous suffit de fournir nos informations de clé et de certificat. Cela peut être fait avec les propriétés système lues par les fournisseurs JCA. Ajoutez les paramètres suivants à la configuration de votre application IDE ou à la ligne de commande Java :

en les modifiant pour utiliser les emplacements et les mots de passe appropriés de votre système.

Les propriétés du magasin de clés :

  • javax.net.ssl.keyStoreType=PKCS12
  • javax.net.ssl.keyStore=/Users/tague/dev/ssl-testj/redisclient_keyStore.p12
  • javax.net.ssl.keyStorePassword=redis

spécifiez le type (aka format), l’emplacement et le mot de passe pour le keystore créé par le script transmogrify. De même, les propriétés trustStore :

  • javax.net.ssl.trustStoreType=PKCS12
  • javax.net.ssl.trustStore=/Users/tague/dev/ssl-testj/redis_truststore.p12
  • javax.net.ssl.trustStorePassword=redis

spécifiez le type, l’emplacement et le mot de passe du trustStore. La dernière propriété javax.net.debug=ssl:handshake est une propriété facultative utilisée pour activer les informations de débogage.

Configurer Jedis pour utiliser SSL n’est pas particulièrement difficile, mais cela peut être rebutant au début si vous n’êtes pas familier avec les étapes nécessaires pour convertir les informations d’identification PEM en clé Java et en truststores.

Espérons que cet article a fourni à nos fans de Java la même introduction douce à la configuration d’une connexion sécurisée à Redis Enterprise Cloud que nous avons donnée aux développeurs Python. Je souhaite vous laisser un dernier rappel sur la sécurité : la plupart des organisations ont des politiques et des procédures spécifiques pour gérer les mots de passe et les clés privées. Assurez-vous de vérifier auprès de vos équipes d’exploitation et de sécurité pour vous assurer que vous suivez leurs directives.

Development Source

Related Posts

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Clés Redis dans la RAM |  Redis

Clés Redis dans la RAM | Redis

No Comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *