Spring Cloud offre aux développeurs une gamme d'outils pour construire rapidement des modèles communs de systèmes distribués. Par exemple: la gestion de la configuration, la découverte de services, le routage hors roulement, le routage intelligent, les micro-agents, le bus de contrôle, les jetons uniques, les verrous mondiaux, les campagnes de prise de décision, les sessions distribuées, le statut de cluster, etc. L'assistance de systèmes distribués nécessite un grand nombre de modèles, et les développeurs utilisant Spring Cloud peuvent rapidement établir des services et des applications qui prennent en charge ces modèles. Ils conviendront à tout environnement distribué, qu'il s'agisse d'un environnement d'ordinateur personnel ou de production d'un développeur, ou d'une plate-forme cloud.
caractéristiques
Spring Cloud se concentre sur la fourniture de solutions typiques et de manières évolutives qui sont bonnes hors de la boîte.
Introduction
Le cryptage asymétrique RSA a une sécurité très forte. HTTPS SSL Encryption utilise cette méthode pour crypter et transmettre des demandes HTTPS. Étant donné que l'algorithme RSA implique une clé privée et une clé publique pour le chiffrement et le déchiffrement, il est appelé cryptage asymétrique. La clé privée et la clé publique sont interopérables, c'est-à-dire celles cryptées par une clé privée peuvent être déchiffrées par la clé publique, et celles cryptées par la clé publique peuvent être déchiffrées par une clé privée. L'authentification unidirectionnelle traditionnelle n'utilise que la clé publique pour le chiffrement, et seuls ceux qui ont la clé privée peuvent décrypter. Par exemple, un serveur Web aura une paire de clés privées et de clés publiques. Le client du navigateur enregistre la clé publique du serveur. Lorsque le client doit envoyer des données au serveur, il utilise la clé publique du serveur pour le chiffrer. Ensuite, lorsque le serveur reçoit les données, il utilise la clé privée pour les déchiffrer. Lorsque le client vérifie si le serveur est un vrai serveur, il comparera la clé publique fournie par le serveur avec la clé publique enregistrée localement. Ce n'est que s'il est cohérent que l'authenticité du serveur peut être vérifiée.
Dans notre serveur de configuration, certaines des données qui ont des exigences de chiffrement élevées peuvent être cryptées et déchiffrées à l'aide de l'algorithme RSA.
Code source du projet
Cloud de code gitee
Générer un test de clé de test
Nous devons utiliser l'outil Keytool qui est livré avec JDK pour générer un clés, qui enregistre les informations de clé privée, et utilisez la ligne de commande suivante:
KeyTool -GenkeyPair -alias Config-Server-Key -Keyalg RSA -dname "CN = config Server, ou = xuqian, o = ma propre entreprise, l = beijing, s = beijing, c = cn" -KeyPass changeItIt
-KeyStore Server.jks -Storepass Changeit
Le paramètre -GenkeyPair génère une paire de clés publiques et de clés privées.
-alias spécifie l'alias de la clé, qui est utilisée pour distinguer différentes clés dans le même stage.
-Keyalg Spécifie l'algorithme pour la génération de clés, et le RSA par défaut est utilisé ici
-Dname spécifie le nom commun, c'est-à-dire CN pour vérifier l'identité de la clé. Tous les éléments sont des paramètres personnalisés, OU est le nom de l'unité, O est le nom de l'organisation, L est la ville, S est la province / État, et C est le pays
-KeyPass est le mot de passe de la clé
-KeyStore est le nom de fichier du clés
-Storepass Mot de passe pour accéder à des clés
L'outil ci-dessus enregistre la clé privée générée dans un magasin de clé appelé Server.jks. Jusqu'à présent, nous n'avons généré que des clés privées. Spring Cloud Config Server générera une clé publique en utilisant le programme à chaque fois en fonction des informations clés que nous fournissons. Reportez-vous au code source ci-dessous.
org.springframework.security.rsa.crypto.keystorekeyfactory:
public keypair getKeyPair (String alias, char [] mot de passe) {try {synchronisé (lock) {if (store == null) {synchronisé (lock) {// Obtenez l'objet d'instance de la clé en fonction de l'adresse du fichier de keystore fournie par la configuration = keystore.getInStance ("jks"); store.load (ressource.getInputStream (), this.password); }}} // Obtenez une clé privée à partir du stage de clé en fonction de l'alias et du mot de passe fourni par la configuration rsaprivatecrtkey key = (rsaprivatecrtkey) store.getKey (alias, mot de passe); // Définir les règles de génération de clés publiques rsapublickeyspec spec = new rsapublicKeyspec (key.getModulus (), key.getPublicexponent ()); // Génération de la clé publique publique PublicKey = KeyFactory.getInstance ("RSA"). GeneratePublic (SPEC); Renvoie un nouveau clés (publickey, key); } catch (exception e) {lancez new illégalStateException ("Impossible de charger les clés de Store:" + Resource, E); }}L'API de sécurité Java est utilisée ici pour fonctionner sur la clé. Voir les notes. Ensuite, les informations ci-dessus sont fournies via le fichier de configuration bootstrap.xml dans configServer:
Encrypt: #Key: ThisisMySecretKey Key-Store: Emplacement: fichier: // $ {user.home} /development/keys/server.jks mot de passe: Alias de modification: config-server-key secret: ChangeitParce que nous ne pouvons pas utiliser à la fois le cryptage symétrique et le chiffrement asymétrique, nous commençons la configuration de l'Ecrypt.key et spécifions les paramètres pour le cryptage asymétrique:
test
Nous continuons à chiffrer les données de test à l'aide de l'API ECRYPT:
curl http: // localhost: 8888 / Encrypt -d 23456789
Renvoie les personnages cryptés:
Aqapwouoh4wvexggvv + bgtkc5e0d5aba8vukzExh27hyksabw + wyzdwztbk5qyfxpocas413rdenidr2ez44nkjt5v + 438 / Vqexyszjzphp0xyxi9yiajqa3 + ji + iwk8hrgtj4dzxikmitimoirlzzgdm / yklmuvh7larsnumxxgklpdbpkywdqhm57ob 6SB0IVM4H4ML1N4D3qucue7Hh2f4Aw4oln7xueymkrptTpy8OPnBeezHrfmal / AUVZQULU5JJMNJK9JIWOY + DSTSCVIY / MZ + D ypv6f4afddvvog89snmpzcut + zmb8jxhdjloky + 63rg326wffy9opuimw6 / kcwzhv6vws55hhqry713w6ydblrq / gyc3wils =
Puis testez le décryptage
Curl http: // localhost: 8888 / Decrypt -d AQAPWOUOH4 + BGTKC5E0D5ABA8VUKNZEXH27HYKSABW + WYZDWZTBK5QYFXPOCAS413RDENIDR2EZ44NKJT5V + 438 / VQEXYS zjzphp0xyxi9yiajqa3 + ji + iwk8hrgtj4dzxikmitimoirlzzgdm / yklmuvh7larsnumxxgklpdbpkywdqhm57ob6sb0 IVM4H4ML1N4D3qucue7Hh2f4Aw4Oln7xueymkrptTpy8OPnBeezHrfmal / AUVZQULU5JJMNJK9JIWOY + DSTSCVIY / MZ + DYP v6f4afddvvog89snmpzcut + zmb8jxhdjloky + 63rg326wffy9opuimw6 / kcwzhv6vws55hhqry713w6ydblrq / gyc3wils =
Reviendra
23456789
Nous pouvons également modifier web-client.yml pour vérifier:
#Test: #Password: '{Cipher} 94C1027141ADD9844EC47F0BE13CAEBB6B38ED1DCF99811B1A5CD2B874C64407'User: Mot de passe: Mot de passe: '{Cipher} aqapwouoh4wvexggvv + bgtkc5e0d5aba8vuknzExh27hyksabw + wyzdwztbk5qyfxpocas413rdenidr2ez44nkjt5 V + 438 / VQEXYSZJZPHP0XYXI9YIAJQA3 + JI + IWK8HRGTJ4DZXIKMITIMURLDZZZGDM / YKLMUVH7LARSNUMXXGKLPDBPKYWDQHM 57OB6SB0IVM4H4ML1N4D3qucue7Hh2f4Aw4oln7xueymkrptTpy8OPnBeZhrfmal / AUVZQULU5JJMNJK9JIWOY + DSTSCVIY / MZ + dypv6f4afddvvog89snmpzcut + zmb8jxhdjloky + 63rg326wffy9opuimw6 / kcwzhv6vws55hhqry713w6ydblrq / gyc3wils = 'Commentez Test.Password et ajoutez un nouvel utilisateur.Password pour utiliser la valeur de configuration cryptée. Soumettez ensuite le référentiel Gitee et accédez à ce fichier de configuration via l'URL:
http: // localhost: 8888 / web-client / par défaut
Les résultats suivants sont obtenus:
{"Name": "Web-Client", "Profils": ["Default"], "Label": Null, "Version": "3044A5345FB86D09A043CA7404B9E57C8C13C512", "State": Null, "PropertySources": [{"Name":: "https://gitee.com/zxuqian/spring-cloud-config-remote/web-lient.yml", "source": {"Message": "Ce message provient du référentiel de configuration distante", "Management.endpoids.web.exposure.include": "*", "user.password": "23456789"}}Résumer
Ce qui précède est l'introduction de Spring Cloud Config RSA et la méthode d'utilisation de RSA pour chiffrer les fichiers de configuration que l'éditeur vous a présentés. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!