Spring Cloud bietet Entwicklern eine Reihe von Tools, um schnell gemeinsame Modelle verteilter Systeme zu erstellen. Zum Beispiel: Konfigurationsmanagement, Service-Erkennung, Offrouting, intelligentes Routing, Mikroagenten, Steuerbus, einmalige Token, globale Sperren, Entscheidungskampagnen, verteilte Sitzungen, Clusterstatus usw. Die Unterstützung verteilter Systeme erfordert eine große Anzahl von Modellen, und Entwickler, die Spring-Cloud verwenden, können schnell Dienste und Anwendungen festlegen, die diese Muster unterstützen. Sie eignen sich für eine verteilte Umgebung, sei es der Personalcomputer- oder Produktionsumfeld eines Entwicklers oder eine Cloud -Plattform.
Merkmal
Spring Cloud konzentriert sich darauf, typische Lösungen und skalierbare Möglichkeiten bereitzustellen, die gut aus dem Box sind.
Einführung
Die asymmetrische RSA -Verschlüsselung hat eine sehr starke Sicherheit. Die HTTPS -SSL -Verschlüsselung verwendet diese Methode, um HTTPS -Anforderungen zu verschlüsseln und zu übertragen. Da der RSA -Algorithmus einen privaten Schlüssel und den öffentlichen Schlüssel zur Verschlüsselung und Entschlüsselung beinhaltet, wird er als asymmetrische Verschlüsselung bezeichnet. Privatschlüssel und öffentlicher Schlüssel sind interoperabel, dh diejenigen, die mit privatem Schlüssel verschlüsselt werden, können mit öffentlichem Schlüssel entschlüsselt werden, und diejenigen, die mit öffentlichem Schlüssel verschlüsselt werden, können mit privatem Schlüssel entschlüsselt werden. Die traditionelle Einwegauthentifizierung verwendet nur den öffentlichen Schlüssel für die Verschlüsselung, und nur diejenigen mit dem privaten Schlüssel können entschlüsseln. Beispielsweise hat ein Webserver ein Paar privater Schlüssel und öffentliche Schlüssel. Der Browser -Client speichert den öffentlichen Schlüssel des Servers. Wenn der Client Daten an den Server senden muss, verwendet er den öffentlichen Schlüssel des Servers, um sie zu verschlüsseln. Wenn der Server dann die Daten empfängt, verwendet er den privaten Schlüssel, um sie zu entschlüsseln. Wenn der Client überprüft, ob der Server ein echter Server ist, vergleichen er den vom Server bereitgestellten öffentlichen Schlüssel mit dem lokalen gespeicherten öffentlichen Schlüssel. Nur wenn es konsistent ist, kann die Authentizität des Servers überprüft werden.
In unserem Konfigurationsserver können einige Daten mit hohen Verschlüsselungsanforderungen verschlüsselt und mit dem RSA -Algorithmus entschlüsselt werden.
Projektquellcode
Gitee Code Cloud
Test Keystore generieren
Wir müssen das KeyTool -Tool verwenden, das mit JDK geliefert wird, um einen Keystore zu generieren, der die privaten Schlüsselinformationen speichert, und die folgende Befehlszeile verwenden:
keytool -genkeypair -alias config -server -key -keyalg rsa -Dname "cn = config Server, ou = xuqian, o = meine eigene Firma, L = Beijing, S = Beijing, C = CN" -Keypass Changeit
-Keystore server.jks -storepass Change
Der Parameter -Genkeypair erzeugt ein Paar öffentliche Schlüssel und private Schlüssel.
-Alias gibt den Alias des Schlüssels an, mit dem verschiedene Schlüssel im selben Keystore unterschieden werden.
-Keyalg Gibt den Algorithmus zum Generieren von Schlüssel an, und die Standard -RSA wird hier verwendet
-Dname gibt den gebräuchlichen Namen an, dh CN, um die Identität des Schlüssels zu überprüfen. Alle Elemente sind benutzerdefinierte Parameter, OU ist der Name der Einheit, o der Organisationsname, L ist die Stadt, S ist die Provinz/den Staat und C ist das Land
-Keypass ist das Passwort für die Schlüssel
-KeyStore ist der Dateiname des Keystore
-Storepass Passwort, um auf Keystore zuzugreifen
Das obige Tool speichert den generierten privaten Schlüssel in einem Schlüsselspeicher namens Server.jks. Bisher haben wir nur private Schlüssel generiert. Spring Cloud Config Server generiert jedes Mal einen öffentlichen Schlüssel, der das Programm basierend auf den von uns bereitgestellten Schlüsselinformationen verwendet. Siehe den folgenden Quellcode.
org.springframework.security.rsa.crypto.KeyStoreKeyFactory:
public keypair getKeypair (String alias, char [] password) {try {synchronized (lock) {if (store == null) {synchronized (sperre) {// das Instanzobjekt des Keystore basierend auf der Keystore -Datei und Kennwort abrufen; store.load (ressource.getInputStream (), this.password); }}} // Erhalten Sie einen privaten Schlüssel aus dem Keystore basierend auf dem Alias und dem Kennwort, das durch die Konfiguration rsaprivatecrtkey key = (rsaprivatecrtkey) Store.getKey (Alias, Passwort) angegeben ist. // Regeln der öffentlichen Schlüsselgenerierung definieren rsapublickeySpec = new RsapublickeySpec (key.getModulus (), key.getPublicexponent ()); // public keyKey publicKey generieren. Neue Tastatur zurückgeben (PublicKey, Key); } catch (Ausnahme E) {neue IllegalStateException werfen ("kann nicht Schlüssel aus dem Geschäft laden:" + Ressource, e); }}Die Java -Sicherheits -API wird hier verwendet, um den Schlüssel zu betreiben. Siehe Notizen. Anschließend werden die oben genannten Informationen über die Konfigurationsdatei von Bootstrap.xml in ConfigServer bereitgestellt:
ENCRYPT: #Key: thisismySecretkey Key Store: Standort: Datei: // $ {user.home} /development/keys/server.jks Passwort: ChangeIt alias: config-server-key Secret: ChangeItDa wir nicht sowohl die symmetrische Verschlüsselung als auch die asymmetrische Verschlüsselung verwenden können, kommentieren wir die Konfiguration von Encrypt.key und geben die Parameter für die asymmetrische Verschlüsselung an:
prüfen
Wir verschlüsseln weiterhin eine Testdaten mit der Verschlüsselungs -API:
curl http: // localhost: 8888/verschlüsseln -d 23456789
Gibt die verschlüsselten Zeichen zurück:
AQAPWOUOH4WVEXGGVV+BGTKC5E0D5ABA8VUKNZEXH27HYKSABW+WYZDWZTBK5QYFXPOCAS413RDEIDR2EZ44NKJT5V+438/ VqexyszjzPhp0xyxi9yiajqa3+ji+iwk8Hrgtj4dzxikmitimcoirldzzzgdm/yklMuvH7larsnumxxgklpdbpkywdqHM57OB 6SB0IVM4H4ML1N4D3QUCUE7HH2F4AW4OLN7XUEMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWOY+DSTSCVIY/MZ+D ypv6f4afddvvog89snmpzcut+Zmb8JxHdjloky+63RG326Wffy9OPUIMW6/KCWZHV6VWS55HHQRY713W6YDBLRQ/GYC3WILS =
Testen Sie dann die Entschlüsselung
curl http: // localhost: 8888/entschlüsseln -d AQAPWOUOH4+BGTKC5E0D5ABA8VUKNZEXH27HYKSABW+WYZDWZTBK5QYFXPOCAS413RDEIDR2EZ44NKJT5V+438/VQEXYS ZJZPHP0XYXI9YIAJQA3+JI+IWK8HRGTJ4DZXIKMITIMCORLDZZZGDM/YKLMUVH7LARSNUMXXGKLPDBPKYWDQHM57OB6SB0 IVM4H4ML1N4D3QUCUE7HHH2F4AW4OLN7XUEMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWOY+DSTSCVIY/MZ+DYP V6F4AFDDVVOG89SNMPZCUT+ZMB8JXHDJLOKY+63RG326WFFY9OPUIMW6/KCWZHV6VWS55HHQRY713W6YDBLRQ/GYC3WILS =
Wird zurückkehren
23456789
Wir können auch Web-Client.yml ändern, um dies zu überprüfen:
#Test: #Password: '{Cipher} 94C1027141Add9844ec47f0be13Caebb6b38ed1DCF99811B1A5CD2B874C64407'USER: Passwort: Passwort: Passwort: '{Cipher} aqapwouOH4WVExGGVV+BGTKC5E0D5ABA8VUKNZEXH27HYKSABW+WYZDWZTBK5QYFXPOCAS413RDENIDR2EZ44NKJT5 V+438/vqexyszjzphp0xyxi9yiajqa3+ji+iwk8hrgtj4dzxikmitimcoirldzzzgdm/yklMuvh7larsnumxxgklpdbpkywdqHM 57OB6SB0IVM4H4ML1N4D3QUCUE7HH2F4AW4OLN7XUEMKRPTTPY8OPNNBEEZHRFMAL/AUVZQULU5JJMNJK9JIWOY+DSTSCVIY/MZ +dypv6f4afddvvog89snmpzcut+zmb8jxhdjloky+63RG326Wffy9OPUIMW6/KCWZHV6VWS55HHQRY713W6YDBLRQ/GYC3WILS = ''Kommentieren Sie test.password und fügen Sie einen neuen Benutzer hinzu. Password, um verschlüsselten Konfigurationswert zu verwenden. Senden Sie dann das Gitee -Repository und greifen Sie auf diese Konfigurationsdatei über die URL zu:
http: // localhost: 8888/Web-Client/Standard
Die folgenden Ergebnisse werden erzielt:
{"Name": "Web-Client", "Profiles": ["Standard"], "Label": null, "Version": "3044A5345fb86d09a043ca7404b9e57c8c13c512", "Status": Null, Eigenschaften ": [{" Name ": [{{" name ": [{{" name ": [{{" name ": [{{" name ": [{{" name " "https://gitee.com/zxuqian/spring-cloud-config-remote/web-client.yml", "Quelle": {"meldung": "Diese Nachricht stammt aus dem Remote-Konfigurationsrepository.Zusammenfassen
Die oben genannte Einführung der Spring Cloud -Konfiguration RSA und die Methode zur Verwendung von RSA zur Verschlüsselung von Konfigurationsdateien, die der Editor Ihnen vorgestellt hat. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!