[Java] JKS KeyStore 란?

Yuri Lee·2021년 5월 20일
1

배경

최근 http 에서 https 로 전환하는 작업을 했다. 이 작업을 하면서 배운 것들이 굉장히 많았는데 그 중 하나가 JKS KeyStore 이다.

Java의 암호 기능

Java Platform에서는 JCA/JCE라 불리는 API를 통하여 암호 관련 다양환 기능을 지원하고 있다.. 제공되는 암호 Library를 Cryptographic Provider라고 부른다.

Java Platform에 Cryptographic Provider가 설정되어 있다면, Java Program에서 암호 기능을 구현하려면, 동작하는 Application에서 JCA/JCE API를 Call 하기만 하면 된다.

Java KeyStore

암호 기능의 두 가지 핵심 요소는 암호 알고리즘과 암호키이다. JCA/JCE API 틀 통해 생성된 암호키는 Java가 제공하는 KeyStore에 저장되도록 되어 있다.

지원하는 KeyStore Type은, JKS, JCEKS, PKCS12 이다.

  • JKS : Java Keystore

  • JCEKS : Java Cryptography Extensions Keystore

  • PKCS12 : Public Key Cryptography Standards #12

JKS, JCEKS, PKCS12 파일 양식 모두, password-based encryption(PBE) 방식을 사용한다. 즉 사용자가 입력한 비밀번호(password)를 가지고, 암호키를 파생(derive)하고, 파생된 암호키로 Private-key(또는 Secret-key)를 암호화 시켜 keystore 파일 안에 저장한다.

JKS 파일의 확장자는 “.jks” 이며, JCEKS 파일의 확장자는 “.jck” 이며, PKCS12의 확장자는 “.p12” 이다.

명령어

  • KeyStore 내 인증서 목록을 출력
$ keytool -list -keystore my-keystore.jks
  • 인증서 Import : importcert 명령으로 인증서를 임포트할 수 있다. 만약 인증기관 인증서라면 -trustcacerts 옵션을 추가한다.
$ keytool -importcert -keystore my-keystore.jks -storepass changeit -trustcacerts -alias rootca -file "rootca.der" 

https://m.blog.naver.com/aepkoreanet/221856205351
https://www.lesstif.com/java/java-keytool-keystore-20775436.html

profile
Step by step goes a long way ✨

0개의 댓글