본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ
IT기술/JAVA

[Java] Java jks 만들기

by 미노드 2024. 1. 10.

예전에 자바 프로젝트를 수행하면서 jks 파일을 이용한 적이 있습니다.
java Keystore 의 파일로써 다양한 파일을 지원합니다. (JKS, JCEKS, BKS ....)

암호화 시킬 ssl인증서를 담아서 jks로 만들고, java 프로젝트를 실행하는데 jks파일을 참조하여 사용하는 식으로 운영했었습니다.

jks 파일을 만들고 관리하는 방법은 크게 2가지가 있습니다.
별도로 spring boot에서 설정해서 사용할수도 있지만, 저는 jks 파일을 만들고 직접 수정하는 부분에 대해 기록해보려 합니다.

방법으로 크게 두가지가 있습니다.

1. portecle 프로그램 사용
2. openssl 사용

1. portecle 프로그램 사용

Portecle은 keystore를 관리해주는 자바로 만들어진 GUI 프로그램입니다.
윈도우 환경, 맥환경 에서도 실행가능합니다.

 

Portecle: Home

Portecle Portecle is a user friendly GUI application for creating, managing and examining keystores, keys, certificates, certificate requests, certificate revocation lists and more. Features Currently, Portecle can be used to, for example: Create, load, sa

portecle.sourceforge.net

다운로드 후 압축을 푼 뒤 실행합니다. (저는 윈도우환경에서 cmd로 실행했습니다.
sudo java -jar portecle.jar

이런식으로 프로그램이 실행되며, jks를 만들거나 불러와서 수정할 수 있습니다.
예시로 빈 jks부터 만들어 보겠습니다.

다음 사진처럼 실행하면 jks 파일을 만들 수 있습니다.
저장시 Keystore Password를 입력하라고 하는데, 기본 비밀번호는 changeit 으로 설정합니다.

이제 파일 확장자를 넣어 저장하면 빈 jks 파일이 생성완료됩니다.

이제 여기에 ssl 인증서를 예시로 넣어보겠습니다.

이런식으로 인증서를 추가할 수 있습니다.
같은 방식으로 다른 인증서도 여럿 추가 가능합니다.

저장하게되면 용량도 늘어난 것을 확인할 수 있습니다.

 

2. openssl 사용

1. 인증서 다운로드하기 
1
2
3
# openssl s_client -connect app.zencoder.com:443 | tee appzencoder.certlog
# openssl x509 -inform PEM -in appzencoder.certlog -text -out appzencoder.certdata
# openssl x509 -inform PEM -text -in appzencoder.certdata
cs
2. 자바 keystore에 새로운 인증서 추가하기
1
# sudo keytool -importcert -file ./appzencoder.certdata -alias app.zencoder.com  -keystore $JAVA_HOME/jre/lib/security/keystorefile.jks -storepass changeit
cs

해당 키워드로 command 로 jks를 수정하거나 추가할 수 있습니다.

 

이후에 spring boot 에서 키스토어 파일을 사용하려면 다음설정을 추가하면 됩니다.
그렇다면 https 통신을 위한 인증서를 별도로 받아서 관리할 수 있습니다.
server.ssl.key-store=file:[키스토어명].jks

프로젝트 자체에서 관리하려면 다음을 입력하면 됩니다.
server.ssl.key-store=classpath:[키스토어명].jks

'IT기술 > JAVA' 카테고리의 다른 글

[Java] 자바에서 싱글톤 패턴 이해하기  (0) 2024.01.13
[Java] Optional 소개  (0) 2024.01.13
[java] Stream 이해하기  (0) 2024.01.09
자바 정규표현식 기술 정리  (0) 2024.01.04
[Java] HashMap Hashtable 차이점, 구분하기  (0) 2023.12.30