docs.oracle.com/cd/E19159-01/820-4605/ablra/index.html 참고 할 수 있는 site
java jdk에 포함된 keytool 유틸리티를 사용하여 인증서 생성
keytool의 command
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
-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
###############################################################
-genkeypair 명령
공개키와 개인키 두 개의 키쌍을 생성
keytool -genkeypair -help
keytool -genkeypair [OPTION]...
Generates a key pair
Options:
-alias alias name of the entry to process
-keyalg key algorithm name
-keysize key bit size
-sigalg signature algorithm name
-destalias destination alias
-dname distinguished name
-startdate certificate validity start date/time
-ext X.509 extension
-validity validity number of days
-keypass key password
-keystore keystore name
-storepass keystore password
-storetype keystore type
-providername provider name
-providerclass provider class name
-providerarg provider argument
-providerpath provider classpath
-v verbose output
-protected password through protected mechanism
Use "keytool -help" for all available commands
###############################################################
-keystore 옵션
keystore 이용하여 파일의 경로를 지정하지 않으면 사용자의 홈디렉터리에서 .keystore 파일을 검색
JKS 는 기본 옵션 -storetype jks 생략 가능
file이름을 myKey_jks로 생성
keytool -genkeypair -keystore myKey_jks -storetype jks
Enter keystore password: ===암호입력해야함
Re-enter new password: ===암호입력해야함
What is your first and last name?
[Unknown]: === enter만 입력해도 됨
What is the name of your organizational unit?
[Unknown]: === enter만 입력해도 됨
What is the name of your organization?
[Unknown]: === enter만 입력해도 됨
What is the name of your City or Locality?
[Unknown]: === enter만 입력해도 됨
What is the name of your State or Province?
[Unknown]: === enter만 입력해도 됨
What is the two-letter country code for this unit?
[Unknown]: === enter만 입력해도 됨
Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown correct?
[no]: yes === NO로 하면 계속 반복되니 yes로 해야합니다.
###############################################################
PKCS12 타입의 인증서를 생성하고자 할때는 -storetype pkcs12 을 이용
keytool -genkeypair -keystore pkcs12_keystore -storetype pkcs12
###############################################################
KeyStore 내 인증서 목록을 출력
C:\Temp\tools\jdk-11\bin\keytool -list -keystore jks_keystore
C:\Temp\tools\jdk-11\keystore 디렉터리
jks_keystore
pkcs12_keystore
C:\Temp\tools\jdk-11\keystore>C:\Temp\tools\jdk-11\bin\keytool -list -keystore jks_keystore
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
mykey, 2020. 12. 24., PrivateKeyEntry,
Certificate fingerprint (SHA-256): 97:0E:EE:F5:F6:3A:59:72:B5:61:B8:4F:8A:22:84:21:24:AE:65:E1:58:56:B8:CC:F4:64:9E:09:F6:50:6B:47
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore jks_keystore -destkeystore jks_keystore -deststoretype pkcs12".
C:\Temp\tools\jdk-11\keystore>
###############################################################
JRE 에 포함되어 있는 기본 인증기관(ca) 인증서 파일인 jre/lib/security/cacerts/cacerts에 있는 목록을 확인하는 내용
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts
###############################################################
인증서 Import
-importcert 명령
인증서를 임포트
인증기관 인증서라면 -trustcacerts 옵션을 추가
keytool -importcert -keystore myKey_jks -storepass changeit -trustcacerts -alias rootca -file "rootca.der"
###############################################################
Private Key import
JDK 6 이상부터 PKCS#12 으로 된 인증서와 개인키를 keystore 에 import 하는게 가능
openssl 로 pkcs#12 를 만들고 pkcs#12 를 KeyStore 로 임포트 가능
keytool은 PKCS#12 이 아닌 것은 외부에서 생성된 private key 를 keystore 에 import 하는 방법을 제공하지 않음
1. 외부에서 개인키(myCert.key)와 인증서(myCert.crt) 생성
2. openssl 에서는 인증서와 개인키가 DER 방식으로 encoding 되어 있으면
pkcs12 로 변환이 안되니 PEM 형식으로 변환
edit로 파일을 오픈 시
PEM 텍스트로 표시
DER 바이너리로 표시
2-1. 인증서 PEM 으로 변환
openssl x509 -inform der -in myCert.der -out myCert.crt
2-2. 개인키 변환
openssl rsa -inform der -in myCert.key.der -out myCert.key
3. openssl 이용하여 PKCS12 생성
openssl pkcs12 -export -in myCert.crt -inkey myCert.key -out myKeyPKCS.p12 -name "PKI alias"
4. 3에서 Enter
Export Password: === pkcs12 암호 입력(예시: ㅁ!=3+ㅊ=AZz)
5. keytool 이용 PKCS12 파일을 KeyStore 로 변환
keytool -importkeystore -deststorepass changeit -destkeypass changeit -destkeystore myJKS_keystore.jks -srckeystore myKeyPKCS.p12 -srcstoretype PKCS12 -srcstorepass ㅁ!=3+ㅊ=AZz -alias "PKI alias"
###############################################################
alias 변경
keytool -changealias -keystore myJKS_keystore.jks -alias OldAlias -destalias NewAlias
###############################################################
keystore 암호 변경
keytool -storepasswd -keystore jks_keystore
Enter keystore password:
New keystore password:
Re-enter new keystore password:
2020.12.24 STS SunCertPathBuilderException shooting (0) | 2020.12.24 |
---|---|
2020.12.24 Keystore (0) | 2020.12.24 |
java 1.8 open jdk and spring sts tools (0) | 2020.12.23 |
2020.12.22 Spring boot in java jdk (connect java jdk) (0) | 2020.12.22 |
nio server socket (0) | 2020.09.25 |
댓글 영역