keytool - 鍵と証明書の管理ツール

暗号化鍵、X.509 証明書チェーン、および信頼できる証明書を含むキーストア (データベース) を管理します。

形式

keytool [ commands ]

Java SE 6 で keytool のコマンドインタフェースが変更されました。詳細は、「変更点」のセクションを参照してください。以前に定義されたコマンドも引き続きサポートされています。

説明

keytool は、鍵と証明書を管理するためのユーティリティーです。keytool を使うと、自分の公開鍵と非公開鍵のペア、および関連する証明書を管理し、デジタル署名を使った自己認証 (ほかのユーザーまたはサービスに対して自分自身を認証すること) や、データの整合性と証明書に関するサービスを利用することができます。keytool では、通信相手の公開鍵を (証明書の形で) キャッシュすることもできます。

証明書とは、あるエンティティー (人物、会社など) からのデジタル署名付きの文書のことです。証明書には、ほかのあるエンティティーの公開鍵 (およびその他の情報) が特別な値を持っていることが書かれています。(「証明書」を参照)。データにデジタル署名が付いている場合は、デジタル署名を検証することで、データの整合性およびデータが本物であることをチェックできます。データの整合性とは、データが変更されたり、改変されたりしていないことを意味します。また、データが本物であるとは、そのデータが、データを作成して署名したと称する人物から実際に渡されたデータであることを意味します。

また、keytool を使えば、DES などの対称暗号化/復号化で使用される秘密鍵を管理することもできます。

keytool は、鍵と証明書をキーストアに格納します。

コマンドとオプションに関する注

以下では、コマンドとそのオプションについて説明します。注:

オプションのデフォルト値

オプションのデフォルト値は、次のとおりです。

-alias "mykey"

-keyalg
    "DSA" (when using -genkeypair)
    "DES" (when using -genseckey)

-keysize
    2048 (when using -genkeypair and -keyalg is "RSA")
    1024 (when using -genkeypair and -keyalg is "DSA")
    256 (when using -genkeypair and -keyalg is "EC")
    56 (when using -genseckey and -keyalg is "DES")
    168 (when using -genseckey and -keyalg is "DESede")


-validity 90

-keystore the file named .keystore in the user's home directory

-storetype the value of the "keystore.type" property in the security properties file,
           which is returned by the static getDefaultType method in
           java.security.KeyStore

-file stdin if reading, stdout if writing

-protected false

公開/非公開鍵ペアの生成では、署名アルゴリズム (-sigalg オプション) は基になる非公開鍵のアルゴリズムから派生します。

選択可能な -keyalg および -sigalg の完全な一覧については、「Java 暗号化アーキテクチャー API 仕様 & リファレンス」を参照してください。

一般オプション

-v オプションは、-help コマンドを除くすべてのコマンドで使用できます。このオプションを指定した場合、コマンドは「冗長」モードで実行され、詳細な証明書情報が出力されます。

また、-Jjavaoption オプションも、任意のコマンドで使用できます。このオプションを指定した場合、指定された javaoption 文字列が Java インタプリタに直接渡されます。このオプションには、空白を含めることはできません。このオプションは、実行環境またはメモリー使用を調整する場合に便利です。指定できるインタプリタオプションを一覧表示するには、コマンド行で java -h または java -X と入力してください。

次のオプションは、キーストアに対する操作を行うすべてのコマンドで指定できます。

-storetype storetype

この修飾子は、インスタンスを生成するキーストアのタイプを指定します。

-keystore keystore

キーストアの場所を指定します。

特定の keytool コマンドを実行する際に、JKS ストアタイプが使用され、かつキーストアファイルがまだ存在していなかった場合、新しいキーストアファイルが作成されます。たとえば、keytool -genkeypair の実行時に -keystore オプションが指定されなかった場合、.keystore という名前のデフォルトキーストアファイルがユーザーのホームディレクトリ内にまだ存在していなければ、そこに作成されます。同様に、-keystore ks_file というオプションが指定されてもその ks_file が存在しなかった場合、そのファイルが作成されます。

-keystore オプションからの入力ストリームは、KeyStore.load メソッドに渡されます。URL として NONE が指定されている場合は、null のストリームが KeyStore.load メソッドに渡されます。NONE は、KeyStore がファイルベースではなく、たとえば、ハードウェアトークンデバイスに置かれている場合に指定します。

-storepass[:env|:file] argument

キーストアの整合性を保護するために使うパスワードを指定します。

修飾子 env または file が指定されていない場合、パスワードの値は argument です。argument は、6 文字以上でなければなりません。それ以外の場合、パスワードは次のように取得されます。

  • env: argument という名前の環境変数からパスワードを取得します
  • file: argument という名前のファイルからパスワードを取得します

:-keypass-srckeypass-destkeypass-srcstorepass-deststorepass など、パスワードが必要なほかのすべてのオプションは修飾子 env および file を受け入れます。(パスワードオプションと修飾子は必ずコロン (:) で区切ってください。)

このパスワードは、キーストアの内容にアクセスするすべてのコマンドで使われます。この種のコマンドを実行するときに、コマンド行で -storepass オプションを指定しなかった場合は、パスワードの入力を求められます。

キーストアから情報を取り出す場合は、パスワードを省略できます。パスワードを省略すると、取り出す情報の整合性をチェックできないので、警告が表示されます。

-providerName provider_name

セキュリティープロパティーファイル内に含まれる暗号化サービスプロバイダ名を特定するために使用されます。

-providerClass provider_class_name

暗号化サービスプロバイダがセキュリティープロパティーファイルに指定されていないときは、そのマスタークラスファイルの名前を指定するときに使われます。

-providerArg provider_arg

-providerClass と一緒に使う。provider_class_name のコンストラクタに対する省略可能な文字列入力引数を表します。

-protected

true または false。専用 PIN リーダーなどの保護された認証パスを介してパスワードを指定する必要がある場合には、この値に true を指定してください。

注:-importkeystore コマンドには 2 つのキーストアが関係しているため、ソースキーストアとターゲットキーストアを示す 2 つのオプション (つまり、-srcprotected-destprotected) を指定します。

-ext {name{:critical}{=value}}

X.509 証明書の拡張機能を示します。このオプションは、-genkeypair および -gencert で、生成された証明書に拡張機能を組み込むため、または -certreq で、証明書要求で要求された拡張機能を表示するために使用できます。このオプションは、複数回使用できます。name には、サポートされているエクステンション名 (下記を参照) または任意の OID 番号を指定できます。value を指定した場合は、エクステンションのパラメータを示します。省略した場合は、エクステンションのデフォルト値 (定義されている場合) を示すか、またはエクステンションにパラメータは必要ありません。修飾子 :critical を指定した場合は、拡張機能の isCritical 属性が true であることを意味し、それ以外の場合は false を意味します。:critical の代わりに :c を使用できます。

現在、keytool はこれらの名前付き拡張機能をサポートしています (大文字と小文字を区別しない)。

名前
BC または BasicConstraints 完全な形式:「ca:{true|false}[,pathlen:<len>]」、または「ca:true,pathlen:<len>」の短縮形である <len>。
省略した場合は「ca:true」
KU または KeyUsage usage(,usage)*、usage は digitalSignature、
nonRepudiation (contentCommitment)、keyEncipherment、dataEncipherment、keyAgreement、keyCertSign、cRLSign、encipherOnly、decipherOnly のいずれか。usage は、あいまいさがないかぎり、最初の数文字 (たとえば、digitalSignature の場合は dig) に短縮したり、
キャメル記法 (たとえば、digitalSignature の場合は dS、
cRLSign の場合は cRLS) で指定したりできる。大文字と小文字を区別して使用してください。
EKU または ExtendedkeyUsage usage(,usage)*、usage は anyExtendedKeyUsage、
serverAuth、clientAuth、codeSigning、emailProtection、
timeStamping、OCSPSigning、任意の OID 文字列のいずれか。
指定する usage は、あいまいさがないかぎり、
最初の数文字に短縮したり、
キャメル記法で指定したりできる。大文字と小文字を区別して使用してください。
SAN または SubjectAlternativeName type:value(,type:value)*、type は EMAIL、URI、DNS、IP、または OID。value はタイプを表す文字列形式の値。
IAN または IssuerAlternativeName SubjectAlternativeName と同じ
SIA または SubjectInfoAccess method:location-type:location-value
(,method:location-type:location-value)*、
method は「timeStamping」、「caRepository」、または任意の OID。location-type および location-value は SubjectAlternativeName 拡張機能でサポートされている任意の type:value。
AIA または AuthorityInfoAccess SubjectInfoAccess と同じです。method には、「ocsp」、「caIssuers」、または任意の OID を指定できます。

name を OID で指定した場合、value は OCTET STRING の type および length バイトを除く拡張機能の extnValue の 16 進数でダンプされた DER エンコーディングです。16 進文字列では、標準の 16 進数 (0-9、a-f、A-F) 以外の余分な文字は無視されます。したがって、"01:02:03:04""01020304" はどちらも同じ値として受け入れられます。値がない場合は、拡張機能に空の値のフィールドが含まれます。

特別な名前である 'honored' は、-gencert でのみ使用され、証明書要求に含まれる拡張機能をどのように受け付けるかを示します。この名前の value は、"all" (要求されたすべての拡張機能を受け付ける)、"name{:[critical|non-critical]}" (指定された拡張機能を受け付けるが、異なる isCritical 属性を使用する)、および "-name" (all とともに使用し、例外を示す) のカンマ区切りリストです。要求された拡張機能は、デフォルトでは受け付けられません。

honored による -ext オプションとは別に、名前または OID による -ext オプションを指定すると、すでに受け付けられた拡張機能にその拡張機能が追加されます。ただし、この名前 (または OID) が受け付けられた値に含まれる場合は、その値とクリティカルの程度が要求内の設定をオーバーライドします。

subjectKeyIdentifier 拡張機能は常に作成されます。自己署名でない証明書の場合は、authorityKeyIdentifier が常に作成されます。

注:ユーザーは、拡張機能 (および証明書のほかのフィールド) の組み合わせによってはインターネット標準に準拠しない場合があることに注意してください。詳細は、「証明書の適合性に関する注意事項」を参照してください。

コマンド

キーストアへのデータの作成または追加

-gencert {-rfc} {-infile infile} {-outfile outfile} {-alias alias} {-sigalg sigalg} {-dname dname} {-startdate startdate {-ext ext}* {-validity valDays} [-keypass keypass] {-keystore keystore} [-storepass storepass] {-storetype storetype} {-providername provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

証明書要求ファイル (keytool -certreq コマンドで作成可能) に対する応答として、証明書を生成します。このコマンドは、infile (省略された場合は標準入力) から要求を読み取り、別名の非公開鍵を使って要求に署名し、X.509 証明書を outfile (省略された場合は標準出力) に出力します。-rfc が指定された場合の出力形式は、Base64 でエンコードされた PEM です。それ以外の場合は、バイナリ DER が作成されます。

sigalg には、証明書に署名を付けるときに使用するアルゴリズムを指定します。 startdate は、証明書が有効になる開始時刻/日付です。 valDays には、証明書の有効日数を指定します。

dname が指定されている場合は、生成される証明書のサブジェクトとして使用されます。そうでない場合は、証明書要求の名前が使われます。

ext は、証明書に組み込まれる X.509 拡張機能を示します。-ext の構文については、「一般オプション」を参照してください。

-gencert コマンドを使用すると、証明書チェーンを作成できます。次の例では、証明書チェーンに 3 つの証明書を含む e1 という証明書を作成します。

次のコマンドでは、caca1ca2、および e1 という 4 つの鍵ペアを作成します。

keytool -alias ca -dname CN=CA -genkeypair
keytool -alias ca1 -dname CN=CA -genkeypair
keytool -alias ca2 -dname CN=CA -genkeypair
keytool -alias e1 -dname CN=E1 -genkeypair

次の 2 つのコマンドでは、署名付き証明書のチェーンを作成します。ca が ca1 に署名し、ca1 signs ca2、これらのすべてが自己発行されます。

keytool -alias ca1 -certreq | keytool -alias ca -gencert -ext san=dns:ca1 | keytool -alias ca1 -importcert
keytool -alias ca2 -certreq | $KT -alias ca1 -gencert -ext san=dns:ca2 | $KT -alias ca2 -importcert

次のコマンドでは、証明書 e1 を作成し、それを ca2 によって署名された e1.cert ファイルに格納します。この結果、e1 の証明書チェーンには caca1、および ca2 が含まれることになります。

keytool -alias e1 -certreq | keytool -alias ca2 -gencert > e1.cert
-genkeypair {-alias alias} {-keyalg keyalg} {-keysize keysize} {-sigalg sigalg} [-dname dname] [-keypass keypass] {-startdate value} {-ext ext}* {-validity valDays} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

鍵のペア (公開鍵および関連する非公開鍵) を生成します。公開鍵は X.509 v3 自己署名証明書でラップされます。証明書は、単一の要素を持つ証明書チェーンとして格納されます。この証明書チェーンと非公開鍵は、alias で特定される新しいキーストアエントリに格納されます。

keyalg には、鍵のペアを生成するのに使うアルゴリズムを指定し、keysize には、生成する各鍵のサイズを指定します。sigalg には、自己署名証明書に署名を付けるときに使うアルゴリズムを指定します。このアルゴリズムは、keyalg と互換性のあるものでなければなりません。

dname には、alias に関連付け、自己署名証明書の issuer フィールドと subject フィールドとして使う X.500 識別名を指定します。コマンド行で識別名を指定しなかった場合は、識別名の入力を求められます。

keypass には、生成される鍵のペアのうち、非公開鍵を保護するのに使うパスワードを指定します。パスワードを指定しなかった場合、ユーザーはその入力を求められます。プロンプトで Return キーを押すと、キーストアに使用されるものと同じパスワードが鍵のパスワードに設定されます。keypass は、6 文字以上でなければいけません。

startdate には、証明書の発行時間を指定します。これは、X.509 証明書の Validity フィールドの「Not Before」値としても知られています。

このオプションの値は、次のいずれかの形式で設定できます。

  1. ([+-]nnn[ymdHMS])+
  2. [yyyy/mm/dd] [HH:MM:SS]

最初の形式では、現在の時間から指定された値だけシフトした時間が発行時間になります。この値は、サブ値のシーケンスを連結したものです。各サブ値の内部では、プラス記号 (+) が未来へのシフトを意味し、マイナス記号 (-) が過去へのシフトを意味します。シフトする時間は、年、月、日、時、分、または秒 (それぞれ「y」、「m」、「d」、「H」、「M」、または「S」の 1 文字で示される) を単位とする nnn です。発行時間の正確な値は、左端のサブ値から順に java.util.GregorianCalendar.add(int field, int amount) メソッドを使用して計算されます。たとえば、"-startdate -1y+1m-1d" を指定すると、発行時間は次のようになります。

   Calendar c = new GregorianCalendar();
   c.add(Calendar.YEAR, -1);
   c.add(Calendar.MONTH, 1);
   c.add(Calendar.DATE, -1);
   return c.getTime()

2 番目の形式では、ユーザーが年/月/日と時間:分:秒の 2 つの部分に正確な発行時間を設定します (ローカルタイムゾーンを使用)。ユーザーは、一方の部分だけを指定できます。その場合、もう一方の部分は現在の日付 (または時間) と同じと見なされます。ユーザーは、形式の定義に示された正確な桁数を指定する必要があります (短い場合は 0 でパディングします)。日付と時間の両方を指定する場合は、2 つの部分の間に空白文字を 1 つだけ入れます。時間は、常に 24 時間形式で指定してください。

このオプションを指定しなかった場合、開始日は現在の時間になります。このオプションは最大で 1 回しか指定できません。

valDays には、証明書が有効と見なされる日数 (開始日は -startdate で指定された日付か、-startdate が指定されていない場合は現在の日付) を指定します。

このコマンドは、以前のリリースでは -genkey という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 -genkeypair を使用することをお勧めします。

-genseckey {-alias alias} {-keyalg keyalg} {-keysize keysize} [-keypass keypass] {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

秘密鍵を生成し、それを alias で特定される新しい KeyStore.SecretKeyEntry 内に格納します。

keyalg には秘密鍵の生成に使用するアルゴリズムを、keysize には生成する鍵のサイズを、それぞれ指定します。keypass は秘密鍵の保護に使用するパスワードです。パスワードを指定しなかった場合、ユーザーはその入力を求められます。プロンプトで Return キーを押すと、キーストアに使用されるものと同じパスワードが鍵のパスワードに設定されます。keypass は、6 文字以上でなければいけません。

-importcert {-alias alias} {-file cert_file} [-keypass keypass] {-noprompt} {-trustcacerts} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerName provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

ファイル cert_file から証明書または証明書チェーン (証明書チェーンの場合は、PKCS#7 形式の応答または X.509 証明書のシーケンスで提供されるもの) を読み取り、alias によって特定されるキーストアエントリに格納します。ファイルが指定されていない場合は、標準入力から証明書または証明書チェーンを読み取ります。

keytool では、X.509 v1、v2、v3 の証明書、および、PKCS#7 形式の証明書から構成されている PKCS#7 形式の証明書チェーンをインポートできます。インポートするデータは、バイナリ符号化方式、または出力可能符号化方式 (Base64 符号化とも呼ばれる) のどちらかで提供する必要があります。出力可能符号化方式は、インターネット RFC 1421 規格で定義されています。この符号化方式の場合、証明書は「-----BEGIN」で始まる文字列で開始され、「-----END」で始まる文字列で終了しなければなりません。

証明書のインポートには、次の 2 つの目的があります。

  1. 信頼できる証明書のリストに証明書を追加する
  2. CA に証明書署名要求 (-certreq コマンドを参照) を送信した結果として、CA から受け取った証明書応答をインポートする。

どちらの種類のインポートを行うかは、-alias オプションの値によって指定します。

  1. 別名が鍵エントリをポイントしない場合keytool はユーザーが信頼できる証明書エントリを追加しようとしていると見なします。この場合、別名がキーストア内にすでに存在していてはいけません。別名がすでに存在している場合、その別名の信頼できる証明書がすでに存在することになるので、keytool はエラーを出力し、証明書のインポートを行いません。
  2. 別名が鍵エントリをポイントする場合keytool はユーザーが証明書応答をインポートしようとしていると見なします。

新しい信頼できる証明書のインポート

keytool は、キーストアに証明書を追加する前に、キーストア内にすでに存在する信頼できる証明書を使って、インポートする証明書から (ルート CA の) 自己署名証明書に至るまでの信頼のチェーンの構築を試みます。

-trustcacerts オプションを指定した場合、追加の証明書は信頼のチェーン、つまり「cacerts」という名前のファイルに含まれる証明書と見なされます。

keytool が、インポートする証明書から自己署名証明書 (キーストアまたは cacerts ファイルに含まれている自己署名証明書) に至るまでの信頼のパスの構築に失敗した場合は、インポートする証明書の情報を出力し、ユーザーに確認を求めます。この場合は、表示された証明書のフィンガープリントと、ほかのなんらかの (信頼できる) 情報源 (証明書の所有者本人など) から入手したフィンガープリントとを比較します。「信頼できる証明書」として証明書をインポートするときは、証明書が有効であることを慎重に確認する必要があります。詳細は、「信頼できる証明書のインポートに関する注意事項」を参照してください。インポート操作は、証明書を確認する時点で中止できます。ただし、-noprompt オプションが指定されている場合、ユーザーとの対話は行われません。

証明応答のインポート

証明書応答をインポートするときは、キーストア内の信頼できる証明書、および (-trustcacerts オプションが指定されている場合は) cacerts キーストアファイルで構成された証明書を使って証明書応答が検証されます。

証明応答が信頼できるかどうかを決定する方法は次のとおりです。

  • 証明書応答が単一の X.509 証明書である場合keytool は、証明書応答から (ルート CA の) 自己署名証明書に至るまでの信頼チェーンの確立を試みます。証明書応答と、証明書応答の認証に使われる証明書の階層構造は、alias の新しい証明書チェーンを形成します。信頼チェーンが確立されない場合、証明応答はインポートされません。この場合、keytool は証明書を出力せず、ユーザーに検証を求めるプロンプトを表示します。ユーザーが証明書応答の信頼性を判断するのは、不可能ではなくても非常に困難だからです。
  • 証明書応答が PKCS#7 形式の証明書チェーンまたは X.509 証明書のシーケンスである場合は、最初にユーザー証明書、次にゼロまたは追加の CA 証明書がくるようにチェーンが並べ替えられます。チェーンの最後がルート CA の自己署名証明書であり、-trustcacerts オプションが指定された場合、keytool は、ルート CA の自己署名証明書とキーストア内または「cacerts」キーストアファイル内の信頼できる証明書を比較し、一致するものがあるかどうかを調べます。チェーンの最後がルート CA の自己署名証明書ではなく、-trustcacerts オプションが指定された場合、keytool は、キーストア内または「cacerts」キーストアファイル内の信頼できる証明書からルート CA の自己署名証明書を見つけ、チェーンの最後に追加しようとします。証明書が見つからず、-noprompt オプションが指定されてない場合は、チェーンの最後の証明書に関する情報が出力され、ユーザーはそれを確認するように求められます。

証明書応答内の公開鍵が alias の下にすでに格納されているユーザーの公開鍵に一致した場合、古い証明書チェーンが応答内の新しい証明書チェーンで置き換えられます。以前の証明書チェーンを新しい証明書チェーンで置き換えることができるのは、有効な keypass、つまり該当するエントリの非公開鍵を保護するためのパスワードを指定した場合だけです。パスワードを指定しておらず、非公開鍵のパスワードがキーストアのパスワードと異なる場合は、非公開鍵のパスワードの入力を求められます。

このコマンドは、以前のリリースでは -import という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 -importcert を使用することをお勧めします。

-importkeystore -srckeystore srckeystore -destkeystore destkeystore {-srcstoretype srcstoretype} {-deststoretype deststoretype} [-srcstorepass srcstorepass] [-deststorepass deststorepass] {-srcprotected} {-destprotected} {-srcalias srcalias {-destalias destalias} [-srckeypass srckeypass] [-destkeypass destkeypass] } {-noprompt} {-srcProviderName src_provider_name} {-destProviderName dest_provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

ソースキーストアからターゲットキーストアへ、単一のエントリまたはすべてのエントリをインポートします。

srcalias オプションが指定された場合、このコマンドは、その別名で特定される単一のエントリをターゲットキーストアにインポートします。destalias 経由でターゲット別名が指定されなかった場合、srcalias がターゲット別名として使用されます。ソースのエントリがパスワードで保護されていた場合、srckeypass を使ってそのエントリが回復されます。srckeypass が指定されなかった場合、keytoolsrcstorepass を使ってそのエントリを回復しようとします。srcstorepass が指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ターゲットエントリは destkeypass によって保護されます。destkeypass が指定されなかった場合、ターゲットエントリはソースエントリのパスワードによって保護されます。

srcalias オプションが指定されなかった場合、ソースキーストア内のすべてのエントリがターゲットキーストア内にインポートされます。各ターゲットエントリは対応するソースエントリの別名の下に格納されます。ソースのエントリがパスワードで保護されていた場合、srcstorepass を使ってそのエントリが回復されます。srcstorepass が指定されなかったか正しくなかった場合、ユーザーはパスワードの入力を求められます。ソースキーストア内のあるエントリタイプがターゲットキーストアでサポートされていない場合や、あるエントリをターゲットキーストアに格納する際にエラーが発生した場合、ユーザーはそのエントリをスキップして処理を続行するか、あるいは処理を中断するかの選択を求められます。ターゲットエントリはソースエントリのパスワードによって保護されます。

ターゲット別名がターゲットキーストア内にすでに存在していた場合、ユーザーは、そのエントリを上書きするか、あるいは異なる別名の下で新しいエントリを作成するかの選択を求められます。

-noprompt を指定した場合、ユーザーは新しいターゲット別名の入力を求められません。既存のエントリはそのターゲット別名で自動的に上書きされます。最後に、インポートできないエントリは自動的にスキップされ、警告が出力されます。

-printcertreq {-file file}

keytool -certreq コマンドで生成できる PKCS#10 形式の証明書要求の内容を出力します。このコマンドは、ファイル (省略されている場合は標準入力) から要求を読み取ります。

データのエクスポート

-certreq {-alias alias} {-dname dname} {-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}

PKCS#10 形式を使って証明書署名要求 (CSR) を生成します。

CSR は、証明書発行局 (CA) に送信することを目的としたものです。CA は、証明書要求者を (通常はオフラインで) 認証し、証明書または証明書チェーンを送り返します。この証明書または証明書チェーンは、キーストア内の既存の証明書チェーン (最初は 1 つの自己署名証明書から構成される) に置き換えて使います。

alias に関連付けられた非公開鍵は、PKCS#10 証明書要求を作成するのに使われます。非公開鍵はキーストア内ではパスワードによって保護されているので、非公開鍵にアクセスするには、適切なパスワードを提供する必要があります。コマンド行で keypass を指定しておらず、非公開鍵のパスワードがキーストアのパスワードと異なる場合は、非公開鍵のパスワードの入力を求められます。dname が指定された場合は、CSR 内のサブジェクトとして使われます。それ以外の場合は、別名に関連付けられた X.500 識別名が使われます。

sigalg には、CSR に署名を付けるときに使うアルゴリズムを指定します。

CSR は、ファイル certreq_file に格納されます。ファイルが指定されていない場合は、標準出力に CSR が出力されます。

CA からの応答をインポートするには、importcert コマンドを使います。

-exportcert {-alias alias} {-file cert_file} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerName provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-rfc} {-v} {-protected} {-Jjavaoption}

alias に関連付けられた証明書を (キーストアから) 読み取り、ファイル cert_file に格納します。

ファイルが指定されていない場合は、標準出力に証明書が出力されます。

デフォルトでは、バイナリ符号化方式の証明書が出力されます。ただし、-rfc オプションを指定した場合は、出力可能符号化方式の証明書が出力されます。出力可能符号化方式は、インターネット RFC 1421 規格で定義されています。

alias が、信頼できる証明書を参照している場合は、該当する証明書が出力されます。それ以外の場合、alias は、関連付けられた証明書チェーンを持つ鍵エントリを参照します。この場合は、チェーン内の最初の証明書が返されます。この証明書は、alias によって表されるエンティティーの公開鍵を認証する証明書です。

このコマンドは、以前のリリースでは -export という名前でした。この古い名前は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。ただし、今後はわかりやすいように、新しい名前 -exportcert を使用することをお勧めします。

データの表示

-list {-alias alias} {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerName provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-v | -rfc} {-protected} {-Jjavaoption}

alias で特定されるキーストアエントリの内容を (標準出力に) 出力します。別名が指定されていない場合は、キーストア全体の内容が表示されます。

このコマンドは、デフォルトでは証明書の SHA1 フィンガープリントを出力します。-v オプションが指定されている場合は、所有者、発行者、シリアル番号、拡張機能などの付加的な情報とともに、人間が読むことのできる形式で証明書が出力されます。-rfc オプションが指定されている場合は、出力可能符号化方式で証明書の内容が出力されます。出力可能符号化方式は、インターネット RFC 1421 規格で定義されています。

-v オプションと -rfc オプションを同時に指定することはできません。

-printcert {-file cert_file | -sslserver host[:port]} {-jarfile JAR_file {-rfc} {-v} {-Jjavaoption}

ファイル cert_filehost:port にある SSL サーバー、または署名付き JAR ファイル JAR_file (-jarfile オプションを使用) から証明書を読み取り、人間が読むことのできる形式で証明書の内容を出力します。ポートが指定されなかった場合は、標準の HTTPS ポート 443 が使用されます。-sslserver オプションと -file オプションを同時に指定することはできません。従わない場合は、エラーが報告されます。どちらのオプションも指定されていない場合は、標準入力から証明書が読み取られます。

-rfc が指定されている場合、keytool はインターネット RFC 1421 規格で定義されている PEM モードで証明書を出力します。

証明書がファイルまたは標準入力から読み取られた場合は、バイナリ符号化方式またはインターネット RFC 1421 規格で定義されている出力可能符号化方式で証明書を表示できます。

SSL サーバーがファイアウォールの背後にある場合は、コマンド行に -J-Dhttps.proxyHost=proxyhost および -J-Dhttps.proxyPort=proxyport を指定してプロキシトンネリングを使用できます。詳細は、「JSSE リファレンスガイド」を参照してください。

:このコマンドはキーストアとは関係なく動作します。

-printcrl -file crl_ {-v}

ファイル crl_file から証明書の取り消しリスト (CRL) を読み取ります。

証明書の取り消しリスト (CRL) は、発行元の証明書発行局 (CA) によって取り消されたデジタル証明書のリストです。CA は crl_file を生成します。

:このコマンドはキーストアとは関係なく動作します。

キーストアの管理

-storepasswd [-new new_storepass] {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerName provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-Jjavaoption}

キーストアの内容の整合性を保護するために使うパスワードを変更します。new_storepass には、新しいパスワードを指定します。new_storepass は、6 文字以上でなければなりません。

-keypasswd {-alias alias} [-keypass old_keypass] [-new new_keypass] {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerName provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-Jjavaoption}

alias によって特定される非公開/秘密鍵を保護するためのパスワードを、old_keypass から new_keypass に変更します。new_keypass は、6 文字以上でなければなりません。

コマンド行で -keypass オプションを指定しておらず、鍵のパスワードがキーストアのパスワードと異なる場合は、鍵のパスワードの入力を求められます。

コマンド行で -new オプションを指定しなかった場合は、新しいパスワードの入力を求められます。

-delete [-alias alias] {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerName provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

alias によって特定されるエントリをキーストアから削除します。コマンド行で別名を指定しなかった場合は、別名の入力を求められます。

-changealias {-alias alias} [-destalias destalias] [-keypass keypass] {-storetype storetype} {-keystore keystore} [-storepass storepass] {-providerName provider_name} {-providerClass provider_class_name {-providerArg provider_arg}} {-v} {-protected} {-Jjavaoption}

既存のキーストアエントリを指定された alias から新しい別名 destalias に移動します。ターゲット別名が指定されなかった場合、このコマンドはその入力を求めます。元のエントリがエントリパスワードで保護されていた場合、「-keypass」オプション経由でそのパスワードを指定できます。鍵パスワードが指定されなかった場合、storepass (指定された場合) がまず試みられます。その試みが失敗すると、ユーザーはパスワードの入力を求められます。

ヘルプの表示

-help

基本的なコマンドとそのオプションの一覧を表示します。

特定のコマンドの詳細については、次を入力します。command_name はコマンドの名前です。

    keytool -command_name -help

ここでは、自分の鍵のペアおよび信頼できるエンティティーからの証明書を管理するためのキーストアを作成する場合を例として示します。

鍵のペアの生成

まず、キーストアを作成して鍵のペアを生成する必要があります。次に示すのは、実行するコマンドの例です。

    keytool -genkeypair -dname "cn=Mark Jones, ou=Java, o=Oracle, c=US"
      -alias business -keypass <new password for private key> -keystore /working/mykeystore
      -storepass <new password for keystore> -validity 180

注:このコマンドは 1 行に入力しなければなりません。例で複数行に入力しているのは読みやすくするためです。

この例では、working ディレクトリに mykeystore という名前のキーストアを作成し (キーストアはまだ存在していないと仮定する)、作成したキーストアに <new password for keystore> で指定されたパスワードを割り当てます。生成する公開鍵と非公開鍵のペアに対応するエンティティーの「識別名」は、通称が「Mark Jones」、組織単位が「Java」、組織が「Oracle」、2 文字の国番号が「US」です。公開鍵と非公開鍵のサイズはどちらも 1024 ビットで、鍵の作成にはデフォルトの DSA 鍵生成アルゴリズムを使用します。

このコマンドは、公開鍵と識別名情報を含む自己署名証明書 (デフォルトの SHA1withDSA 署名アルゴリズムを使用) を作成します。証明書の有効期間は 180 日です。証明書は、別名「business」で特定されるキーストアエントリ内の非公開鍵に関連付けられます。非公開鍵には、<new password for private key> で指定されたパスワードが割り当てられます。

オプションのデフォルト値を使う場合は、上に示したコマンドを大幅に短くすることができます。実際には、オプションを 1 つも指定せずにコマンドを実行することも可能です。デフォルト値を持つオプションでは、オプションを指定しなければデフォルト値が使われ、必要な値については入力を求められます。たとえば、単に次のように入力することもできます。

    keytool -genkeypair

この場合は、mykey という別名でキーストアエントリが作成され、新しく生成された鍵のペア、および 90 日間有効な証明書がこのエントリに格納されます。このエントリは、ホームディレクトリ内の .keystore という名前のキーストアに置かれます。このキーストアがまだ存在していない場合は、作成されます。識別名情報、キーストアのパスワード、および非公開鍵のパスワードについては、入力を求められます。

以下では、オプションを指定しないで -genkeypair コマンドを実行したものとして例を示します。情報の入力を求められた場合は、最初に示した -genkeypair コマンドの値 (たとえば、「cn=Mark Jones, ou=Java, o=Oracle, c=US」という識別名) を入力したものとします。

証明書発行局に対する署名付き証明書の要求

現時点で手元にあるのは、1 通の自己署名証明書だけです。証明書に証明書発行局 (CA) の署名が付いていれば、ほかのユーザーから証明書が信頼できる可能性も高くなります。CA の署名を取得するには、まず、証明書署名要求 (CSR) を生成します。たとえば、次のようにします。

    keytool -certreq -file MarkJ.csr

CSR (デフォルト別名「mykey」によって特定されるエンティティーの CSR) が作成され、MarkJ.csr という名前のファイルに置かれます。このファイルは、VeriSign などの CA に提出します。CA は要求者を (通常はオフラインで) 認証し、要求者の公開鍵を認証した署名付きの証明書を送り返します。場合によっては、CA が証明書のチェーンを返すこともあります。証明書のチェーンでは、各証明書がチェーン内のその前の署名者の公開鍵を認証します。

CA からの証明書のインポート

作成した自己署名証明書は、証明書チェーンで置き換える必要があります。証明書チェーンでは、各証明書が、「ルート」CA を起点とするチェーン内の次の証明書の署名者の公開鍵を認証します。

CA からの証明書応答をインポートするには、キーストアか、(importcert コマンドで説明しているように) cacerts キーストアファイル内に 1 つ以上の「信頼できる証明書」がある必要があります。

cacerts キーストアファイルは、複数の VeriSign ルート CA 証明書を含んだ状態で出荷されているので、VeriSign の証明書を、信頼できる証明書としてキーストア内にインポートする必要はない可能性があります。ただし、ほかの CA に対して署名付き証明書を要求していて、この CA の公開鍵を認証する証明書が、cacerts にまだ追加されていない場合は、該当する CA からの証明書を、「信頼できる証明書」としてインポートする必要があります。

通常、CA からの証明書は、自己署名証明書、またはほかの CA によって署名された証明書です (後者の場合は、該当するほかの CA の公開鍵を認証する証明書も必要)。たとえば、ABC という企業が CA だとします。このとき、この CA の公開鍵を認証する自己署名証明書と考えられる ABCCA.cer という名前のファイルを、ABC から入手したとします。

「信頼できる証明書」として証明書をインポートするときは、証明書が有効であることを慎重に確認する必要があります。まず、証明書の内容を表示して (keytool -printcert コマンドを使用するか、または -noprompt オプションを指定しないで keytool -importcert コマンドを使用)、表示された証明書のフィンガープリントが期待されるフィンガープリントと一致するかどうかを確認します。証明書を送信した人物に連絡し、この人物が提示した (または安全な公開鍵のリポジトリによって提示される) フィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中でほかの何者か (攻撃者など) による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのものを信頼することになります。

ABCCA.cer を有効な証明書として信頼する場合は、証明書をキーストアに追加できます。たとえば、次のようにします。

    keytool -importcert -alias abc -file ABCCA.cer

ABCCA.cer ファイルのデータを含む「信頼できる証明書」のエントリがキーストア内に作成され、該当するエントリに abc という別名が割り当てられます。

CA からの証明応答のインポート

証明書署名要求の提出先の CA の公開鍵を認証する証明書をインポートしたあとは (または同種の証明書がすでに cacerts ファイル内に存在している場合は)、証明書応答をインポートし、自己署名証明書を証明書チェーンで置き換えることができます。この証明書チェーンは、CA の応答がチェーンの場合、証明書署名要求に対する応答として CA から送り返された証明書チェーンです。また、CA の応答が単一の証明書の場合は、この証明応答と、インポート先のキーストア内または cacerts キーストアファイル内にすでに存在する信頼できる証明書とを使って構築した証明書チェーンです。

たとえば、証明書署名要求を VeriSign に送信したとします。送り返された証明書の名前が VSMarkJ.cer だとすると、次のようにして応答をインポートできます。

    keytool -importcert -trustcacerts -file VSMarkJ.cer

公開鍵を認証する証明書のエクスポート

たとえば、jarsigner ツールを使って Java ARchive (JAR) ファイルに署名を付けたとします。この JAR ファイルはクライアントによって使われますが、クライアント側では署名を認証したいと考えています。

クライアントが署名を認証する方法の 1 つに、まず自分の公開鍵の証明書を「信頼できる」エントリとしてクライアントのキーストアにインポートする方法があります。そのためには、証明書をエクスポートして、クライアントに提供します。たとえば、次のようにして、証明書を MJ.cer という名前のファイルにコピーします。このエントリには「mykey」という別名が使われているとします。

    keytool -exportcert -alias mykey -file MJ.cer

証明書と署名付き JAR ファイルを入手したクライアントは、jarsigner ツールを使って署名を認証できます。

キーストアのインポート

コマンド「importkeystore」を使えば、あるキーストアの全体を別のキーストア内にインポートできます。これは、鍵や証明書といったソースキーストア内のすべてのエントリが、単一のコマンドを使ってターゲットキーストア内にインポートされることを意味します。このコマンドを使えば、異なるタイプのキーストア内に含まれるエントリをインポートすることができます。インポート時には、ターゲットキーストア内の新しいエントリはすべて、元と同じ別名および (秘密鍵や非公開鍵の場合は) 保護用パスワードを持ちます。ソースキーストア内の非公開鍵や秘密鍵の回復時に問題が発生した場合、keytool はユーザーにパスワードの入力を求めます。このコマンドは、別名の重複を検出すると、ユーザーに新しい別名の入力を求めます。ユーザーは、新しい別名を指定することも、単純に既存の別名の上書きを keytool に許可することもできます。

たとえば、通常の JKS タイプのキーストア key.jks 内のエントリを PKCS #11 タイプのハードウェアベースのキーストア内にインポートするには、次のコマンドを使用できます。

  keytool -importkeystore
    -srckeystore key.jks -destkeystore NONE
    -srcstoretype JKS -deststoretype PKCS11
    -srcstorepass <source keystore password> -deststorepass <destination keystore password>

また、importkeystore コマンドを使えば、あるソースキーストア内の単一のエントリをターゲットキーストアにインポートすることもできます。この場合、上記の例で示したオプションに加え、インポート対象となる別名を指定する必要があります。srcalias オプションを指定する場合には、ターゲット別名もコマンド行から指定できるほか、秘密/非公開鍵の保護用パスワードやターゲット保護用パスワードも指定できます。その方法を示すコマンドを次に示します。

  keytool -importkeystore
    -srckeystore key.jks -destkeystore NONE
    -srcstoretype JKS -deststoretype PKCS11
    -srcstorepass <source keystore password> -deststorepass <destination keystore password>
    -srcalias myprivatekey -destalias myoldprivatekey
    -srckeypass <source entry password> -destkeypass <destination entry password>
    -noprompt

一般的な SSL サーバー用の証明書の生成

3 つのエンティティー、つまり、ルート CA (root)、中間 CA (ca)、および SSL サーバー (server) 用の鍵ペアと証明書を生成する keytool コマンドを次に示します。すべての証明書が同じキーストアに格納されていることを確認してください。これらの例では、鍵アルゴリズムとして RSA を指定することをお勧めします。

keytool -genkeypair -keystore root.jks -alias root -ext bc:c
keytool -genkeypair -keystore ca.jks -alias ca -ext bc:c
keytool -genkeypair -keystore server.jks -alias server

keytool -keystore root.jks -alias root -exportcert -rfc > root.pem

keytool -storepass <storepass> -keystore ca.jks -certreq -alias ca | keytool -storepass <storepass> -keystore root.jks -gencert -alias root -ext BC=0 -rfc > ca.pem
keytool -keystore ca.jks -importcert -alias ca -file ca.pem

keytool -storepass <storepass> -keystore server.jks -certreq -alias server | keytool -storepass <storepass> -keystore ca.jks -gencert -alias ca -ext ku:c=dig,kE -rfc > server.pem
cat root.pem ca.pem server.pem | keytool -keystore server.jks -importcert -alias server

用語と警告

KeyStore

キーストアは、暗号化の鍵と証明書を格納するための機能です。

証明書

証明書 (公開鍵証明書とも呼ぶ) とは、あるエンティティー (発行者) からのデジタル署名付きの文書のことです。証明書には、ほかのあるエンティティー (サブジェクト) の公開鍵 (およびその他の情報) が特定の値を持っていることが書かれています。

X.500 識別名

X.500 識別名は、エンティティーを特定するために使われます。たとえば、X.509 証明書の subject フィールドと issuer (署名者) フィールドで指定される名前は、X.500 識別名です。keytool は、次のサブパートをサポートしています。

-genkeypair コマンド-dname オプションの値として識別名文字列を指定する場合は、次の形式で指定する必要があります。

CN=cName, OU=orgUnit, O=org, L=city, S=state, C=countryCode

イタリック体の項目は、実際に指定する値を表します。短縮形のキーワードの意味は、次のとおりです。

        CN=commonName
        OU=organizationUnit
        O=organizationName
        L=localityName
        S=stateName
        C=country

次に示すのは、識別名文字列の例です。

CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino, S=California, C=US

次は、この文字列を使ったコマンドの例です。

keytool -genkeypair -dname "CN=Mark Smith, OU=Java, O=Oracle, L=Cupertino,
S=California, C=US" -alias mark

キーワードの短縮形では、大文字と小文字は区別されません。たとえば、CN、cn、および Cn は、どれも同じものとして扱われます。

一方、キーワードの指定順序には意味があり、各サブコンポーネントは上に示した順序で指定する必要があります。ただし、サブコンポーネントをすべて指定する必要はありません。たとえば、次のように一部のサブコンポーネントだけを指定できます。

CN=Steve Meier, OU=Java, O=Oracle, C=US

識別名文字列の値にコンマが含まれる場合に、コマンド行で文字列を指定するときには、次のようにコンマを文字 \ でエスケープする必要があります。

   cn=Peter Schuster, ou=Java\, Product Development, o=Oracle, c=US

識別名文字列をコマンド行で指定する必要はありません。識別名を必要とするコマンドを実行するときに、コマンド行で識別名を指定しなかった場合は、各サブコンポーネントの入力を求められます。この場合は、コンマを文字 \ でエスケープする必要はありません。

信頼できる証明書のインポートに関する注意事項

重要:信頼できる証明書として証明書をインポートする前に、証明書の内容を慎重に調べてください。

まず、証明書の内容を表示して (-printcert コマンドを使用するか、または -noprompt オプションを指定しないで -importcert コマンドを使用)、表示された証明書のフィンガープリントが期待されるフィンガープリントと一致するかどうかを確認します。たとえば、あるユーザーから証明書が送られてきて、この証明書を /tmp/cert という名前でファイルに格納しているとします。この場合は、信頼できる証明書のリストにこの証明書を追加する前に、-printcert コマンドを実行してフィンガープリントを表示できます。たとえば、次のようにします。

  keytool -printcert -file /tmp/cert
    Owner: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll
    Issuer: CN=ll, OU=ll, O=ll, L=ll, S=ll, C=ll
    Serial Number: 59092b34
    Valid from: Thu Sep 25 18:01:13 PDT 1997 until: Wed Dec 24 17:01:13 PST 1997
    Certificate Fingerprints:
         MD5:  11:81:AD:92:C8:E5:0E:A2:01:2E:D4:7A:D7:5F:07:6F
         SHA1: 20:B6:17:FA:EF:E5:55:8A:D0:71:1F:E8:D6:9D:C0:37:13:0E:5E:FE
         SHA256: 90:7B:70:0A:EA:DC:16:79:92:99:41:FF:8A:FE:EB:90:
                 17:75:E0:90:B2:24:4D:3A:2A:16:A6:E4:11:0F:67:A4

次に、証明書を送信した人物に連絡し、この人物が提示したフィンガープリントと、上のコマンドで表示されたフィンガープリントとを比較します。フィンガープリントが一致すれば、送信途中でほかの何者か (攻撃者など) による証明書のすり替えが行われていないことを確認できます。送信途中でこの種の攻撃が行われていた場合、チェックを行わずに証明書をインポートすると、攻撃者によって署名されたすべてのもの (攻撃的意図を持つクラスファイルを含んだ JAR ファイルなど) を信頼することになります。

注:証明書をインポートする前に必ず -printcert コマンドを実行しなければならないわけではありません。キーストア内の信頼できる証明書のリストに証明書を追加する前に -importcert コマンドを実行すると、証明書の情報が出力され、確認を求めるメッセージが表示されます。インポート操作は、この時点で中止できます。ただし、確認メッセージが表示されるのは、-importcert コマンドを -noprompt オプションを指定せずに実行した場合だけです。-noprompt オプションが指定されている場合、ユーザーとの対話は行われません。

パスワードに関する注意事項

キーストアに対する操作を行うほとんどのコマンドでは、ストアのパスワードが必要です。また、一部のコマンドでは、非公開/秘密鍵のパスワードが必要になることがあります。

パスワードはコマンド行で指定できます (ストアのパスワードには -storepass オプション、非公開鍵のパスワードには -keypass オプションを使用)。ただし、テストを目的とする場合、または安全であることがわかっているシステムで実行する場合以外は、コマンド行やスクリプトでパスワードを指定しないでください。

必要なパスワードのオプションをコマンド行で指定しなかった場合は、パスワードの入力を求められます。

証明書の適合性に関する注意事項

インターネット標準の RFC 5280 では、X.509 証明書が準拠するプロファイルを定義しています。このプロファイルには、証明書のフィールドやエクステンションで有効な値や値の組合せが含まれています。 keytool では、これらのすべての規則が適用されているわけではないので、標準に準拠しない証明書が生成される可能性があり、そのような証明書は JRE やその他のアプリケーションで拒否されることがあります。ユーザーは、-dname-ext などに正しいオプションを指定するようにしてください。

関連項目

変更点

Java SE 6 で keytool のコマンドインタフェースが変更されました。

keytool は、ユーザーがパスワードを入力する際にその入力内容を表示しなくなりました。ユーザーはパスワード入力時にその入力内容を確認できなくなったため、初期キーストアパスワードを設定したり鍵パスワードを変更したりするなど、パスワードの設定や変更を行うたびにパスワードの再入力を求められます。

変更されたコマンドの中には、名前が変更されただけのものもあれば、廃止されてこのドキュメントに記載されなくなったものもあります。以前のすべてのコマンド (名前が変更されたものと廃止されたものの両方) は、このリリースでも引き続きサポートされており、今後のリリースでもサポートされる予定です。keytool のコマンドインタフェースに加えられたすべての変更点の概要を、次に示します。

名前が変更されたコマンド:

廃止されてドキュメントに記載されなくなったコマンド:


Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.