스프링에서 jasypt를 적용해서 properties 암호화 적용하는 방법 정리

Jasypt 1.9.0 with Spring 3.1


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
			
		
	






Posted by doveh
,