스프링에서 jasypt를 적용해서 properties 암호화 적용하는 방법 정리
1. properties 파일 만들기
Encrypt.java를 실행하여 암호화 된 값 생성. "password_key"라는 password로 암호화 스트링 생성
- 구글 검색하다 찾은 소스. 출처 미정
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; public class Encrypt { public static void main(String[] args) { StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor(); pbeEnc.setPassword("password_key"); // PBE 값(XML PASSWORD설정) String url = pbeEnc.encrypt("jdbc:derby://127.0.0.1:8133/derby_dev"); String username = pbeEnc.encrypt("dev"); String password = pbeEnc.encrypt("dev"); System.out.println(url); System.out.println(username); System.out.println(password); } }
LHMssTJKhk6jRVWlGkyljN7DXpLcV7IjytRCTuXI/mhBoM/H/ZzeMGWmPSrJz2uw utKEuibTNS5BLi/VJnYD7A== 5QO34iRUFebKStYcF1ByLg==
properties에 암호화 된 값을 입력하기 위해서는 jasypt에서 구분 할 수 있도록 ENC 키워드를 사용해서 입력한다.
system.enc.properties #JDBC driverClassName=org.apache.derby.jdbc.ClientDriver url=ENC(LHMssTJKhk6jRVWlGkyljN7DXpLcV7IjytRCTuXI/mhBoM/H/ZzeMGWmPSrJz2uw) username=ENC(utKEuibTNS5BLi/VJnYD7A==) password=ENC(5QO34iRUFebKStYcF1ByLg==)
2. context-datasource.xml
spel에서 jasypt를 지원하지 않으므로 ${프로퍼티명}을 사용해서 변수값을 입력받는다.
3. 적용하기
적용하는 방법은 간단한데 password를 설정하는 방법은 3가지가 있다.
(더 있을 수 있지만 지금까지 찾아 낸 방법은 3가지...)
① -D옵션
java -DAPP_ENCRYPTION_PASSWORD=password_key
passwordSysPropertyName을 사용하여 password_key를 얻음
classpath:properties/system.enc.properties
② 환경 변수
UNIX/LINUX의 경우에는 export APP_ENCRYPTION_PASSWORD=password_key
윈도우의 경우에는 환경변수 APP_ENCRYPTION_PASSWORD/password_key 설정
classpath:properties/system.enc.properties
③ 설정파일에 직접 입력
스프링 설정파일에 password 항목으로 직접 입력
classpath:properties/system.enc.properties
'프로그래밍 > 스프링' 카테고리의 다른 글
-D옵션으로 web.xml에서 선택적인 *.xml 로딩 (0) | 2013.08.03 |
---|---|
-D옵션으로 선택적인 properties 사용 (0) | 2013.08.03 |