본문 바로가기
Programming/Java, Spring

[Spring cloud] 비대칭키로 암호화하기

by Renechoi 2023. 6. 1.

Jdk keytool을 사용한다.

 

먼저 keystore라는 폴더를 생성한다. 이곳에 private 키를 보관한다. 

 

해당 폴더로 가서 터미널에서 다음과 같이 입력한다. 

keytool -genkeypair -alias apiEncryptionKey -keyalg RSA -dname "CN=name, OU=API Development, O=msapractice.co.kr, L=Seoul, C=KR" -keypass "test1234" -keystore apiEncryptionKey.jks -storepass "test1234"
-genkeypair: 키 쌍(공개키 및 개인키)을 생성하는 옵션.
-alias apiEncryptionKey: 생성되는 키 쌍에 대한 별칭을 지정. 이 별칭은 나중에 키 스토어에서 해당 키 쌍을 식별하는 데 사용.
-keyalg RSA: RSA 알고리즘을 사용하여 키 쌍을 생성.
-dname "CN=name, OU=API Development, O=msapractice.co.kr, L=Seoul, C=KR": 인증서에 포함될 사용자의 이름, 조직 단위, 조직, 지역 및 국가 정보를 지정.
-keypass "test1234": 개인키에 대한 암호를 설정.
-keystore apiEncryptionKey.jks: 생성된 키 쌍을 저장할 키 스토어 파일의 경로와 이름을 지정.
-storepass "test1234": 키 스토어 파일에 대한 암호를 설정.

 

위의 코드를 실행하면 "apiEncryptionKey.jks"라는 이름의 키 스토어 파일이 생성된다. 이 파일은 공개키 및 개인키를 포함하고 있으며, 이후에 암호화 및 복호화 작업에 사용될 수 있다. 생성된 키 스토어 파일을 안전한 장소에 보관하여 암호화 작업에 사용할 수 있다.

 

 

 

해당 키를 통해 공개키를 추출할 수도 있다. 

 

keytool -export -alias apiEncryptionKey -keystore apiEncryptionKey.jks -rfc -file trustServer.cer

 

 

 

 

현재 생성된 폴더의 위치를 config server에 명시해주어야 한다. 

 

 

encrypt:
    #  key: abcdefghijklmnopqrstuvwxyz0123456789
    key-store:
        location: file://${user.home}/Documents/rene/inflearn/msa-with-springcloud-config/keystore/apiEncryptionKey.jks
        password: test1234
        alias: apiEncryptionKey

 

/encrypt로 post 요청을 보낸다.  

 

 

 

 

 

이제 yml 파일에서 password 부분을 암호화할 수 있고 암호화한 스트링을 yml에 입력해줄 수 있다. 

이때 {cipher} 라고 입력해주어 암호화된 문자임을 인지시킨다. 

 

'{cypher}AQAFcEUL+e52QDtDyRw8cvWB0AmlFYwtv0CkZbnAyduzWWdeV2t93w7mBaMX2XfYhj+KhH1QSIFE87Hgt4STTYXY/BFVN4Kgw7Q7XUtb09oZal/LOC4/eGbMnO/mw/CuX6otYhD+BdA4c5f08pYrMFWo+NyAX7638aIkrGwF3rjOZ0sGAIkeCZnarPLFccPHkBXcMn0aJ+0BbmV3UweuzUcWSf8sTXPkdSe3eEazIAbNfapcDxBYc+yhyUKXtlT21qkDIV9dD/dP3pybjWGm3cB1G0F4QARjikjLDAHOih/GLkFz6JJVcZXMmGhJbcHvYxrKNuHclAFwRTVr3JgMobC64gVJLAHWWrNf/sYRccocbDFqyDBd6M/7CDayprxWwMUQ2BB641DHTtX1XPhnOCyB'

 

 

사용 사례 

 

 

 


ref. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/

반응형