يوفر Spring Cloud للمطورين مجموعة من الأدوات لبناء نماذج مشتركة للأنظمة الموزعة بسرعة. على سبيل المثال: إدارة التكوين ، اكتشاف الخدمة ، التوجيه الذكي ، العوامل الدقيقة ، حافلات التحكم ، الرموز المميزة لمرة واحدة ، الأقفال العالمية ، حملات صنع القرار ، الجلسات الموزعة ، حالة الكتلة ، إلخ. ستكون مناسبة لأي بيئة موزعة ، سواء كانت كمبيوتر أو بيئة إنتاج شخصية للمطور أو منصة سحابة.
خاصية
تركز Spring Cloud على توفير حلول نموذجية وطرق قابلة للتطوير جيدة من الصندوق.
مقدمة
إن تشفير RSA غير المتماثل له أمان قوي للغاية. يستخدم تشفير HTTPS SSL هذه الطريقة لتشفير ونقل طلبات HTTPS. نظرًا لأن خوارزمية RSA تتضمن مفتاحًا خاصًا ومفتاحًا عامًا للتشفير وفك التشفير ، فهي تسمى التشفير غير المتماثل. المفتاح الخاص والمفتاح العام قابل للتشغيل ، أي أن أولئك المشفرين بالمفتاح الخاص يمكن فك تشفيره باستخدام المفتاح العام ، ويمكن فك تشفير تلك المشفرة بالمفتاح العام بالمفتاح الخاص. تستخدم المصادقة التقليدية في اتجاه واحد فقط المفتاح العام للتشفير ، ويمكن فقط فك تشفير المفتاح الخاص. على سبيل المثال ، سيكون لخادم الويب زوج من المفاتيح الخاصة والمفاتيح العامة. يقوم عميل المتصفح بحفظ المفتاح العام للخادم. عندما يحتاج العميل إلى إرسال بيانات إلى الخادم ، فإنه يستخدم مفتاح الخادم العام لتشفيره. ثم ، عندما يتلقى الخادم البيانات ، فإنه يستخدم المفتاح الخاص لفك تشفيره. عندما يحقق العميل ما إذا كان الخادم خادمًا حقيقيًا ، فإنه سيقارن المفتاح العام الذي يوفره الخادم مع المحفوظ على المفتاح العام محليًا. فقط إذا كان ثابتًا ، يمكن التحقق من صحة الخادم.
في خادم التكوين الخاص بنا ، يمكن تشفير بعض البيانات التي لها متطلبات تشفير عالية وفك تشفيرها باستخدام خوارزمية RSA.
رمز مصدر المشروع
Gite Code Cloud
إنشاء keystore اختبار
نحتاج إلى استخدام أداة KeyTool التي تأتي مع JDK لإنشاء مفاتيح ، مما يحفظ المعلومات الرئيسية الخاصة ، واستخدام سطر الأوامر التالي:
keytool -genkeypair -alias config -server -key -keyalg rsa -dname "cn = config server ، ou = xuqian ، o = شركتي الخاصة ، l = beijing ، s = beijing ، c = cn" -keypass changeit
-keystore server.jks -storepass changeit
تقوم المعلمة -genkeypair بإنشاء زوج من المفاتيح العامة والمفاتيح الخاصة.
-يحدد Alias الاسم المستعار للمفتاح ، والذي يستخدم لتمييز مفاتيح مختلفة في نفس مفاتيح.
-keyalg يحدد الخوارزمية لتوليد المفاتيح ، ويتم استخدام RSA الافتراضي هنا
-يحدد الاسم الاسم الشائع ، أي CN ، للتحقق من هوية المفتاح. جميع العناصر هي معلمات مخصصة ، OU هي اسم الوحدة ، O هو اسم المؤسسة ، L هي المدينة ، S هي المقاطعة/الولاية ، و C هي البلد
-كيباس هو كلمة المرور للمفتاح
-keystore هو اسم ملف keystore
-Storepass Password للوصول إلى KeyStore
تقوم الأداة أعلاه بحفظ المفتاح الخاص الذي تم إنشاؤه في متجر مفتاح يسمى Server.jks. حتى الآن ، قمنا فقط بإنشاء مفاتيح خاصة. سيقوم SPRING Cloud Config Server بإنشاء مفتاح عام باستخدام البرنامج في كل مرة بناءً على المعلومات الرئيسية التي نقدمها. الرجوع إلى رمز المصدر أدناه.
org.springframework.security.rsa.crypto.keystorekeyfactory:
public keypair getKeyPair (سلسلة الاسم المستعار ، char [] password) {try {synchronized (lock) {if (store == null) {synchronized (lock) {// احصل على كائن المثيل الخاص بـ keystore استنادًا إلى عنوان ملف المفاتيح وكلمة المرور المقدمة من التكوين = keystore.getInstance (jks ") ؛ store.load (Resource.getInputStream () ، this.password) ؛ }}} // احصل على مفتاح خاص من keystore استنادًا إلى الاسم المستعار وكلمة المرور التي يوفرها التكوين RsapRivAtectKey Key = (rsaprivatectkey) store.getkey (الاسم المستعار ، كلمة المرور) ؛ // تحديد قواعد توليد المفاتيح العامة rsapublickeyspec spec = new rsapublickeyspec (key.getModulus () ، key.getPublicexponent ()) ؛ // إنشاء المفتاح العمومي publickey = keyfactory.getInstance ("RSA"). GeneratePublic (spec) ؛ إرجاع keypair الجديد (publickey ، مفتاح) ؛ } catch (استثناء e) {رمي جديد alficalstateException ("لا يمكن تحميل المفاتيح من المتجر:" + Resource ، e) ؛ }}يتم استخدام واجهة برمجة تطبيقات Java Security هنا للعمل على المفتاح. انظر الملاحظات. ثم يتم توفير المعلومات أعلاه من خلال ملف تكوين bootstrap.xml في configserver:
Encrypt: #Key: ThisismySecretkey Key-store: الموقع: ملف:
نظرًا لأننا لا نستطيع استخدام كل من التشفير المتماثل والتشفير غير المتماثل ، فإننا نعلق على تكوين incrypt.key وتحديد المعلمات الخاصة بالتشفير غير المتماثل:
امتحان
نستمر في تشفير بيانات الاختبار باستخدام واجهة برمجة تطبيقات Encrypt:
Curl http: // localhost: 8888/encrypt -d 23456789
إرجاع الأحرف المشفرة:
aqapwouh4wvexgggvv+bgtkc5e0d5aba8vuknzexh27hyksabw+wyzdwztbk5qyfxpocas413rdenidr2ez44nkjt5v+438/ vqexyszjzphp0xyxi9yiajqa3+ji+iwk8hrgtj4dzxikmitimcoirldzzgdm/yklmuvh7larsnumxxgklpdbkywdqhm57ob 6sb0ivm4h4ml1n4d3qucue7hh2f4aw4oln7xueymkrpttpy8opnbeezhrfmal/auvzqulu5jjmnjk9jiwoy+dstscviy/mz+d YPV6F4AFDDVVOG89SNMPZCUT+ZMB8JXHDJLOKY+63RG326WFFY9OPUIMW6/KCWZHV6VWS55HHQRY713W6YDBLRQ/GYC3WILS =
ثم اختبر فك التشفير
Curl Http: // localhost: 8888/decrypt -d aqapwouh4+bgtkc5e0d5aba8vuknzexh27hyksabw+wyzdwztbk5qyfxpocas413rdenidr2ez44nkjt5v+438/vqexys zjzphp0xyxi9yiajqa3+ji+iwk8hrgtj4dzxikmitimcoirldzzgdm/yklmuvh7larsnumxxgklpdbpkywdqhm57oB6sb0 IVM4H4ML1N4D3QUCUE7HH2F4AW4OLN7XUEYMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWOY+DSTSCVIY/MZ+DYP V6F4AFDDVVOG89SNMPZCUT+ZMB8JXHDJLOKY+63RG326WFFY9OPUIMW6/KCWZHV6VWS55HHQRY713W6YDBLRQ/GYC3WILS =
سوف يعود
23456789
يمكننا أيضًا تعديل web-client.yml للتحقق:
#Test: #Password: '{Cipher} 94c1027141add98447f0bebe13caebb6b38ed1dcf99811b1a5cd2b874c64407'user: password: '{cipher} aqapwouh4wvexggvv+bgtkc5e0d5aba8vuknzexh27hyksabw+wyzdwztbk5qyfxpocas413rdenidr2ez44nkjt5 V+438/VqexyszjzPhp0xyxi9yiajqa3+Ji+Iwk8hrgtj4dzxikmitimcoirldzzgdm/yklmuvh7larsnumxgklpdbkwdqhm 57OB6SB0IVM4H4ML1N4D3QUCUE7HH2F4AW4OLN7XUEYMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWOY+DSTSCVIY/MZ +dypv6f4afddvog89snmpzcut+zmb8jxhdjloky+63rg326wffy9opuimw6/kcwzhv6vws555hqry713w6ydblrq/gyc3wils = 'التعليق على test.password وأضف مستخدمًا جديدًا. password لاستخدام قيمة التكوين المشفرة. ثم أرسل مستودع Gitee والوصول إلى ملف التكوين هذا من خلال عنوان URL:
http: // localhost: 8888/web-client/default
يتم الحصول على النتائج التالية:
{"name": "Web-Client" ، "Profiles": ["Default"] ، "Label": NULL ، "الإصدار": "3044A5345FB86D09A043CA7404B9E57C8C13C512" ، " "https://gitee.com/zxuqian/spring-cloud-config-remote/web-laient.yml" ، "المصدر": {"الرسالة": "هذه الرسالة تأتي من مستودع التكوين عن بُعد" ، "Management.endpoints.web.exposure.include": "*" ، "user.password": "2345679}لخص
ما سبق هو إدخال Spring Cloud Config RSA وطريقة استخدام RSA لتشفير ملفات التكوين التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!