Files
sdl_base/doc/Appendix/Properties암호화툴사용방법.adoc
2026-05-29 17:49:25 +09:00

170 lines
8.0 KiB
Plaintext

= Properties 암호화 툴 사용 방법
sdl-encrypt는 Spring Framework에서 사용하는 properties를 http://www.jasypt.org/[Jasypt]를 이용해 쉽게 암호화 하기 위한 모듈이다.
== 사용 방법
=== 파일다운로드
sdl-encrypt-1.0.0.jar 파일을 다운로드 받아서 특정 디렉토리에 복사한다. (배포된 sdl-appendix 내 참조)
sdl-encypt-1.0.0.jar 파일을 실행하기 위해서는 JDK 8 이상의 버전이 설치 되어 있어야 한다.
----
C:\encrypt>dir
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: 1841-973A
C:\encrypt 디렉터리
2022-08-09 오후 02:17 <DIR> .
2022-08-09 오후 02:17 <DIR> ..
2022-08-09 오후 02:15 9,114,144 sdl-encrypt-1.0.0.jar
----
'''
=== 암호화 key 파일 생성
같은 폴더에 암호화를 위한 key 파일을 sdl-encrypt-1.0.0.jar 파일을 있는 폴더에 생성한다.
key파일의 이름은 *jasypt.key* 로 한다. jasypt.key 파일은 어플리케이션 실행 시 서버에서 읽어 복호화 할때 필요하다.
*jasypt.key 파일의 내용이 유출 될 경우 문제가 생길 수 있으니 형상관리에 저장하지 않도록 한다.*
*jasypt.key 샘플*
----
fhasiuk23dfjhasoijcnaoijfoase0342ruq0
----
jasypt.key 파일의 내용은 프로젝트에서 랜덤한 문자열로 생성한다.
'''
=== Properties 파일 생성
config.properties 파일에 암호화가 필요한 properties를 작성해 sdl-encrypt-1.0.0.jar 파일이 있는 폴더에 생성한다.
*config.properties 파일 샘플*
----
# Datasource(Oracle)
datasource.driver=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
datasource.url=jdbc:log4jdbc:oracle:thin:@10.127.72.226:1521:XE
datasource.username=sdl5
datasource.password=dlatl#00
----
'''
=== 암호화 하기
실행 전에 위의 모든 파일들이 같은 폴더에 위치하는지 확인한다.
----
C:\encrypt>dir
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: 1841-973A
C:\encrypt 디렉터리
2022-08-09 오후 02:29 <DIR> .
2022-08-09 오후 02:29 <DIR> ..
2022-08-08 오후 05:14 407 config.properties
2022-08-09 오후 02:29 37 jasypt.key
2022-08-09 오후 02:15 9,114,144 sdl-encrypt-1.0.0.jar
3개 파일 9,114,588 바이트
----
*java -jar sdl-encrypt-1.0.0.jar* 실행
----
C:\encrypt>java -jar sdl-encrypt-1.0.0.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.2)
2022-08-09 14:30:33.152 INFO 47544 --- [ main] com.samsung.EncryptApplication : Starting EncryptApplication v1.0.0 using Java 1.8.0_341 on DESKTOP-BBNYDORY with PID 47544 (C:\encrypt\sdl-encrypt-1.0.0.jar started by bbnydory in C:\encrypt)
2022-08-09 14:30:33.157 INFO 47544 --- [ main] com.samsung.EncryptApplication : No active profile set, falling back to 1 default profile: "default"
2022-08-09 14:30:33.456 INFO 47544 --- [ main] ptablePropertiesBeanFactoryPostProcessor : Post-processing PropertySource instances
2022-08-09 14:30:33.458 INFO 47544 --- [ main] c.u.j.EncryptablePropertySourceConverter : Skipping PropertySource configurationProperties [class org.springframework.boot.context.properties.source.ConfigurationPropertySourcesPropertySource
2022-08-09 14:30:33.461 INFO 47544 --- [ main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource systemProperties [org.springframework.core.env.PropertiesPropertySource] to EncryptableMapPropertySourceWrapper
2022-08-09 14:30:33.461 INFO 47544 --- [ main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource systemEnvironment [org.springframework.boot.env.SystemEnvironmentPropertySourceEnvironmentPostProcessor$OriginAwareSystemEnvironmentPropertySource] to EncryptableSystemEnvironmentPropertySourceWrapper
2022-08-09 14:30:33.463 INFO 47544 --- [ main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource random [org.springframework.boot.env.RandomValuePropertySource] to EncryptablePropertySourceWrapper
2022-08-09 14:30:33.464 INFO 47544 --- [ main] c.u.j.EncryptablePropertySourceConverter : Converting PropertySource Config resource 'class path resource [application.properties]' via location 'optional:classpath:/' [org.springframework.boot.env.OriginTrackedMapPropertySource] to EncryptableMapPropertySourceWrapper
2022-08-09 14:30:33.500 INFO 47544 --- [ main] c.u.j.filter.DefaultLazyPropertyFilter : Property Filter custom Bean not found with name 'encryptablePropertyFilter'. Initializing Default Property Filter
2022-08-09 14:30:33.551 INFO 47544 --- [ main] c.u.j.r.DefaultLazyPropertyResolver : Property Resolver custom Bean not found with name 'encryptablePropertyResolver'. Initializing Default Property Resolver
2022-08-09 14:30:33.553 INFO 47544 --- [ main] c.u.j.d.DefaultLazyPropertyDetector : Property Detector custom Bean not found with name 'encryptablePropertyDetector'. Initializing Default Property Detector
2022-08-09 14:30:33.611 INFO 47544 --- [ main] com.samsung.EncryptApplication : Started EncryptApplication in 0.765 seconds (JVM running for 1.669)
2022-08-09 14:30:34.114 INFO 47544 --- [ main] com.samsung.EncryptService : datasource.username=ENC(fOdjJKVr6fkmdS46JlsCRw==)
2022-08-09 14:30:34.115 INFO 47544 --- [ main] com.samsung.EncryptService : datasource.password=ENC(xfWl/qeA7tIMQ10UyU7IInz+SyY6ovX9)
2022-08-09 14:30:34.117 INFO 47544 --- [ main] com.samsung.EncryptService : datasource.url=ENC(Ocp24DAK1cq0f8TezLyMpcedSu6nLdTACSIYyMoCnuanSJT5x76lw8yM0reAeu4qBrBF+yvItVyCBmtPlIv70A==)
2022-08-09 14:30:34.119 INFO 47544 --- [ main] com.samsung.EncryptService : datasource.driver=ENC(GJ527jBO/7Xjilg8WbQHk55GwVUAvc6fIa1Yai1o68WeimiE5BpHNj3e7YnjhtQR)
----
'''
=== 확인하기
암호화가 정상적으로 실행 됐다면 같은 폴더에 config-enc.properties 파일이 생성된 것을 확인 할 수 있다.
----
C:\encrypt>dir
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: 1841-973A
C:\encrypt 디렉터리
2022-08-09 오후 02:30 <DIR> .
2022-08-09 오후 02:30 <DIR> ..
2022-08-09 오후 02:30 305 config-enc.properties
2022-08-08 오후 05:14 407 config.properties
2022-08-09 오후 02:29 37 jasypt.key
2022-08-09 오후 02:15 9,114,144 sdl-encrypt-1.0.0.jar
4개 파일 9,114,893 바이트
----
config-enc.properties 파일내용
----
datasource.username=ENC(fOdjJKVr6fkmdS46JlsCRw==)
datasource.password=ENC(xfWl/qeA7tIMQ10UyU7IInz+SyY6ovX9)
datasource.url=ENC(Ocp24DAK1cq0f8TezLyMpcedSu6nLdTACSIYyMoCnuanSJT5x76lw8yM0reAeu4qBrBF+yvItVyCBmtPlIv70A==)
datasource.driver=ENC(GJ527jBO/7Xjilg8WbQHk55GwVUAvc6fIa1Yai1o68WeimiE5BpHNj3e7YnjhtQR)
----
'''
== 고급 사용
sdl-encrypt 모듈을 Spring Boot 프로젝트로 되어 있고 application.properties 파일에 암호화 key파일, Properties 파일, 출력파일에 대한 경로가 작성되어 있다.
application.properties 내용
[source,properties]
----
algorithm=PBEWithMD5AndDES
keyObtentionIterations=1000
pollSize=1
stringOutputType=base64
keyFilePath=./jasypt.key
propertiesFilePath=./config.properties
outputPropertiesFilePath=./config-enc.properties
----
위 내용의 변경이 필요하면
sdl-encrypt-1.0.0.jar 파일이 있는 위치에 application.properties 파일을 새로 작성하고 위의 값들을 오버라이딩해서 사용할 수 있다.