티스토리 뷰

Jasypt를 사용해서 암호화를 하는 방법은 지난번에 포스팅을 했다. 

 

 

Spring properties 파일의 내용 암호화하기 (with Jasypt)

properties 파일을 구성할때 암호화가 필요한 부분들이 존재한다. 가장 대표적인 예가 datasource의 username, password 부분이다. 이것들은 정말 다양한 방법을 통해서 암호화가 되고 있지만 요즘 추세는 d

oingdaddy.tistory.com

 

이때 특정 문자열에 대해 암호화를 하기 위해서 여러가지 방법이 있다고 했고 그중 CommandLineRunner를 implements해서 Springboot Main class에서 run method를 구현하는 방법으로 암호화된 문자열을 구했다. 하지만 이것도 번거롭다. 어딘가에 Jasypt 암호화하는것을 올려다 놓고 필요할때마다 사용하고 싶었다. Jenkins job에서 암호화할 문자열을 param으로 넣고 build를 하면 암호화된 문자열이 짠 하고 튀어나오면 괜찮을것 같아서 그렇게 구현을 해봤다. 

 

일단 젠킨스가 설치된 서버에서 암호화를 진행할것이라 Jasypt library를 구해야 했다. 

 

 

Release jasypt-1.9.3 · jasypt/jasypt

Distribution for jasypt 1.9.3: binaries and javadocs

github.com

이곳에서 구할수가 있다. jasypt-1.9.3-dist.zip 를 다운받아서 서버의 적당한 위치에 놓고 압축을 풀어준다. 

 

 

압축을 풀면 이런 모습이 된다. 여기에서 한가지 해줘야 할일이 있다. 

 

 

이처럼 bin 밑으로 들어가면 암호화 및 복호화를 해주는 실행 스크립트가 있는데 sh 파일에 대해 실행 권한을 줘야 한다.


이렇게 준비가 끝났다면 Jenkins의 Job을 만들어 보자. freestyle job으로 하나 만들었다. 

 

 

Choice Parameterencrypt를 할건지 decrypt를 할건지 선택하는 셀렉트박스를 만들자. 

String Parameter로 암복호화할 문자열을 입력받도록 해주자. 

그리고 마지막으로는 암호화를 하는데 있어서 가장 중요한 key 값도 입력받아서 넣어주도록 했다. 

 

 

Build 에서는 bin 아래에 있는 encrypt, decrypt script를 실행한다. param으로 받은 값들을 잘 매핑시켜줘야 한다. 

 

$ ./encrypt.sh input="This is my message to be encrypted" password=MYPAS_WORD

 

Jasypt에 있는 암호 변환 가이드는 위와 같은데 이를 받은 값에 따라서 유동적으로 변할수 있도록 처리를 해준것이다. 

다 되었다면 저장을 하고 빌드를 해보자. 

 

 

이런식으로 teststring 이라는 값을 Jasypt를 사용하여 암호화를 할 것이다. 빌드하기 누른다!

 

 

이런식으로 OUTPUT 으로 암호화된 문자열을 확인할 수 있다. 이 문자열을 spring의 properties 파일에서 쓰려면 지난번에 쓴 글처럼 ENC(qwqNbLcoqFkIpsedJwRWW8o5KKBx9ddg)  이렇게 암호화된 문자열을 넣어주면 된다. 

 

끝!

 

 

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30