티스토리 뷰
1.운영체제 및 소프트웨어 버전
- Version
- OS: Windows 11
- Java: 11
- Spring Boot: 2.7.1
- jasypt: 3.0.4
2.시스템 환경변수를 이용한 Key(Password) 보관
Key(Password) 란, jasypt 암/복호화에 사용하는 키를 의미한다.
보관 방법으로 클래스 안에 Key(Password) 세팅 후 난독화하거나
시스템 환경변수에 세팅하고 코드에서 호출하는 방법 등이 있다.
시작 > 시스템 환경 변수 편집 > 시스템 속성(환경 변수) > 새로 만들기 > Key, Value 입력
3.jasypt dependency 추가
Spring Boot, jasypt 버전에 따라 호환 이슈에 대한 글이 종종 보인다.
버전을 반드시 확인하고 진행해야한다.
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
4.jasypt Configuration Class 생성
jasypt 구현 코드를 Bean 등록 후 application 실행 시 properties 파일에서
기본값으로 설정된 prefix = ENC(, suffix = )에 해당하는 문자열을 찾고
application 이 정상적으로 구성되도록 () 안에 내용을 복호화 한다.
@Configuration
@EnableEncryptableProperties
public class JasyptConfig {
private static final String PASSWORD = "시스템 환경 변수 Key";
@Bean("jasyptStringEncryptor")
StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
final String PASSWORD = System.getenv(PASSWORD);
config.setPassword(PASSWORD);
config.setAlgorithm("PBEWithMD5AndDES");
// 반복 해싱 횟수
config.setKeyObtentionIterations(1000);
config.setPoolSize(1);
// JVM 보안 프레임워크에 사전 등록된 공급자 명
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
return encryptor;
}
}
시스템 환경 변수 편집에서 생성한 Key(Password) 가져오기
private static final String PASSWORD = "시스템 환경 변수 Key";
final String PASSWORD = System.getenv(PASSWORD);
System.getenv(PASSWORD);
5.properties 파일 안에 암호화 대상 문자열
datasource.username/password 처럼 암호화가 필요한 대상은 문자열을 암호화 후 6번과 같이 적용해야 하는데
방법은 두 가지가 있으며 아래와 같다
첫 번째로 4번에서 생성한 빈의 encryptor.encrypt(“plain text”) 함수를 호출하여 암호화 문자열을 얻을 수 있고
두 번째로는 URL(free) 이용하는 방법으로 아래 이미지와 같이 적용하여 암호화 문자열을 얻을 수 있다.
6.암호화한 문자열 적용
properties file or yaml(yml) file 안에 아래와 같이 적용할 수 있다.
spring.datasource.admin.username=ENC(암호화된 문자열)
spring.datasource.admin.password=ENC(암호화된 문자열)
spring:
datasource:
admin:
username: ENC(암호화된 문자열)
password: ENC(암호화된 문자열)
jasypt reference
GitHub - ulisesbocchio/jasypt-spring-boot: Jasypt integration for Spring boot
Jasypt integration for Spring boot. Contribute to ulisesbocchio/jasypt-spring-boot development by creating an account on GitHub.
github.com
'Spring Boot' 카테고리의 다른 글
Letsencrypt certbot --standalone 안될 때(Feat. 후이즈) (0) | 2023.04.12 |
---|---|
Let's Encrypt 를 이용한 SSL 적용 (0) | 2023.03.27 |
- Total
- Today
- Yesterday
- querydsl
- CodePipeline
- logstash
- codedeploy
- AWS CodePipeline
- AWS 자동 배포
- ELK
- Spring boot
- CodeBuild
- letsencrypt
- 도메인 내부 테스트
- aws codebuild
- 시스템 환경변수
- Spring Data JPA
- JPA 벌크성 수정 쿼리
- Spring Boot 3.x
- 후이즈에서 AWS Route 53
- jasypt
- REST API
- Certbot
- aws codecommit
- AWS 로드밸런서 SSL 등록
- AWS MSK
- AWS Opensearch
- certonly
- aws codedeploy
- properties 암호화
- ssl nginx 라우팅
- 네임 서버 변경
- QueryDSL 사용 방법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |