Java KeyStore



1. Java KeyStore


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

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

  • JKS : Java KeyStore
  • JCEKS : Java Cryptography Extensions KeyStore
  • PKCS12 : Public Key Cryptography Standards

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

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



2. keytool 활용 keystore 생성


keytool

# Key and Certificate Management Tool

# Commands:

#  -certreq            Generates a certificate request
#  -changealias        Changes an entry's alias
#  -delete             Deletes an entry
#  -exportcert         Exports certificate
#  -genkeypair         Generates a key pair
#  -genseckey          Generates a secret key
#  -gencert            Generates certificate from a certificate request
#  -importcert         Imports a certificate or a certificate chain
#  -importpass         Imports a password
#  -importkeystore     Imports one or all entries from another keystore
#  -keypasswd          Changes the key password of an entry
#  -list               Lists entries in a keystore
#  -printcert          Prints the content of a certificate
#  -printcertreq       Prints the content of a certificate request
#  -printcrl           Prints the content of a CRL file
#  -storepasswd        Changes the store password of a keystore

# Use "keytool -command_name -help" for usage of command_name
keytool -genkeypair -keystore my_key -storetype jceks 
keytool -list -keystore my_key.jck