티스토리 뷰
설정파일에 비밀번호와 같은 민감정보를 저장하는 경우가 있는데, 보안을 위해 암호화 하는 방법을 알아보겠다.
암호화에는 jasypt( Java Simplified Encryption ) 자바 암호화 라이브러리를 사용하였다.
먼저, Springboot 용 라이브러리 및 BouncyCastle 라이브러리 를 추가한다.
compile (group: 'com.github.ulisesbocchio', name: 'jasypt-spring-boot-starter', version: '2.1.1')
compile group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.61'
Configuration 클래스에 @EnableEncryptableProperties를 추가해주고, 암호화에 사용할 빈을 생성한다.
예제에서는 PBE( Password Based Encryption ) 를 사용하고, SHA256, AES128 사용을 위해 BouncyCastle 라이브러리를 사용한다.
BouncyCastle 은 PBE에 보다 많은 알고리즘을 제공해 준다.
@Configuration
@EnableEncryptableProperties
public class PropertyEncyptConfiguration {
@Bean("encryptorBean")
public PooledPBEStringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setProvider(new BouncyCastleProvider());
encryptor.setPoolSize(2);
encryptor.setPassword("xoxo");
encryptor.setAlgorithm("PBEWithSHA256And128BitAES-CBC-BC");
return encryptor;
}
}
테스트 코드에, 암호화할 데이터를 암복호화 해본다.
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setProvider(new BouncyCastleProvider());
encryptor.setPoolSize(2);
encryptor.setPassword("xoxo");
encryptor.setAlgorithm("PBEWithSHA256And128BitAES-CBC-BC");
String plainText = "test";
String encryptedText = encryptor.encrypt(plainText);
String decryptedText = encryptor.decrypt(encryptedText);
System.out.println("Enc:"+encryptedText+", Dec:"+decryptedText);
Enc:iLe7hTPNHCF+o2vbKDpict0DKEhtSTBHuJk4mw1Tiheg6WdSwyJ96B1hejJTf+sp, Dec:test
설정 파일에, 암호화를 하는 bean 이름을 지정해 주고, 암호화된 내용을 작성해 준다.
jasypt:
encryptor:
bean: encryptorBean
password: ENC(iLe7hTPNHCF+o2vbKDpict0DKEhtSTBHuJk4mw1Tiheg6WdSwyJ96B1hejJTf+sp)
'Spring' 카테고리의 다른 글
[ Springboot ] Springboot 내장 tomcat 버전 (2) | 2020.05.27 |
---|---|
[ Springboot ] ResponseEntity 란 (0) | 2020.05.25 |
[ Springboot ] 주기적으로 실행 되는 Schedule 기능 사용하기 (0) | 2020.05.20 |
[ Spring ] Http header max size (0) | 2020.05.19 |
[ Spring Boot ] X-Frame-Options 설정 (0) | 2020.03.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- gradle
- plugin
- elasticsearch
- Linux
- Index
- Size
- maven
- scala
- docker
- Postman
- Spark
- SpringBoot
- logstash
- install
- Filter
- intellij
- Container
- JPA
- AWS
- apm
- Log
- Kibana
- mac
- spring boot
- JSON
- Git
- Java
- spring
- error
- tomcat
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함