
Private and Public Key✅ 참고
- Java Cryptography Extension (JCE)
- Windows
- Oracle JDK
{user.home}\Program Files\Java\jdk-13.0.2\conf\security- MacOS
- Oracle JDK ➡{user.home}/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre/lib/security
- Open JDK
➡{user.home}/Library/Java/JavaVirtualMachines/openjdk-14.0.2/Contents/Home/conf/security
Config Server
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
encrypt:
key: abcdefghijklmnopqrstuvwxyz0123456789 #임의
💡 추가 설명
대칭 암호화 방식
Spring Cloud Config Server에서는 보통AES(Advanced Encryption Standard)같은 대칭 암호화 알고리즘을 사용
➡ 대칭 암호화는 동일한 키로 데이터를 암호화하고 복호화하는 방식abcdefghijklmnopqrstuvwxyz0123456789라는 32바이트 키는AES 알고리즘의 대칭 암호화의 키로 사용
Encrypt (암호화)

Decrypt (복호화)

1. user-service
# datasource:
# driver-class-name: org.h2.Driver
# url: jdbc:h2:mem:testdb
# username: sa
# password: 1234
➡ Database 설정 정보를 User-service의 application.yml에서 직접 설정하여 적용하는 것이 아니라, Config Server에서 user-service.xml을 만들어 적용할 것이기 때문에 주석
spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: user-service #사용하려는 Config 설정 파일 이름 지정
# profiles:
# active: dev
2. Config 설정 파일 경로에 user-service.yml 파일 추가
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testdb
username: sa
password: 1234
token:
expiration_time: 86400000
secret: my_secret_token_by_1126_#2
gateway:
ip: 192.168.0.100
3. 암호화 키값 확인
Encrypt하여 기존 비밀번호 1234에 대한 암호화된 비밀번호 값 확인
4. Config Server의 user-service.yml에 암호화된 비밀번호 설정
➡ 2번의 파일과 동일하며, spring.datasource.password의 값만 암호화된 데이터로 변경함
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testdb
username: sa
password:
'{cipher}e7327ff17b1b5f955b92043b1dc89a2e44898843fc3cece6ac54656a93277fe0'
#암호화된 비밀번호
token:
expiration_time: 86400000
secret: my_secret_token_by_1126_#2
gateway:
ip: 192.168.0.100
1. 비밀번호 확인

➡ 평문 데이터가 사용됨을 확인 가능
➡ 저장 시점에서 Plain Text가 아닌 암호화된 비밀번호가 저장됨을 알 수 있음
💡 참고
1. 올바르지 않은 암호화된 비밀번호 설정 시
➡ 실행 결과가<n/a>로 표시 됨# 예시 spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:testdb username: sa password: '{cipher}e7327ff17b1b5f955b92043b1dc89a2e44898843fc3cece6ac54656a93277fe0_wrong' # 실행결과 invalid.spring.datasource.password : "<n/a>"
- 암호화 표시 (
{cipher})를 안했을 경우
➡ 설정된 비밀번호가 암호화된 데이터가 아닌 평문의 텍스트로 입력된 데이터로 인식됨# 예시 spring: datasource: driver-class-name: org.h2.Driver url: jdbc:h2:mem:testdb username: sa password: '7327ff17b1b5f955b92043b1dc89a2e44898843fc3cece6ac54656a93277fe0' # 실행결과 spring.datasource.password : "7327ff17b1b5f955b92043b1dc89a2e44898843fc3cece6ac54656a93277fe0"
2. H2 Database 접속
➡ 127.0.0.1:{port번호}/h2-console
비밀번호 미입력 시

올바른 비밀번호 입력 시
