Java/Spring Boot

[MSA] Spring Cloud로 MSA를 개발해보자 7편 [설정 정보 암호화]

누리는 귀여워 2024. 8. 28. 00:43

오늘은 대칭키와 비대칭키를 이용한 암/복호화, user-service application.yml의 설정 일부를 config-service으로 옮긴 뒤 config-service의 설정을 사용하게 할 것이다.

그리고 설정파일의 정보를 암호화할 것이다

1. 암호화의 종류

1). Symmetric Encryption (대칭키 : 암호화, 복호화 키가 동일)

- Using the same key

 

2). Asymmetric Encryption (비대칭키 : 암호화, 복호화 키가 다름)

- Private and Public Key : 암호화 or 복호화 할 때 Private 키와 Public 키를 사용함(중복 안되게)

- Using Java keytool : 자바에서 제공하는 암호화, 복호화 인터페이스

 

2. 암호화/복호화

1). 대칭키

(1). 암호화

// config-service -> bootstrap.yml
encrypt:
  key: abcdefg5654

 

 

(2). 복호화

 

 

config-service -> application.yml에 있는 search-locations 폴더로 이동한 뒤

name이 붙은 .yml파일 [user-service.yml]을 읽어오고 

active: dev를 사용하면 [user-service-dev.yml]을 불러온다

// user-service -> bootstrap.yml
spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: user-service
# profiles:
# active: dev

 

DB 비번 암호화 한 뒤 user-service 설정파일에 등록

config-server에 설정된 폴더에 있는 user-service.yml에 DB 정보를 옮긴 뒤 비밀번호에 암호화 값을 입력

password: '{cipher}5e9e9718fbf40c6838248cb7ff6e329f6bc329193d0b79349de8ff70d38c2f79'

 

 

문제없이 DB에 접속된다

 

2). 비대칭키

(1). 키 생성

 

(2). 키 정보

 

(2). Public Key 추출

 

(2). Public Key를 .jks로 생성

 

 

(3). 공개키, 비공개키  생성 완료

 

(4). 비대칭키 암호화

 

(5). 비대칭키 복호화

 

(5). 비대칭키 암호화 테스트

 

 

gateway-service -> bootstrap.yml

spring:
  cloud:
    config:
      uri: http://127.0.0.1:8888
      name: ecommerce

 

ecommerce.yml

token:
  expiration_time: 864000000
  secret: user_token_native_application

gateway:
  ip: 127.0.0.1

 

ecommerce.yml

token:
  expiration_time: 864000000
  secret: '{cipher}AQAuwBMyHFEV48g6WqKETRy4OmhnnVr5Mykut9yZpM+Awe6Io07bcboMvUSG2EQeRlKMfNdFU220ilVBhVQqn2kuQTcBRfHDkxYPIIys0kZ0pI3LRC3OhFuUhzxHEmmBqcL2kq7tjncamff/Y4IC2odnwx4eq04qYKgCvTUwXN7Wq8L4Q5zdP58onCSrpCvNA6945a+zkReYlVnvojPARFioG3CxC5y8PVjfNVFp95IVOHUsegOay11qb40wd49UdOxuFtBTP8vD4l6wbR5g3KLt+sQDX/92n85Fn8js9MR3ZqeF4HhlLRMVLAxaQmf64sjyFTWxgRxTLvwo+URVamrlwsh0R8T1rFv3x4l0iVdK7VETfiWmN16pAjiJlGQLMNOGYEKRL9ybU1clmgs9vShh'

gateway:
  ip: 127.0.0.1

 

 

 

잘 적용되었다.