Jasypt 를 적용해보자 !

박우영·2023년 4월 12일
0

프로젝트 설정

목록 보기
1/2

github 에 public 으로 공개하는데 공개 하면 안되는 것들이 있습니다.

예를들어 database 정보 같은것들

하지만 push 할때마다 지웠다가 다시 썼다가 하기엔 너무 번거롭습니다.

이를 위해 Jasypt를 사용해 암호화를 할 것입니다.


jasypt 를 적용하기 위해선 먼저 외부 라이브러리를 사용하는 것이기때문에
gradle

implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4'

에 jsaypt 라이브러리를 추가해야 합니다.

jasypt:
  encryptor:
    bean: jasyptStringEncryptor

yml 파일은 다음과 같이 작성 하고

암호화를 해야합니다.
https://www.devglan.com/online-tools/jasypt-online-encryption-decryption
위 사이트에서 암호키를 설정해 자기가 바꾸려는 것을 암호화 시켜주면 됩니다.
암호화 키는 잃어버리면 안됩니다.

그다음 yml 파일에서

    username: ENC(ll4zKFuVNixjZ6I+y/0RYQ==)
    password: ENC(KdhgHp6Vqy9QNQxC3RGcmNWCoTGCZ3tL)
    url: ENC(ZomzDT2uG2jDiy69tMpypGRdc2A/lKVA29lyXd05ugV84uVjO6sq4dMvjYqs5RshGNx3RN11Wo63KzDoN7WchJ8NdbGV+NEApNRsG6zyrnB7z3t1Pb9DwehE2uklzmMMndYWUKdRqeNZ5M6+k6rY9u3u6szRDSLPXmVDFFqwgYpxd1bdaRP++w==)

와 같이 암호화 시킨 암호를 ENC()로 감싸주면 됩니다.

다음은 java 코드입니다.

@Configuration
@EnableEncryptableProperties
public class JasyptConfigDES {

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



    @Bean(name = "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.setProviderName("SunJCE");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        return encryptor;
    }

}

와 같이 설정해주시면 됩니다. 나머지도 yml 파일로 설정 할 수있지만 처음 사용하기에 라이브러리 문서에 가장 대중적인 방법을 선택했습니다.

이제 암호화키를 관리해줘야 하는데 여러가지 방법이있습니다.
다른 파일로 관리하는방법 도 있구요 저는 intellij 에 직접 환경변수를 넣어줬습니다.
1.

  1. 가운데 파랑색으로 modify option 을 클릭해주고


-Djasypt.encryptor.password={암호화 키}
를 입력 해주면 됩니다.

  1. build.gradle 추가 github action 에서의 테스트를 위해!
	systemProperty "jasypt.encryptor.password", project.getProperty("jasypt.encryptor.password")

0개의 댓글