1. 概要

この短いチュートリアルでは、keytoolコマンドを紹介します。 keytool を使用して新しい証明書を作成し、その証明書の情報を確認する方法を学習します。

2. キーツールとは何ですか?

Javaのリリースには、keytoolユーティリティが含まれています。 管理キーと証明書に使用し、キーストアに保存します。 keytool コマンドを使用すると、自己署名証明書を作成し、キーストアに関する情報を表示できます。

次のセクションでは、このユーティリティのさまざまな機能について説明します。

3. 自己署名証明書の作成

まず、開発環境のプロジェクト間で安全な通信を確立するために使用できる自己署名証明書を作成しましょう。

証明書を生成するには、コマンドラインプロンプトを開き、keytoolコマンドを-genkeypairオプションとともに使用します。

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

これらの各パラメーターについて詳しく見ていきましょう。

  • alias –証明書の名前
  • keypass –証明書のパスワード。 証明書の秘密鍵にアクセスするには、このパスワードが必要です
  • 有効性–証明書の有効期間(日数)
  • storepass –キーストアのパスワード。 ストアが存在しない場合、これがキーストアのパスワードになります

たとえば、「cert1」という名前の証明書を生成します。この証明書は、「pass123」の秘密鍵を持ち、1年間有効です。 キーストアのパスワードとして“ 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 (詳細)オプションも追加します。

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>

もう1つの例は、証明書のエイリアスを変更することもできることです。

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

最後に、ツールの詳細を取得するには、コマンドラインからヘルプを求めることができます。

keytool -help

6. 結論

このクイックチュートリアルでは、keytoolユーティリティについて少し学びました。 また、このツールに含まれているいくつかの基本的な機能の使用方法も学びました。