Javaでの暗号化。 キーツールユーティリティ

こんにちは、Habr! Javaの暗号化の基礎を学びたい初心者向けの一連の記事のうち 、Jakob Jenkovによる10番目の記事「Java Keytool」の翻訳を紹介します。







目次:



  1. Java暗号化
  2. Java暗号
  3. メッセージダイジェスト
  4. Mac
  5. 署名
  6. キーペア
  7. キージェネレーター
  8. KeyPairGenerator
  9. キーストア
  10. キーツール
  11. 証明書
  12. CertificateFactory
  13. 証明書パス


キーツールユーティリティ



Java Keytoolは、公開鍵/秘密鍵のペアを生成してキーストアに格納できるコマンドラインツールです。 ユーティリティ実行可能ファイルはJava SDK(またはJRE)とともに配布されるため、SDKがインストールされている場合は、プリインストールされます。

実行可能ファイルはkeytool



と呼ばれます。 実行するには、コマンドプロンプト(cmd、console、shellなど)を開きます。 現在のディレクトリをJava SDKインストールディレクトリのbin



ディレクトリに変更します。 keytool



Enter



を押します。 次のようなものが表示されるはずです。







 C:\Program Files\Java\jdk1.8.0_111\bin>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 C:\Program Files\Java\jdk1.8.0_111\bin>
      
      





ご覧のとおり、 keytool



ユーティリティは、キー、証明書、およびキーストアを操作するための一連のコマンドをサポートしています。 このガイドでは、これらのコマンドで最も一般的に使用されるものについて説明します。







Keytoolスクリプト



Keytool



ユーティリティのコマンドは多くの引数を取りますが、そのインストールは覚えにくい場合があります。 したがって、一連のKeytool



コマンドを使用して、いくつかのCMDまたはシェルスクリプトを作成することをお勧めします。 これらのスクリプトを使用すると、コマンドを簡単に再実行でき、また戻ってキーストアがどのように作成されたかを確認できます。







キーペアの生成



キーペア(公開キー/秘密キー)の生成は、 Keytool



ユーティリティが使用される最も一般的なタスクの1つです。 生成されたキーペアは、自己署名キーペアとしてKeyStoreファイルに挿入されます。 キーペアを生成するための一般的なコマンドライン形式は次のとおりです。







 -genkeypair -alias alias -keyalg keyalg -keysize keysize -sigalg sigalg -dname dname -keypass keypass -validity valDays -storetype storetype -keystore keystore -storepass storepass -providerClass provider_class_name -providerArg provider_arg -v -protected -Jjavaoption
      
      





引数については、「キーツールの引数」セクションで説明しています。 これらの引数のすべてが必要なわけではなく、多くはオプションです。 ユーティリティは、必要な引数を逃した場合に通知します。 以下は、証明書をKeyStoreにインポートするコマンドの例です。 コマンドラインでコマンドを入力するときは、必ず改行を削除してください。







 "C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -importcert -alias testkey -keypass 123456 -storetype JKS -keystore keystore2.jks -file cert.cert -rfc -storepass abcdef
      
      





Vaultレコードのリスト



キーストア内のエントリをリストするには、 list



コマンドを使用できます。 以下は、 list



コマンドの形式です。 改行は読みやすくするためのものです。 コマンドを実行する前に改行を削除します。







 -list -alias alias -storetype storetype -keystore keystore -storepass storepass -providerName provider_name -providerClass provider_class_name -providerArg provider_arg -v -rfc -protected -Jjavaoption
      
      





list



コマンドの例を次に示しlist



。 改行を忘れずに削除してください!







 "C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -list -storetype JKS -keystore keystore.jks -storepass abcdef
      
      





このコマンドは、このキーストアのすべてのエントリをリストします。 出力は次のようになります。







 Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry testkey, 19-Dec-2017, PrivateKeyEntry, Certificate fingerprint (SHA1): 4F:4C:E2:C5:DA:36:E6:A9:93:6F:10:36:9E:E5:E8:5A:6E:F2:11:16
      
      





list



コマンドにalias



引数を含めると、指定されたalias



一致するエントリのみがリストに追加されます。 次に、 alias



引数を使用したlist



コマンドの例を示します。







 "C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -list -alias testkey -storetype JKS -keystore keystore.jks -storepass abcdef
      
      





上記のコマンドの結果:







 testkey, 15-Dec-2017, PrivateKeyEntry, Certificate fingerprint (SHA1): 71:B0:6E:F1:E9:5A:E7:F5:5E:78:71:DC:08:80:47:E9:5F:F8:6D:25
      
      





キーストアエントリを削除する



また、 keytool



ユーティリティには、キーストアからエントリを削除できるコマンドdelete



ます。 このコマンドの形式は次のとおりです。







 -delete -alias alias -storetype storetype -keystore keystore -storepass storepass -providerName provider_name -providerClass provider_class_name -providerArg provider_arg -v -protected -Jjavaoption
      
      





次にdelete



を呼び出す例を示します。 開始する前に必ず改行を削除してください!







 "C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -delete -alias testkey -storetype JKS -keystore keystore.jks -storepass abcdef
      
      





このコマンドは、 keystore.jks



ファイルに保存されているエイリアスtestkey



持つリポジトリエントリを削除します。







証明書リクエストの生成



keytool



ユーティリティは、 certreq



を使用して証明書要求を生成できます。 証明書要求は、組織の公開証明書を作成するための証明機関(CA)への要求です。 証明書要求を作成した後、証明書を作成する認証局(Verisign、Thawte、または他の認証局など)に送信する必要があります。 秘密鍵と公開鍵のペアの証明書要求を生成する前に、この秘密鍵と公開鍵のペアを鍵ストアで生成(またはインポート)する必要があります。 これを行う方法は、対応する章に記載されています。 証明書要求を生成するためのコマンド形式は次のとおりです。 このコマンドを使用するときは、必ずすべての改行を削除してください。







 -certreq -alias alias -sigalg sigalg -file certreq_file -keypass keypass -storetype storetype -keystore keystore -storepass storepass -providerName provider_name -providerClass provider_class_name -providerArg provider_arg -v -protected -Jjavaoption
      
      





-certreq



例を次に-certreq



ます。







 "C:\\Program Files\Java\jdk1.8.0_111\bin\keytool" -certreq -alias testkey -keypass 123456 -storetype JKS -keystore keystore.jks -storepass abcdef -file certreq.certreq
      
      





このコマンドは、 keystore.jks



ファイルにエイリアスtestkey



で保存されたキーの証明書要求を生成し、証明書要求をtestkey



というtestkey



ファイルに書き込みます。







keytoolユーティリティの引数



以下は、さまざまなkeytool



コマンドがkeytool



引数のリストです。 すべてのチームがこれらすべての議論を受け入れるわけではないことを忘れないでください。 特定のコマンドを見て、どの引数を取るかを確認してください。










All Articles