title : "Java - Jasypt를 사용한 프로퍼티 암호화"
category : "Java"
tags : [Java, Jasypt]
date : 2022-10-19T12:00:00
last_modified_at: 2023-01-14T12:00:00
comment: true
Password Management: Password in Configuration File
- DB정보가 담긴 프로퍼티를 plain-text가 아닌 암호화 된 값으로 저장해야 한다는 보안 지적 사항을 전달 받아 아래와 같이 수정함.
- 개발환경 :
java8
,spring sts4
,maven
jasypt
1. 암호화값 추출
- 아래 사이트에서 암호화대상 텍스트와 key값 입력시 암호화 된 값 확인가능
https://www.devglan.com/online-tools/jasypt-online-encryption-decryption
2. 암복호화 모듈 적용
<!-- properties 암호화 시 오류로 주석처리 -->
<!-- <context:property-placeholder properties-ref="propertiesFactory" /> -->
<!--
보안성 검토
Password Management: Password in Configuration File
properties 암호화 추가
-->
<!-- peoperties 암호화 -->
<bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<!-- DB password 암호화 키 환경변수 사용 -->
<!-- <property name="passwordEnvName" value="" /> -->
</bean>
<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="environmentVariablesConfiguration" />
<property name="password" value="#{systemProperties['']}" />
</bean>
<bean id="propertyConfig" class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
<constructor-arg ref="configurationEncryptor"/>
<property name="locations">
<list>
<value>classpath:dbinfo.properties</value>
</list>
</property>
</bean>
- 환경변수 설정
- 윈도우의 경우 STS에서 윈도우 환경변수를 가져오지 못하므로 run configuration에 추가
STS Run > Run configuration > Environment > New.. - tomcat 실행파일에 -DEVN_NAME=env_value 추가
- EnvironmentStringPBEConfig의 passwordEnvName 사용
- 윈도우의 경우 STS에서 윈도우 환경변수를 가져오지 못하므로 run configuration에 추가
dbinfo.properties
ENC()
로 감싸고 안에jasypt
를 통해 암호화 한 값으로 변경
Globals.DbType=oracle
Globals.DriverClassName=oracle.jdbc.driver.OracleDriver
Globals.Url=ENC(ZYZCT2RusLaVYYBtXtOBj+bzgVqIUiL/YHuIEjr8IK77AZP67MLPEkxj3dayRQ/pCNU79d0E0lm+4bojAGNLLA==)
Globals.UserName=ENC(JQECtL5j3DdAdjcgoaMttaJWrHiSQR8d)
Globals.Password=ENC(wAAZc3rcqnnNWlOd7ISvKrfkSAInrr34)
https://hy1116.github.io/java/PasswordManagement/
Java - Jasypt를 사용한 프로퍼티 암호화
Password Management: Password in Configuration File
hy1116.github.io
'Spring > SpringFramework' 카테고리의 다른 글
Spring MVC 레거시 프로젝트 업그레이드 part3 (0) | 2025.04.14 |
---|---|
Spring MVC 레거시 프로젝트 업그레이드 part2 (0) | 2025.03.06 |
Spring MVC 레거시 프로젝트 업그레이드 (feat. Java8 + Spring 4.3 + Gradle ) (2) | 2025.02.25 |
[Spring] Filter, Interceptor, AOP 개념 및 순서 (0) | 2023.03.07 |