Spring Cloud ให้เครื่องมือที่หลากหลายแก่นักพัฒนาในการสร้างแบบจำลองทั่วไปของระบบกระจาย ตัวอย่างเช่น: การจัดการการกำหนดค่า, การค้นพบบริการ, การกำหนดเส้นทาง, การกำหนดเส้นทางอัจฉริยะ, ตัวแทนไมโคร, บัสควบคุม, โทเค็นครั้งเดียว, ล็อคทั่วโลก, แคมเปญการตัดสินใจ, เซสชันกระจาย, สถานะคลัสเตอร์ ฯลฯ ความช่วยเหลือของระบบกระจายต้องใช้แบบจำลองจำนวนมากและนักพัฒนา พวกเขาจะเหมาะสำหรับสภาพแวดล้อมแบบกระจายใด ๆ ไม่ว่าจะเป็นคอมพิวเตอร์ส่วนบุคคลหรือสภาพแวดล้อมการผลิตของนักพัฒนาหรือแพลตฟอร์มคลาวด์
ลักษณะ
Spring Cloud มุ่งเน้นไปที่การให้บริการโซลูชั่นทั่วไปและวิธีที่ปรับขนาดได้ซึ่งดีนอกกรอบ
การแนะนำ
การเข้ารหัสแบบไม่สมมาตรของ RSA มีความปลอดภัยที่แข็งแกร่งมาก การเข้ารหัส HTTPS SSL ใช้วิธีนี้เพื่อเข้ารหัสและส่งคำขอ HTTPS เนื่องจากอัลกอริทึม RSA เกี่ยวข้องกับคีย์ส่วนตัวและคีย์สาธารณะสำหรับการเข้ารหัสและการถอดรหัสจึงเรียกว่าการเข้ารหัสแบบไม่สมมาตร คีย์ส่วนตัวและคีย์สาธารณะสามารถทำงานร่วมกันได้นั่นคือสิ่งที่เข้ารหัสด้วยคีย์ส่วนตัวสามารถถอดรหัสด้วยคีย์สาธารณะและผู้ที่เข้ารหัสด้วยคีย์สาธารณะสามารถถอดรหัสด้วยคีย์ส่วนตัว การรับรองความถูกต้องทางเดียวแบบดั้งเดิมจะใช้คีย์สาธารณะสำหรับการเข้ารหัสเท่านั้นและเฉพาะผู้ที่มีคีย์ส่วนตัวเท่านั้นที่สามารถถอดรหัสได้ ตัวอย่างเช่นเว็บเซิร์ฟเวอร์จะมีคีย์ส่วนตัวและคีย์สาธารณะ ไคลเอนต์เบราว์เซอร์บันทึกคีย์สาธารณะของเซิร์ฟเวอร์ เมื่อไคลเอนต์ต้องการส่งข้อมูลไปยังเซิร์ฟเวอร์จะใช้คีย์สาธารณะของเซิร์ฟเวอร์เพื่อเข้ารหัส จากนั้นเมื่อเซิร์ฟเวอร์ได้รับข้อมูลจะใช้คีย์ส่วนตัวเพื่อถอดรหัส เมื่อไคลเอนต์ตรวจสอบว่าเซิร์ฟเวอร์เป็นเซิร์ฟเวอร์จริงหรือไม่มันจะเปรียบเทียบคีย์สาธารณะที่ให้โดยเซิร์ฟเวอร์กับคีย์สาธารณะที่บันทึกไว้ในเครื่อง เฉพาะในกรณีที่มีการตรวจสอบความถูกต้องของเซิร์ฟเวอร์ที่สอดคล้องกัน
ในเซิร์ฟเวอร์ config ของเราข้อมูลบางอย่างที่มีข้อกำหนดการเข้ารหัสสูงสามารถเข้ารหัสและถอดรหัสโดยใช้อัลกอริทึม RSA
ซอร์สโค้ดโครงการ
Gitee Code Cloud
สร้างคีย์ทดสอบ
เราจำเป็นต้องใช้เครื่องมือ keytool ที่มาพร้อมกับ JDK เพื่อสร้างคีย์สโตร์ซึ่งจะช่วยประหยัดข้อมูลคีย์ส่วนตัวและใช้บรรทัดคำสั่งต่อไปนี้:
keytool -genkeypair -alias config -server -key -keyalg rsa -dname "cn = config server, ou = xuqian, o = บริษัท ของฉันเอง, l = ปักกิ่ง, s = ปักกิ่ง, c = cn"
-KeyStore Server.jks -storepass Changeit
พารามิเตอร์ -genKeypair สร้างคีย์สาธารณะคู่หนึ่งและปุ่มส่วนตัว
-Alias ระบุนามแฝงของคีย์ซึ่งใช้เพื่อแยกความแตกต่างของคีย์ที่แตกต่างกันในคีย์สโตร์เดียวกัน
-Keyalg ระบุอัลกอริทึมสำหรับการสร้างคีย์และใช้ RSA เริ่มต้นที่นี่
-DNAME ระบุชื่อสามัญนั่นคือ CN เพื่อตรวจสอบตัวตนของคีย์ รายการทั้งหมดเป็นพารามิเตอร์ที่กำหนดเอง OU เป็นชื่อหน่วย o คือชื่อองค์กร L คือเมือง S คือจังหวัด/รัฐและ C คือประเทศ
-KEYPASS คือรหัสผ่านสำหรับคีย์
-KeyStore เป็นชื่อไฟล์ของคีย์สโตร์
-รหัสผ่านรหัสผ่านเพื่อเข้าถึง Keystore
เครื่องมือด้านบนบันทึกคีย์ส่วนตัวที่สร้างขึ้นในร้านค้าคีย์ที่เรียกว่า Server.jks จนถึงตอนนี้เราได้สร้างกุญแจส่วนตัวเท่านั้น Spring Cloud Config Server จะสร้างคีย์สาธารณะโดยใช้โปรแกรมในแต่ละครั้งตามข้อมูลคีย์ที่เรามีให้ อ้างถึงซอร์สโค้ดด้านล่าง
org.springframework.security.rsa.crypto.keystorekeyfactory:
แป้นพิมพ์สาธารณะ getKeypair (สตริงนามแฝง, ถ่าน [] รหัสผ่าน) {ลอง {ซิงโครไนซ์ (ล็อค) {ถ้า (store == null) {ซิงโครไนซ์ (ล็อค) {// รับวัตถุอินสแตนซ์ของคีย์สโตร์ตามที่อยู่ไฟล์และรหัสผ่านที่กำหนดโดยการกำหนดค่า = Keystore.getInstance store.load (resource.getInputStream (), this.password); }}} // รับคีย์ส่วนตัวจากที่คีย์ตามนามแฝงและรหัสผ่านที่จัดทำโดยการกำหนดค่า rsaprivateCrtkey key = (rsaprivateCrtkey) store.getKey (นามแฝง, รหัสผ่าน); // กำหนดกฎการสร้างคีย์สาธารณะ RSAPUBLICKEYSPEC SPEC = ใหม่ RSAPUBLICKEYSPEC (key.getModulus (), key.getPublicexponent ()); // สร้างคีย์สาธารณะ PublicKey PublicKey = keyFactory.getInstance ("RSA"). GeneratePublic (Spec); ส่งคืนแป้นพิมพ์ใหม่ (PublicKey, Key); } catch (exception e) {โยน unlueLstateException ใหม่ ("ไม่สามารถโหลดคีย์จากร้านค้า:" + ทรัพยากร, e); -Java Security API ใช้ที่นี่เพื่อใช้งานบนคีย์ ดูหมายเหตุ จากนั้นข้อมูลข้างต้นจะถูกจัดเตรียมผ่านไฟล์การกำหนดค่า bootstrap.xml ใน configserver:
Encrypt: #Key: thisismysecretkey key-store: สถานที่: ไฟล์: // $ {user.home} /development/keys/server.jks รหัสผ่าน: เปลี่ยนนามแฝง: config-server-key secret: Changeitเนื่องจากเราไม่สามารถใช้ทั้งการเข้ารหัสแบบสมมาตรและการเข้ารหัสแบบอสมมาตรเราจึงแสดงความคิดเห็นการกำหนดค่า ENCRYPT.KEY และระบุพารามิเตอร์สำหรับการเข้ารหัสแบบอสมมาตร:
ทดสอบ
เรายังคงเข้ารหัสข้อมูลทดสอบโดยใช้ Encrypt API:
Curl http: // localhost: 8888/encrypt -d 23456789
ส่งคืนอักขระที่เข้ารหัส:
aqapwouoh4wvexggvv+bgtkc5e0d5aba8vuknzexh27hyksabw+wyzdwztbk5qyfxpocas413rdenidr2ez44nkjt5v+438/438/ vqexyszjzphp0xyxi9yiajqa3+ji+iwk8hrgtj4dzxikmitimcoirldzzgdm/yklmuvh7larsnumxgklpdbpkywdqhm57obhm57obhm57obhm57obhm57obhm57obhm57obhm57obhm57obhm57Obhm57Obhm57Obhm57 6SB0IVM4H4ML1N4D3QUCUE7H2F4AW4OLN7XUEYMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWOY+DSTSCVIY/MZ+D YPV6F4AFDDVVOG89SNMPZCUT+ZMB8JXHDJLOKY+63RG326WFFY9OPUIMW6/KCWZHV6VWS55HHQRY713W6YDBLRQ/GYC3WILS =
จากนั้นทดสอบการถอดรหัส
Curl http: // localhost: 8888/decrypt -d aqapwouoh4+bgtkc5e0d5aba8vuknzexh27hyksabw+wyzdwztbk5qyfxpocas413rdenidr2ez44nkjt5v+438/vqexys ZJZPHP0XYXI9YIAJQA3+JI+IWK8HRGTJ4DZXIKMITIMCOIRLDZZZGDM/YKLMUVH7LARSNUMXXGKLPDBPKYWDQHM57OB6SB0SB0SB0SB0SB0SB0SB0SB0SB0SB0 IVM4H4ML1N4D3QUCUE7HH2F4AW4OLN7XUEYMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWOY+DSTSCVIY/MZ+DYP V6F4AFDDVVOG89SNMPZCUT+ZMB8JXHDJLOKY+63RG326WFFY9OPUIMW6/KCWZHV6VWS55HHQRY713W6YDBLRQ/GYC3WILS =
จะกลับมา
23456789
นอกจากนี้เรายังสามารถแก้ไข web-client.yml เพื่อตรวจสอบ:
#Test: #Password: '{Cipher} 94C1027141ADD9844EC47F0BE13CAEBB6B38ED1DCF99811B1A5CD2B874C64407'USER: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน: รหัสผ่าน '{cipher} aqapwouoh4wvexggvv+bgtkc5e0d5aba8vuknzexh27hyksabw+wyzdwztbk5qyfxpocas413rdenidr2ez44444444 V+438/VQEXYSZJZPHP0XYXI9YIAJQA3+JI+IWK8HRGTJ4DZXIKMITIMCOIRLDZZZGDM/YKLMUVH7LARSNUMXXGKLPDBPKYWDQHM 57OB6SB0IVM4H4ML1N4D3QUCUE7H2F4AW4OLN7XUEYMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWOY+DSTSCVIY/MZ +DYPV6F4AFDDVVOG89SNMPZCUT+ZMB8JXHDJLOKY+63RG326WFFY9OPUIMW6/KCWZHV6VWS55HHQRY713W6YDBLRQ/GYC3WILS = 'แสดงความคิดเห็น test.password และเพิ่ม user.password ใหม่เพื่อใช้ค่าการกำหนดค่าที่เข้ารหัส จากนั้นส่งที่เก็บ Gitee และเข้าถึงไฟล์กำหนดค่านี้ผ่าน URL:
http: // localhost: 8888/web-client/default
ได้ผลลัพธ์ต่อไปนี้:
{"ชื่อ": "เว็บลูกค้า", "โปรไฟล์": ["ค่าเริ่มต้น"], "ป้ายกำกับ": null, "เวอร์ชัน": "3044a5345fb86d09a043ca7404b9e57c8c13c512" "https://gitee.com/zxuqian/spring-cloud-config-remote/web-client.yml", "แหล่งที่มา": {"ข้อความ": "ข้อความนี้มาจากที่เก็บการกำหนดค่าระยะไกล", "การจัดการ.สรุป
ด้านบนคือการแนะนำของ Spring Cloud Config RSA และวิธีการใช้ RSA เพื่อเข้ารหัสไฟล์การกำหนดค่าที่ตัวแก้ไขแนะนำให้คุณ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!