Spring Cloud는 개발자에게 분산 시스템의 일반적인 모델을 신속하게 구축 할 수있는 다양한 도구를 제공합니다. 예를 들어, 구성 관리, 서비스 발견, 오프 라우팅, 지능형 라우팅, 마이크로 에이전트, 제어 버스, 일회성 토큰, 글로벌 잠금, 의사 결정 캠페인, 분산 세션, 클러스터 상태 등. 분산 시스템의 지원은 스프링 클라우드를 사용하는 많은 수의 모델을 필요로하며 이러한 패턴을 지원하는 서비스를 신속하게 설정할 수 있습니다. 개발자의 개인용 컴퓨터 또는 프로덕션 환경이든 클라우드 플랫폼이든 분산 환경에 적합합니다.
특성
Spring Cloud는 전형적인 솔루션과 확장 가능한 방법을 제공하는 데 중점을 둡니다.
소개
RSA 비대칭 암호화는 매우 강력한 보안을 가지고 있습니다. HTTPS SSL 암호화는이 방법을 사용하여 HTTPS 요청을 암호화하고 전송합니다. RSA 알고리즘에는 암호화 및 암호 해독에 대한 개인 키 및 공개 키가 포함되므로 비대칭 암호화라고합니다. 개인 키 및 공개 키는 상호 운용 가능합니다. 즉, 개인 키로 암호화 된 것은 공개 키로 암호화 될 수 있으며 공개 키로 암호화 된 것은 개인 키로 해독 할 수 있습니다. 기존의 일원 인증은 암호화를 위해 공개 키 만 사용하며 개인 키를 가진 사람들 만 해독 할 수 있습니다. 예를 들어, 웹 서버에는 한 쌍의 개인 키와 공개 키가 있습니다. 브라우저 클라이언트는 서버의 공개 키를 저장합니다. 클라이언트가 서버로 데이터를 보내야 할 때 서버의 공개 키를 사용하여 암호화합니다. 그런 다음 서버가 데이터를 수신하면 개인 키를 사용하여 해독합니다. 클라이언트가 서버가 실제 서버인지 확인하면 서버가 제공 한 공개 키와 공개 키를 로컬로 저장 한 공개 키를 비교합니다. 일관된 경우에만 서버의 진위를 확인할 수 있습니다.
구성 서버에서 암호화 요구 사항이 높은 일부 데이터는 RSA 알고리즘을 사용하여 암호화 및 해독 할 수 있습니다.
프로젝트 소스 코드
Gitee Code Cloud
테스트 키 스토어를 생성합니다
JDK와 함께 제공되는 KeyTool 도구를 사용하여 Keystore를 생성하여 개인 키 정보를 저장하고 다음 명령 행을 사용해야합니다.
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가 여기에서 사용됩니다.
-dname 키의 신원을 확인하기 위해 공통 이름, 즉 CN, 즉 CN을 지정합니다. 모든 항목은 사용자 정의 매개 변수, ou는 단위 이름, O는 조직 이름, L은 도시, S는 지방/주, C는 국가입니다.
-keypass는 키의 비밀번호입니다
-Keystore는 KeyStore의 파일 이름입니다
-StorePass 비밀번호 KeyStore에 액세스합니다
위의 도구는 생성 된 개인 키를 Server.jks라는 키 스토어에 저장합니다. 지금까지 우리는 개인 키 만 생성했습니다. Spring Cloud Config Server는 우리가 제공하는 주요 정보를 기반으로 프로그램을 사용하여 공개 키를 생성합니다. 아래 소스 코드를 참조하십시오.
org.springframework.security.rsa.crypto.keystorekeyfactory :
public kyypair getKeypair (문자열 별칭, char [] password) {try {synchronized (lock) {if (store == null) {synchronized (lock) {// 구성 요소 파일 주소와 configuration에서 제공 한 키 스토어 파일 주소와 비밀번호를 기반으로 keystore의 인스턴스 개체를 가져옵니다. store.load (resource.getInputStream (), this.password); }}} // 구성 rsaprivatecrtkey key = (rsaprivatecrtkey) store.getKey (별칭, 비밀번호)에서 제공하는 별칭 및 비밀번호를 기반으로 KeyStore에서 개인 키를 가져옵니다. // 공개 키 생성 규칙 정의 rsapublickeyspec spec = new rsapublickeyspec (key.getModulus (), key.getPubliceXponent ()); // 공개 key key publickey publickey = keyfactory.getInstance ( "rsa"). generatepublic (spec); New Keypair (Publickey, Key)를 반환합니다. } catch (예외 e) {새로운 불법 스테이트 exception 던지기 ( "매장에서 키를로드 할 수 없습니다 :" + resource, e); }}Java Security API는 여기에서 키에서 작동하는 데 사용됩니다. 메모를 참조하십시오. 그런 다음 위의 정보는 configserver의 bootstrap.xml configuration 파일을 통해 제공됩니다.
암호화 : #key : thisismysecretkey 키 스토어 : 위치 : 파일 : // $ {user.home} /development/keys/server.jks passport : ChangeIt alias : config-server-key Secret : ChangeIt대칭 암호화와 비대칭 암호화를 모두 사용할 수 없으므로 Encrypt.key 구성을 주석하고 비대칭 암호화에 대한 매개 변수를 지정합니다.
시험
암호화 API를 사용하여 테스트 데이터를 계속 암호화합니다.
컬 http : // localhost : 8888/encrypt -d 23456789
암호화 된 문자를 반환합니다.
aqapwouoh4wvexggvv+bgtkc5e0d5aba8vuknzexh27hyksabw+wyzdwztbk5qyfxpocas413rdenidr2ez44nkjt5v+438/ vqexyszjphp0xyxi9yiajqa3+ji+iwk8hrgtj4dzxikmitimcoirldzzzgdm/yklmuvh7larsnumxxgklpdbpkywdqhm57ob 6SB0IVM4H4ML1N4D3QUCUE7HHH2F4AW4OLN7XUEYMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JMNJK9JIWOY+DSTSCVIY/MZ+D ypv6f4afddvvog89snmpzcut+zmb8jxhdjloky+63rg326wffy9opuimw6/kcwzhv6vws55hhqry713w6ydblrq/gyc3wils =
그런 다음 암호 해독을 테스트하십시오
컬 http : // localhost : 8888/decrypt -d AQAPWOUOH4+BGTKC5E0D5ABA8VUKNZEXH27HYKSABW+WYZDWZTBK5QYFXPOCAS413RDENIDR2EZ44NKJT5V+438/VQEXYS zjzphp0xyxi9yiajqa3+ji+iwk8hrgtj4dzxikmitimcoirldzzzgdm/yklmuvh7larsnumxxgklpdbpkywdqhm57ob6sb0 ivm4h4ml1n4d3qucue7hhh2f4aw4oLn7xueyymkrpttpy8opnbeezhrfmal/auvzqulu5jmnjk9jiwoy+dstscviy/mz+dyp v6f4afddvvog89snmpzcut+zmb8jxhdjloky+63rg326wffy9opuimw6/kcwzhv6vws55hhqry713w6ydblrq/gyc3wils =
돌아올 것입니다
23456789
또한 Web-Client.yml을 수정하여 다음을 확인할 수 있습니다.
#TEST : #Password : '{Cipher} 94C1027141ADD9844C47F0BE13CAEBB6B38ED1DCF99811B1A5CD2B874C644407'USER : 비밀번호 : '{cipher} aqapwouoh4wvexggvv+bgtkc5e0d5aba8vuknzexh27hyksabw+wyzdwztbk5qyfxpocas413rdenidr2ez44nkjt5 V+438/VQExySzjZPhP0xYXi9YIaJqA3+Ji+IWK8hrGtJ4dzxIkmItimCOirLdZzZGDm/yklMUVh7lARSNuMxXGKlpdBPKYWdqHm 57OB6SB0IVM4H4ML1N4D3QUCUE7HH2F4AW4OLN7XUEYMKRPTTPY8OPNBEEZHRFMAL/AUVZQULU5JMNJK9JIWOY+DSTSCVIY/MZ +dypv6f4afddvvog89snmpzcut+zmb8jxhdjloky+63rg326wffy9opuimw6/kcwzhv6vws55hhqry713w6ydblrq/gyc3wils = 'test.password를 주석하고 새로운 user.password를 추가하여 암호화 된 구성 값을 사용하십시오. 그런 다음 gitee 저장소를 제출하고 URL을 통해이 구성 파일에 액세스하십시오.
http : // localhost : 8888/web-client/default
다음 결과가 얻어집니다.
{ "name": "web-client", "profiles": [ "default"], "label": null ","버전 ":"3044A5345FB86D09A043CA7404B9E57C13C512 ","state ": null,"propertysources ":"{이름 ": "https://gitee.com/zxuqian/spring-cloud-config-remote/web-client.yml", "source": { "message": "이 메시지는 원격 구성 저장소에서 나온다", "management.endpoints.web.exposure.include": "*", "user.password"}}}}요약
위의 것은 Spring Cloud Config RSA의 소개와 RSA를 사용하여 편집기가 소개 한 구성 파일을 암호화하는 방법입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!