Spring Jasypt 설정으로 DB 정보 암호화
DB 정보 암호화 설정 4단계
1. Spring 설정 xml 파일에 설정 구문 추가
2. 프로퍼티스(properties) 해당 DB 정보 추가
3. Maven pom 파일에 <dependency> 구문 추가
4. Spring 설정중 dataSource 값 properties 값으로 처리 추가
1. Spring 설정 xml 파일에 설정 구문 추가
<bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<property name="password" value="BRACE_PASS" />
</bean>
<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="environmentVariablesConfiguration" />
</bean>
<bean id="propertyConfigurer" class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="configurationEncryptor" />
<property name="locations">
<list>
<value>[파일위치]/dbinfo.properties</value>
<value>[파일위치]/db2info.properties</value>
</list>
</property>
</bean>
스프링에 설정 파일 servlet-context.xml 파일등에 위와같이 설정 구문을 추가 하면 됩니다.
<property name="password" value="BRACE_PASS" /> 부분에 value 값은 암호화 키를 설정한 것이다.
<property name="algorithm" value="PBEWithMD5AndDES" /> 알고리즘은 DES로 할것임을 알 수 있다.
일반적으로 보통 패스워드는 단방향 암호화를 사용합니다. 하지만 위에 설정된 MD5는 양방향 암복호화가 가능 합니다.
복호화시에는 위에 설정된 키값을 이용해서 확인이 가능합니다.
2. 프로퍼티 DB 정보 설정
1번 설정 정보있는 <value>[파일위치]/dbinfo.properties</value>
위 설정된 위치에 dbinfo.properties 파일을 생성하고 UTF-8 방식으로 파일을 저장합니다.
프로퍼티 내용은 "key = value"와 같은 양식으로 작성합니다.
예를 들어 설정한 값은 아래와 같습니다.
db.driver = org.mariadb.jdbc.Driver (드라이버)
db.url = jdbc:mariadb://192.168.0.100:3306/testdb (접근주소)
db.username = testuser (접근계정)
db.password = ENC(Yl2wdgxnrY9C%4ddQzDzjCMXXdw/lHUNm)
password 값 ENC() 안에 있는 값을 생성 또는 확인하기 위해서는
http://www.jasypt.org/download.html 사이트에 들어가서 다운로드받은 뒤 확인 할 수 있는데
최신 버전은 1.9.3 버전으로 2019.05.25로 갱신된것 같습니다.
DOWNLOAD JASYPT (from GitHub) 를 클릭하여 GitHub에서 다운로드 받을 수 있습니다.
콘솔에서 암호화 값을 확인하려면 jasypt-dist 를 확인하시면 됩니다.
GitHub에서 프로젝트를 다운받아 설정하는데 어려움이 있는 분들을 위해서 압축된 파일을 같이 첨부합니다.
해당 파일을 다운로드 받아 압축해제 하시고 사용하면 됩니다.
cmd 창에서 압축해제한 폴더로 이동하여 윈도우에서 bat 파일을 실행하면 됩니다.
명령어는 아래쪽에 정리되어 있습니다.
3. Maven pom 파일에 <dependency> 구문 추가
GitHub 주소(https://github.com/jasypt/jasypt) 페이지로 들어 가보면 알수 있지만
다양한 프레임워크에서 사용이 가능합니다.
그중 Spring3으로 설정하는 부분을 예로 들겠습니다.
<dependency>
<groupId>org.jasypt</groupId>
<artifactId>jasypt-spring3</artifactId>
<version>1.9.3</version>
</dependency>
POM.xml 파일에 추가하면 됩니다.
4. Spring 설정중 dataSource 값 properties 값으로 처리 추가
Spring DB dataSource 설정 부분에 아래와 같이 설정 합니다.
servlet-context.xml 파일등에 같이 설정 할 수도 있습니다.
위 1번에서 선언한 프로퍼티 파일에서 선언된 값을 ${} 방식으로 호출하여 사용합니다.
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="${db.driver}" />
<property name="url" value="${db.url}" />
<property name="username" value="${db.username}" />
<property name="password" value="${db.password}" />
</bean>
dist 에 있는 sh파일 기능및 명령어 간편정리
listAlgorithms : 사용가능한 암호화 알고리즘 리스트를 보여줍니다.
DIGET, PBE 2가지 리스트로 알고리즘이 구분되어 확인 할 수 있습니다.
[실행]
C:\>listAlgorithms
digest : 입력값(input)과 알고리즘(algorithm)을 변수에 값을 입력하여 암호화
DIGET 알고리즘만 가능합니다.
[실행]
C:\>digest input="test123" algorithm="MD5"
encrypt : 입력값(input),키값(password),알고리즘(algorithm) 변수에 값을 입력하여 암호화
PBE 알고리즘만 가능합니다.
password는 <property name="password" value="BRACE_PASS" /> 이유가
설정에서 password 설정부분이 키값이 되는 이유입니다.
[실행]
C:\>encrypt input="test123" password="BRACE_PASS" algorithm="PBEWithMD5AndDES"
decrypt : 입력값은 암호화 된값으로 받아 값을 디코딩하여 확인 할 수 있습니다.
encrypt와 동일한 방법으로 명령어만 decrypt를 사용합니다.
[실행]
C:\>decrypt input="Yl2wdgnrY9C+4dn" password="BRACE_PASS" algorithm="PBEWithMD5AndDES"
'경험치바(Experience Opint Bar)' 카테고리의 다른 글
기획디자인 UI TOOL PowerMockup 4.3.3.0 설치 무료라이센스 팁 (0) | 2020.04.09 |
---|---|
Infrastructure 인프라스트럭처 란 무엇일까? (0) | 2020.02.17 |
request 객체 메소드 간단정리 및 getRequestURL()과 getRequestURI() 차이 (0) | 2019.11.20 |
contains 자바 String 메서드 (0) | 2019.05.23 |
Spring Boot application.properties 설정 방법 (0) | 2019.05.17 |