1. 개요

이 짧은 사용방법(예제)에서는 keytool 명령 을 소개합니다 . keytool 을 사용하여 새 인증서를 만들고 해당 인증서에 대한 정보를 확인하는 방법을 배웁니다 .

2. keytool 이란 무엇입니까 ?

Java에는 릴리스에 keytool 유틸리티가 포함되어 있습니다 . 이를 사용하여  키와 인증서관리하고 저장소에 저장합니다. 키 도구의 명령은 우리가 자체 서명 된 인증서를 생성하고 키 스토어에 대한 정보를 표시 할 수 있습니다.

다음 섹션에서는 이 유틸리티의 다양한 기능을 살펴보겠습니다.

3. 자체 서명 인증서 만들기

먼저, 예를 들어 개발 환경에서 프로젝트 간에 Security 통신을 설정하는 데 사용할 수 있는 자체 서명된 인증서를 만들어 보겠습니다.

인증서생성 하기 위해 명령줄 프롬프트를 열고 -genkeypair 옵션 과 함께 keytool 명령을 사용합니다 .

keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>

각 매개변수에 대해 자세히 알아보겠습니다.

  • alias – 인증서의 이름
  • keypass – 인증서의 암호입니다. 인증서의 개인 키에 액세스하려면 이 비밀번호가 필요합니다.
  • 유효 기간 – 인증서 유효 기간(일)
  • storepass – 키 저장소의 비밀번호입니다. 저장소가 없는 경우 키 저장소의 암호가 됩니다.

예를 들어 개인 키가 "pass123" 이고 유효 기간이 1년인 "cert1" 이라는 인증서를 생성해 보겠습니다 . 또한 "stpass123" 을 키 저장소 암호로 지정 합니다.

keytool -genkeypair -alias cert1 -keypass pass123 -validity 365 -storepass stpass123

명령을 실행한 후 제공해야 하는 몇 가지 정보를 요청합니다.

What is your first and last name?
  [Unknown]:  Name
What is the name of your organizational unit?
  [Unknown]:  Unit
What is the name of your organization?
  [Unknown]:  Company
What is the name of your City or Locality?
  [Unknown]:  City
What is the name of your State or Province?
  [Unknown]:  State
What is the two-letter country code for this unit?
  [Unknown]:  US
Is CN=Name, OU=Unit, O=Company, L=City, ST=State, C=US correct?
  [no]:  yes

언급했듯이 이전에 키 저장소를 생성하지 않은 경우 이 인증서를 생성하면 자동으로 생성됩니다.

매개변수 없이 -genkeypair 옵션을 실행할 수도 있습니다 . 명령줄에 제공하지 않고 필수 항목인 경우 해당 항목을 입력하라는 메시지가 표시됩니다.

일반적으로 프로덕션 환경의 명령줄에 암호( -keypass 또는 -storepass ) 를 제공하지 않는 것이 좋습니다 .

4. 키 저장소에 인증서 나열

다음으로, 우리는 키 저장소에 저장된 인증서보는 방법을 배울 것 입니다. 이를 위해 -list 옵션을 사용합니다 .

keytool -list -storepass <storepass> 

실행된 명령의 출력에는 우리가 생성한 인증서가 표시됩니다.

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

cert1, 02-ago-2020, PrivateKeyEntry, 
Certificate fingerprint (SHA1): 0B:3F:98:2E:A4:F7:33:6E:C4:2E:29:72:A7:17:E0:F5:22:45:08:2F

구체적인 인증서에 대한 정보 를 얻으려면 명령에  -alias 옵션을 포함하기만 하면 됩니다 . 기본적으로 제공되는 것보다 더 많은 정보를 얻으려면 -v (verbose) 옵션 도 추가합니다 .

keytool -list -v -alias <alias> -storepass <storepass> 

이렇게 하면 요청된 인증서와 관련된 모든 정보가 제공됩니다.

Alias name: cert1
Creation date: 02-ago-2020
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Name, OU=Unit, O=Company, L=City, ST=State, C=US
Issuer: CN=Name, OU=Unit, O=Company, L=City, ST=State, C=US
Serial number: 11d34890
Valid from: Sun Aug 02 20:25:14 CEST 2020 until: Mon Aug 02 20:25:14 CEST 2021
Certificate fingerprints:
	 MD5:  16:F8:9B:DF:2C:2F:31:F0:85:9C:70:C3:56:66:59:46
	 SHA1: 0B:3F:98:2E:A4:F7:33:6E:C4:2E:29:72:A7:17:E0:F5:22:45:08:2F
	 SHA256: 8C:B0:39:9F:A4:43:E2:D1:57:4A:6A:97:E9:B1:51:38:82:0F:07:F6:9E:CE:A9:AB:2E:92:52:7A:7E:98:2D:CA
Signature algorithm name: SHA256withDSA
Subject Public Key Algorithm: 2048-bit DSA key
Version: 3

Extensions: 

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: A1 3E DD 9A FB C0 9F 5D   B5 BE 2E EC E2 87 CD 45  .>.....].......E
0010: FE 0B D7 55                                        ...U
]
]

5. 기타 기능

이미 본 기능 외에도 이 도구에서 사용할 수 있는 추가 기능 이 많이 있습니다.

예를 들어 키 저장소에서 생성 한 인증서를 삭제할 수 있습니다 .

keytool -delete -alias <alias> -storepass <storepass>

또 다른 예는 인증서의 별칭변경할 수도 있다는 것입니다 .

keytool -changealias -alias <alias> -destalias <new_alias> -keypass <keypass> -storepass <storepass>

마지막으로 도구에 대한 자세한 정보를 얻으려면 명령줄을 통해 도움요청할 수 있습니다 .

keytool -help

6. 결론

이 빠른 사용방법(예제)에서는 keytool 유틸리티 에 대해 조금 배웠습니다 . 또한 이 도구에 포함된 몇 가지 기본 기능을 사용하는 방법도 배웠습니다.

Junit footer banner