
1.build.gradle> dependancies에
implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.3'
추가
gradle 프로젝트 다시로드
2. 클래스 추가
@Configuration
@EnableEncryptableProperties
public class JasyptConfig {
@Value("${jasypt.encryptor.password}")
private String PASSWORD;
@Bean("jasyptStringEncryptor")
public StringEncryptor stringEncryptor(){
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(PASSWORD);
config.setPoolSize("1");
config.setAlgorithm("PBEWithMD5AndDES");
config.setStringOutputType("base64");
config.setKeyObtentionIterations("1000");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
encryptor.setConfig(config);
return encryptor;
}
}
@Value("${jasypt.encryptor.password}")
private String PASSWORD;
private String PASSWORD;
-> 암호화 키를 숨기기 위해서 빼놓는다.
3.

실행/디버그 구성>실행 옵션추가> VM옵션 추가 >-Djasypt.encryptor.password=[암호화키] 입력
-> 여기에 있는 키로 민감정보들을 암호화 한다. 따라서 실행조건에 빼놓는다.
4.
@SpringBootTest
public class JasyptTest {
@Autowired
private JasyptConfig jasyptConfig;
@DisplayName("1. 암/복호화 테스트")
@Test
void test_1(){
String url = "db주소";
String username = "사용자이름";
String password = "패스워드";
System.out.println("url: ENC(" + jasyptConfig.stringEncryptor().encrypt(url) + ")");
System.out.println("username: ENC(" + jasyptConfig.stringEncryptor().encrypt(username)+ ")");
System.out.println("password: ENC(" + jasyptConfig.stringEncryptor().encrypt(password)+ ")");
}
}
테스트 코드 작성
참고:

테스트 환경을 실행할 때는 vm옵션이 아니라 환경변수에 -D를 빼고 jasypt.encryptor.password=[암호화키] 입력
이거 왜 테스트 환경에서 세팅 안되는지 모르겠는데 왜 안되는지 찾다가 시간 많이 소요됨ㅜㅜ
4. .yml에 각각의 요소들을
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ENC(암호화된DB주소입력)
username: ENC(암호화된사용자이름입력)
password: ENC(암호화된패스워드입력)
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: ENC(암호화된DB주소입력)
username: ENC(암호화된사용자이름입력)
password: ENC(암호화된패스워드입력)
입력.
그럼 잘 돌아간다 ~
'개발일지 > spring' 카테고리의 다른 글
SpringBoot 스프링부트 WAR 배포하는 법 (내장톰캣 말고 외장톰캣) (0) | 2023.09.14 |
---|---|
SpringBoot 스프링부트 내장톰캣 사용하려면 build.gradle에 이걸 추가한다. (0) | 2023.09.10 |
SpringBoot 스프링부트 yml jpa 설정 show_sql, format_sql, use_sql_comments, physical-strategy (0) | 2023.06.01 |
SpringBoot 스프링부트 프로파일 설정하기/ Junit 테스트 시 스프링 프로파일 (0) | 2023.05.25 |
vue-cli 프로젝트 정리하기, 테스트 실행 명령어 추가하기 (0) | 2023.05.12 |