본문 바로가기

배포

[암호화] JasyptConfig 설정

application의 db 정보들이나 token의 secret key 같은 민감한 정보들은 직접적으로 코드에 적어놓으면

외부 유출의 우려가 있음

그렇기 때문에 Jasypt 을 이용해서 암호화 한 뒤, ENC(암호화 된 값) 처리를 해서 코드에 적어놓고

이를 복호화 하기 위한 값은 외부 환경 변수를 추가하여 사용하면 보안 수준을 높일 수 있음

 

 

아래 사이트에서 암호화를 하려는 db 정보 (1) url, username, password를 입력

입력한 secret key로 암호화도하고 복호화도 할 수 있는 2way로 선택해야함

https://www.devglan.com/online-tools/jasypt-online-encryption-decryption

 

Programming Blog Article Feeds as per your Interest | DevGlan

Best programming article feeds as per your Interest on different technologies. Subscribe to any technology and explore the best articles from around the web.

www.devglan.com

 

 

#application-dev.yml 파일

spring:
  config:
    activate:
      on-profile: dev
  datasource:
    url: ENC(Le32ORBbdCTjptHxWjmSU9JQET+bpQRT28wJDXAiQ/vWQA/I9M2CUgrmwUFTVIZadQ7TLjl8OqaSuVvDMuA5CQSMI9bGjEfECBUC846qH8hwPGT9puJ5pwS8xXxRiHe1ATGoBP/LhBt1zD6v5xATdWLw5p0oQWiFgENKuzerO+nJX9sgkWAnUw==)
    username: ENC(IuMoK7PxMYN67m1/pyLlyQ==)
    password: ENC(/gI8xPZrcpPpaVyjdPv3SyxN+zhXO7UA)
    driver-class-name: com.mysql.cj.jdbc.Driver

 

 

 

//JasyptConfig 클래스 파일

package com.turkey.walkingwith7puppy.config;

import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
@Configuration
public class JasyptConfig {

	@Value("${jasypt.password}")
	private String encryptKey;

	@Bean("jasyptStringEncryptor")
	public StringEncryptor stringEncryptor(){
		PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
		SimpleStringPBEConfig config = new SimpleStringPBEConfig();
		config.setPassword(encryptKey);
		config.setAlgorithm("PBEWithMD5AndDES");
		config.setKeyObtentionIterations("1000");
		config.setPoolSize("1");

		config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
		config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
		config.setStringOutputType("base64");
		encryptor.setConfig(config);
		return encryptor;
	}
}

 

 

 

 

 

 

Jasypt 을 통해 암호화 한 값을 복호화 하기 위한 환경 변수 주입

 

 

 

참고

https://toma0912.tistory.com/82

 

Jasypt를 이용한 properties 암호화

안녕하세요. 오늘은 Spring에서 지원해주는 Jasypt(Java Simplified Encryption)를 이용해서 데이터베이스 접속 정보나, 다양한 설정 정보들을 담아두고 있는 properties 또는, yaml 파일의 정보를 암호화하는

toma0912.tistory.com

.