티스토리 뷰
Jasypt를 사용해서 암호화를 하는 방법은 지난번에 포스팅을 했다.
이때 특정 문자열에 대해 암호화를 하기 위해서 여러가지 방법이 있다고 했고 그중 CommandLineRunner를 implements해서 Springboot Main class에서 run method를 구현하는 방법으로 암호화된 문자열을 구했다. 하지만 이것도 번거롭다. 어딘가에 Jasypt 암호화하는것을 올려다 놓고 필요할때마다 사용하고 싶었다. Jenkins job에서 암호화할 문자열을 param으로 넣고 build를 하면 암호화된 문자열이 짠 하고 튀어나오면 괜찮을것 같아서 그렇게 구현을 해봤다.
일단 젠킨스가 설치된 서버에서 암호화를 진행할것이라 Jasypt library를 구해야 했다.
이곳에서 구할수가 있다. jasypt-1.9.3-dist.zip 를 다운받아서 서버의 적당한 위치에 놓고 압축을 풀어준다.
압축을 풀면 이런 모습이 된다. 여기에서 한가지 해줘야 할일이 있다.
이처럼 bin 밑으로 들어가면 암호화 및 복호화를 해주는 실행 스크립트가 있는데 sh 파일에 대해 실행 권한을 줘야 한다.
이렇게 준비가 끝났다면 Jenkins의 Job을 만들어 보자. freestyle job으로 하나 만들었다.
Choice Parameter로 encrypt를 할건지 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) 이렇게 암호화된 문자열을 넣어주면 된다.
끝!
'CI,CD > Jenkins' 카테고리의 다른 글
Jenkins에 테마(스킨) 적용하기 (0) | 2020.09.09 |
---|---|
Jenkins 폐쇄망에서 plugin 설치하기 (0) | 2020.09.09 |
Jenkins + gitlab 연동 및 webhook 으로 연결하기 (0) | 2020.08.05 |
Jenkins에서 maven settings.xml 정의하기 (0) | 2020.07.30 |
windows 서버일때 Jenkins에서 ftp 사용하기 (0) | 2020.07.03 |