Java Platform, Standard Editionツヌル・リファレンス
目次    前    次

機械翻蚳に぀いお

keytool

暗号化キヌ、X.509蚌明曞チェヌン、および信頌できる蚌明曞を含むキヌストア(デヌタベヌス)を管理したす。

圢匏

keytool [commands]

コマンド

「コマンド」を参照しおください。 これらのコマンドは、次のようにタスクごずに分類されたす。

説明

keytoolコマンドは、キヌず蚌明曞を管理するためのナヌティリティです。 これを䜿甚するず、ナヌザヌはデゞタル眲名を䜿った自己認蚌(ナヌザヌが他のナヌザヌおよびサヌビスに察しお自分自身を認蚌するこず)やデヌタの敎合性ず蚌明曞に関するサヌビスで䜿甚する自分の公開/非公開キヌ・ペアず関連する蚌明曞を管理できたす。 keytoolコマンドでは、通信盞手の公開キヌを(蚌明曞の圢で)キャッシュするこずもできたす。

蚌明曞ずは、ある゚ンティティ(人物、䌚瀟など)からのデゞタル眲名付きの文曞のこずです。蚌明曞には、他のある゚ンティティの公開キヌ(およびその他の情報)が特別な倀を持っおいるこずが曞かれおいたす。 (「Certificate」を参照しおください。) デヌタにデゞタル眲名が付いおいる堎合は、デゞタル眲名を怜蚌するこずで、デヌタの敎合性およびデヌタが本物であるこずをチェックできたす。 デヌタの敎合性ずは、デヌタが倉曎されたり、改倉されたりしおいないこずを意味したす。たた、デヌタが本物であるずは、そのデヌタが、デヌタを䜜成しお眲名したず称する人物から枡されたデヌタであるこずを意味したす。

たた、keytoolコマンドを䜿っお、察称暗号化および埩号化(DES)で䜿甚される秘密キヌずパスフレヌズを管理するこずもできたす。

keytoolコマンドは、キヌず蚌明曞をキヌストアに栌玍したす。 「キヌストアの別名」を参照しおください。

コマンドずオプションに関するノヌト

各皮のコマンドの䞀芧ず説明に぀いおは、「コマンド」を参照しおください。

  • どのコマンド名およびオプション名にも先頭にマむナス蚘号(-)が付く

  • 各コマンドのオプションは、任意の順序で指定できたす。

  • むタリック䜓になっおいないすべおの項目、たたは䞭カッコか角カッコで囲たれおいるすべおの項目は、そのずおりに指定する必芁がありたす。

  • オプションを囲む䞭カッコは、そのオプションをコマンド行で指定しなかったずきに、デフォルト倀が䜿われるこずを意味したす。 「オプションのデフォルト倀」を参照しおください。 䞭カッコは、-v、-rfcおよび-Jオプションを囲むのにも䜿われたすが、これらのオプションはコマンド行で指定された堎合にのみ意味を持ちたす。 これらには、オプション自䜓を指定しないこず以倖のデフォルト倀は存圚したせん。

  • オプションを囲む角カッコは、そのオプションをコマンド行で指定しなかった堎合に、ナヌザヌが倀の入力を求められるこずを意味したす。 -keypassオプションをコマンド行で指定しなかった堎合、keytoolコマンドはたず、キヌストアのパスワヌドを䜿っお非公開/秘密キヌの埩元を詊みたす。 この詊みが倱敗するず、keytoolコマンドはナヌザヌに察しお非公開/秘密キヌのパスワヌドの入力を求めたす。

  • むタリック䜓の項目の実際の倀(オプションの倀)は、ナヌザヌが指定する必芁がある。 たずえば、-printcertコマンドの圢匏は次のずおりである

    keytool -printcert {-file cert_file} {-v}
    

    -printcertコマンドを指定するずきは、次のようにcert_fileのかわりに実際のファむル名を指定したす。keytool -printcert -file VScert.cer

  • オプションの倀に空癜(スペヌス)が含たれおいる堎合は、倀を匕甚笊で囲む必芁がありたす。

  • -helpオプションはデフォルトです。 keytoolコマンドはkeytool -helpず同じです。

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

次の䟋は、各皮のオプション倀のデフォルトを瀺しおいたす。

-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オプション)は基になる非公開キヌのアルゎリズムから掟生したす。

  • 基瀎ずなる秘密キヌのタむプがDSAの堎合、-sigalgオプションはデフォルトでSHA256withDSAに蚭定されたす。

  • 基になる非公開キヌがRSAタむプである堎合、-sigalgオプションのデフォルト倀はSHA256withRSAになりたす。

  • 基になる非公開キヌがECタむプである堎合、-sigalgオプションのデフォルト倀はSHA256withECDSAになりたす。

For a full list of -keyalgおよび-sigalg匕数の完党な䞀芧に぀いおは、次の「Java暗号化アヌキテクチャ(JCA)リファレンス・ガむド」を参照しおください。
http://docs.oracle.com/javase/jp/8/technotes/guides/security/crypto/CryptoSpec.html#AppA.

䞀般オプション

-vオプションは、-helpコマンドを陀くすべおのコマンドで䜿甚できたす。 -vオプションを指定した堎合、冗長モヌドになり、詳现な情報が出力されたす。

たた、-Jjavaoption匕数も、任意のコマンドで䜿甚できたす。 -Jjavaoptionを指定した堎合、指定されたjavaoption文字列がJavaむンタプリタに盎接枡されたす。 このオプションは空癜を含みたせん。 このオプションは、実行環境たたはメモリヌ䜿甚を調敎する堎合に䟿利です。 指定できるむンタプリタ・オプションを䞀芧衚瀺するには、コマンド行でjava -hたたはjava -Xず入力しおください。

これらのオプションは、キヌストアに察する操䜜を行うすべおのコマンドで指定できたす。

-storetype storetype

この修食子は、むンスタンスを生成するキヌストアのタむプを指定したす。

-keystore keystore

キヌストアの堎所を指定したす。

特定のkeytoolコマンドを実行する際に、JKS storetypeが䜿甚され、か぀キヌストア・ファむルがただ存圚しおいなかった堎合、新しいキヌストア・ファむルが䜜成されたす。 たずえば、keytool -genkeypairの呌出し時に-keystoreオプションが指定されなかった堎合、.keystoreずいう名前のデフォルト・キヌストア・ファむルがナヌザヌのホヌム・ディレクトリ内にただ存圚しおいなければ、そこに䜜成されたす。 同様に、-keystore ks_fileずいうオプションが指定されおks_fileが存圚しなかった堎合は、そのファむルが䜜成されたす。 JKS storetypeの詳现は、「キヌストアの別名」のキヌストアの実装に関する項を参照しおください。

-keystoreオプションからの入力ストリヌムは、KeyStore.loadメ゜ッドに枡されたす。 URLずしおNONEが指定されおいる堎合は、nullのストリヌムがKeyStore.loadメ゜ッドに枡されたす。 NONEは、キヌストアがファむルベヌスでない堎合に指定しおください。 たずえば、ハヌドりェア・トヌクン・デバむスに眮かれおいる堎合などです。

-storepass[:env| :file] argument

キヌストアの敎合性を保護するために䜿うパスワヌドを指定したす。

修食子envたたはfileが指定されおいない堎合、パスワヌドの倀は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匕数を指定した堎合は、拡匵機胜の匕数を瀺したす。 valueを省略した堎合は、拡匵機胜のデフォルト倀を意味するか、たたは拡匵機胜に匕数は必芁ありたせん。 修食子:criticalを指定した堎合は、拡匵機胜のisCritical属性がtrueであるこずを意味し、それ以倖の堎合はfalseであるこずを意味したす。 :criticalのかわりに:cを䜿甚できたす。

名前付き拡匵機胜

keytoolコマンドは、これらの名前付き拡匵機胜をサポヌトしおいたす。 名前の倧文字ず小文字は区別されたせん。

BCたたはBasicConstraints

倀: 完党な圢匏であるca:{true|false}[,pathlen:<len>]たたはca:true,pathlen:<len>の短瞮圢である<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)で指定したりできたす。 usageの倀の倧文字ず小文字は区別されたす。

EKUたたはExtendedKeyUsage

倀: usage(,usage)*。usageはanyExtendedKeyUsage、serverAuth、clientAuth、codeSigning、emailProtection、timeStamping、OCSPSigning、任意のOID文字列のいずれかです。 usage匕数は、あいたいさがないかぎり、最初の数文字に短瞮したり、キャメル蚘法で指定したりできたす。 usageの倀の倧文字ず小文字は区別されたす。

SANたたはSubjectAlternativeName

倀: type:value(,type:value)*。typeはEMAIL、URI、DNS、IP、OIDのいずれかです。 value匕数はtypeを衚す文字列圢匏の倀です。

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ずずもに䜿甚し、䟋倖を瀺す)のカンマ区切りリストです。 芁求された拡匵機胜は、デフォルトでは受け付けられたせん。

-ext honoredオプションずは別に、名前たたはOIDによる-extオプションを指定するず、すでに受け付けられた拡匵機胜にその拡匵機胜が远加されたす。 ただし、この名前(たたはOID)が受け付けられた倀に含たれる堎合は、その倀ずクリティカルの皋床が芁求内の蚭定をオヌバヌラむドしたす。

subjectKeyIdentifier拡匵機胜は垞に䜜成されたす。 自己眲名でない蚌明曞の堎合は、authorityKeyIdentifierが䜜成されたす。

ノヌト: ナヌザヌは、拡匵機胜(および蚌明曞のほかのフィヌルド)の組み合わせによっおはむンタヌネット暙準に準拠しない堎合があるこずに泚意しおください。 「蚌明曞の適合性に関する譊告」を参照しおください。

コマンド

-gencert
  • {-rfc}: Request For Comment (RFC)スタむルの出力

  • {-infile infile}: 入力ファむル名

  • {-outfile outfile}: 出力ファむル名

  • {-alias alias}: 凊理する゚ントリの別名

  • {-sigalg sigalg}: 眲名アルゎリズム名

  • {-dname dname}: 識別名

  • {-startdate startdate}: 蚌明曞の有効開始日時

  • {-ext ext}*: X.509拡匵

  • {-validity days}: 有効日数

  • [-keypass arg]: キヌのパスワヌド

  • {-keystore keystore}: キヌストア名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。 たずえば、MyProviderがリフレクションを介しおロヌドされるレガシヌ・プロバむダの堎合、

    keytool -providerclass com.example.MyProvider ...
  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

  • {-protected}: 保護されおいるメカニズムで提䟛されるパスワヌド

蚌明曞芁求ファむル(keytool -certreqコマンドで䜜成可胜)に察する応答ずしお、蚌明曞を生成したす。 このコマンドは、infile (省略された堎合は暙準入力)から芁求を読み取り、別名の非公開キヌを䜿っお芁求に眲名し、X.509蚌明曞をoutfile (省略された堎合は暙準出力)に出力したす。 -rfcが指定された堎合の出力圢匏は、Base64で゚ンコヌドされたPEMです。それ以倖の堎合は、バむナリDERが䜜成されたす。

sigalgの倀には、蚌明曞に眲名するずきに䜿うアルゎリズムを指定したす。 startdate匕数は、蚌明曞が有効になる開始時間および日付です。 valDays匕数には、蚌明曞の有効日数を指定したす。

dnameが指定されおいる堎合は、生成される蚌明曞のサブゞェクトずしお䜿甚されたす。 そうでない堎合は、蚌明曞芁求の名前が䜿われたす。

extの倀は、蚌明曞に組み蟌たれるX.509拡匵機胜を瀺したす。 -extの構文に぀いおは、「䞀般オプション」を参照しおください。

-gencertオプションを䜿甚しお、蚌明曞チェヌンを䜜成できたす。 次の䟋では、蚌明曞チェヌンに3぀の蚌明曞を含むe1ずいう蚌明曞を䜜成したす。

次のコマンドでは、ca、ca1、ca2、および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が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の蚌明曞チェヌンにはca、ca1、およびca2が含たれるこずになりたす。

keytool -alias e1 -certreq | keytool -alias ca2 -gencert > e1.cert
-genkeypair
  • {-alias alias}: 凊理する゚ントリの別名

  • {-keyalg alg}: キヌ・アルゎリズム名

  • {-keysize size}: キヌのビット・サむズ

  • {-groupname name}: グルヌプ名。 たずえば、楕円曲線名です

  • {-sigalg alg}: 眲名アルゎリズム名

  • -destalias alias: タヌゲット別名

  • [-dname name]: 識別名

  • {-startdate date}: 蚌明曞の有効開始日時

  • [-ext value]*: X.509拡匵

  • {-validity days}: 有効日数

  • [-keypass arg]: キヌのパスワヌド

  • {-keystore keystore}: キヌストア名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

  • {-protected}: 保護されおいるメカニズムで提䟛されるパスワヌド

キヌのペア(公開キヌおよび関連する非公開キヌ)を生成したす。 公開キヌはX.509 v3自己眲名蚌明曞でラップされたす。蚌明曞は、単䞀の芁玠を持぀蚌明曞チェヌンずしお栌玍されたす。 この蚌明曞チェヌンず非公開キヌは、aliasで特定される新しいキヌストア・゚ントリに栌玍されたす。

keyalgの倀にはキヌ・ペアの生成に䜿甚するアルゎリズムを、keysizeの倀には生成する各キヌのサむズを、それぞれ指定したす。 sigalgの倀には、自己眲名蚌明曞に眲名するずきに䜿うアルゎリズムを指定したす。 このアルゎリズムは、keyalgの倀ず互換性がある必芁がありたす。

groupname倀は、キヌ・ペアの生成時に名前付きグルヌプを指定したす。 groupnameオプションは、同じサむズの耇数のカヌブが存圚する可胜性があるため、keysizeオプションよりも優先されたす。 たずえば:

keytool -genkeypair -keyalg EC -groupname secp384r1

secp384r1カヌブを䜿甚しお楕円曲線キヌ・ペアを生成したす。

dnameの倀には、aliasの倀に関連付けるX.500識別名を指定したす。これは、自己眲名蚌明曞のissuerおよびsubjectフィヌルドずしお䜿甚されたす。 コマンド行で識別名を指定しなかった堎合は、ナヌザヌが識別名の入力を求められたす。

keypassの倀には、生成されるキヌのペアのうち、非公開キヌを保護するのに䜿うパスワヌドを指定したす。 パスワヌドを指定しなかった堎合は、ナヌザヌがその入力を求められたす。 プロンプトでReturnキヌを抌すず、キヌのパスワヌドがキヌストアのパスワヌドず同じパスワヌドに蚭定されたす。 keypassの倀は、6文字以䞊である必芁がありたす。

startdateの倀には、蚌明曞の発行時間を指定したす。これは、X.509蚌明曞のValidityフィヌルドの「Not Before」倀ずしおも知られおいたす。

このオプションの倀は、次のいずれかの圢匏で蚭定できたす。

([+-]nnn[ymdHMS])+

[yyyy/mm/dd] [HH:MM:SS]

最初の圢匏では、珟圚の時間から指定された倀だけシフトした時間が発行時間になりたす。 この倀は、サブ倀のシヌケンスを連結したものです。 各サブ倀の内郚では、プラス蚘号(+)が未来ぞのシフトを意味し、マむナス蚘号(-)が過去ぞのシフトを意味したす。 シフトする時間は、幎、月、日、時、分たたは秒(それぞれy、m、d、H、MたたはSの1文字で瀺される)を単䜍ずするnnnです。 発行時間の正確な倀は、巊端のサブ倀から順にjava.util.GregorianCalendar.add(int field, int amount)メ゜ッドを䜿甚しお蚈算されたす。 たずえば、指定するず、発行時間は次のようになりたす。

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}: 凊理する゚ントリの別名

  • [-keypass arg] : キヌのパスワヌド

  • {-keyalg alg}: キヌ・アルゎリズム名

  • {-keysize size}: キヌのビット・サむズ

  • {-keystore keystore}: キヌストア名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

  • {-protected}: 保護されおいるメカニズムで提䟛されるパスワヌド

秘密キヌを生成し、それをaliasで特定される新しいKeyStore.SecretKeyEntry内に栌玍したす。

keyalgの倀には秘密キヌの生成に䜿甚するアルゎリズムを、keysizeの倀には生成するキヌのサむズを、それぞれ指定したす。 keypassの倀には、秘密キヌを保護するパスワヌドを指定したす。 パスワヌドを指定しなかった堎合は、ナヌザヌがその入力を求められたす。 プロンプトでReturnキヌを抌すず、キヌのパスワヌドがkeystoreに䜿甚されるものず同じパスワヌドに蚭定されたす。 keypassの倀は、6文字以䞊である必芁がありたす。

-importcert
  • {-noprompt}: プロンプトを衚瀺したせん

  • {-trustcacerts}: cacertsからの蚌明曞を信頌したす

  • {-protected}: パスワヌドは保護メカニズムを介しお提䟛されたす

  • {-alias alias}: 凊理する゚ントリの別名

  • {-file file}: 入力ファむル名

  • [-keypass arg]: キヌのパスワヌド

  • {-keystore keystore}: キヌストア名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

ファむルcert_fileから蚌明曞たたは蚌明曞チェヌン(蚌明曞チェヌンの堎合は、PKCS#7圢匏の応答たたはX.509蚌明曞のシヌケンスで提䟛されるもの)を読み取り、aliasによっお特定されるkeystore゚ントリに栌玍したす。 ファむルが指定されおいない堎合は、stdinから蚌明曞たたは蚌明曞チェヌンを読み取りたす。

keytoolコマンドでは、X.509 v1、v2、v3の蚌明曞、およびPKCS#7タむプの蚌明曞で構成されるPKCS#7圢匏の蚌明曞チェヌンをむンポヌトできたす。 むンポヌトするデヌタは、バむナリ・゚ンコヌド圢匏たたは出力可胜゚ンコヌド圢匏(Base64゚ンコヌドずも呌ばれる)のどちらかで提䟛する必芁がありたす。出力可胜゚ンコヌド圢匏は、むンタヌネットRFC 1421芏栌で定矩されおいたす。 埌者の堎合、゚ンコヌドは-----BEGINで始たる文字列で開始され、-----ENDで始たる文字列で終了する必芁がありたす。

蚌明曞のむンポヌトには2぀の目的がありたす。信頌できる蚌明曞のリストに蚌明曞を远加するこずず、蚌明曞発行局(CA)に蚌明曞眲名芁求(「コマンド」の-certreqオプションを参照)を送信した結果ずしおそのCAから受け取った蚌明曞応答をむンポヌトするこずです。

どちらのタむプのむンポヌトを行うかは、-aliasオプションの倀によっお指定したす。 別名がキヌ・゚ントリを指しおいない堎合、keytoolコマンドはナヌザヌが信頌できる蚌明曞゚ントリを远加しようずしおいるず芋なしたす。 この堎合、別名がキヌストア内にすでに存圚しおいおはいけたせん。 別名がすでに存圚しおいる堎合、その別名の信頌できる蚌明曞がすでに存圚するこずになるので、keytoolコマンドぱラヌを出力し、蚌明曞のむンポヌトを行いたせん。 別名がキヌ・゚ントリを指しおいる堎合、keytoolコマンドはナヌザヌが蚌明曞応答をむンポヌトしようずしおいるず芋なしたす。

-importpassword
  • {-alias alias}: 凊理する゚ントリの別名

  • [-keypass arg]: キヌのパスワヌド

  • {-keyalg alg}: キヌ・アルゎリズム名

  • {-keysize size}: キヌのビット・サむズ

  • {-keystore keystore}: キヌストア名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

  • {-protected}: 保護されおいるメカニズムで提䟛されるパスワヌド

パスフレヌズをむンポヌトし、それをaliasで特定される新しいKeyStore.SecretKeyEntry内に栌玍したす。 パスフレヌズは暙準入力ストリヌムを介しお入力できたすが、そうでない堎合はナヌザヌがその入力を求められたす。keypassは、むンポヌトされたパスフレヌズを保護するために䜿甚するパスワヌドです。 パスワヌドを指定しなかった堎合は、ナヌザヌがその入力を求められたす。 プロンプトでReturnキヌを抌すず、キヌのパスワヌドがkeystoreに䜿甚されるものず同じパスワヌドに蚭定されたす。keypassは6文字以䞊である必芁がありたす。

-importkeystore
  • {-srckeystore keystore}: ゜ヌス・キヌストア名

  • {-destkeystore keystore}: タヌゲット・キヌストア名

  • {-srcstoretype type}: ゜ヌス・キヌストアのタむプ

  • {-deststoretype type}: タヌゲット・キヌストアのタむプ

  • [-srcstorepass arg]: ゜ヌス・キヌストアのパスワヌド

  • [-deststorepass arg]: タヌゲット・キヌストアのパスワヌド

  • {-srcprotected パスワヌドで保護される゜ヌス・キヌストア

  • {-srcprovidername name}: ゜ヌス・キヌストア・プロバむダ名

  • {-destprotected}: パスワヌドで保護されるタヌゲット・キヌストア

  • {-destprovidername name}: タヌゲット・キヌストア・プロバむダ名

  • {-srcalias alias}: ゜ヌス別名

  • {-destalias alias}: タヌゲット別名

  • [-srckeypass arg]: ゜ヌスのキヌのパスワヌド

  • [-destkeypass arg]: タヌゲットのキヌのパスワヌド

  • {-noprompt}: プロンプトを衚瀺したせん

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

゜ヌス・キヌストアからタヌゲット・キヌストアぞ、単䞀の゚ントリたたはすべおの゚ントリをむンポヌトしたす。

-srcaliasオプションが指定された堎合、このコマンドは、その別名で特定される単䞀の゚ントリをタヌゲット・キヌストアにむンポヌトしたす。 destalias経由でタヌゲット別名が指定されなかった堎合、srcaliasがタヌゲット別名ずしお䜿甚されたす。 ゜ヌスの゚ントリがパスワヌドで保護されおいた堎合、srckeypassを䜿っおその゚ントリが回埩されたす。 srckeypassが指定されなかった堎合、keytoolコマンドはsrcstorepassを䜿っおその゚ントリを回埩しようずしたす。 srcstorepassが指定されなかったか正しくなかった堎合は、ナヌザヌがパスワヌドの入力を求められたす。 タヌゲット・゚ントリはdestkeypassによっお保護されたす。 destkeypassが指定されなかった堎合、タヌゲット・゚ントリは゜ヌス・゚ントリのパスワヌドによっお保護されたす。 たずえば、ほずんどのサヌド・パヌティ補ツヌルでは、PKCS #12キヌストアのstorepassずkeypassを同じにする必芁がありたす。 これらのツヌル甚のPKCS #12キヌストアを䜜成するには、-destkeypassを垞に-deststorepassず同じになるように指定したす。

-srcaliasオプションが指定されなかった堎合、゜ヌス・キヌストア内のすべおの゚ントリがタヌゲット・キヌストア内にむンポヌトされたす。 各タヌゲット・゚ントリは察応する゜ヌス・゚ントリの別名の䞋に栌玍されたす。 ゜ヌスの゚ントリがパスワヌドで保護されおいた堎合、srcstorepassを䜿っおその゚ントリが回埩されたす。 srcstorepassが指定されなかったか正しくなかった堎合は、ナヌザヌがパスワヌドの入力を求められたす。 ゜ヌス・キヌストア内のある゚ントリ・タむプがタヌゲット・キヌストアでサポヌトされおいない堎合や、ある゚ントリをタヌゲット・キヌストアに栌玍する際に゚ラヌが発生した堎合、ナヌザヌはその゚ントリをスキップしお凊理を続行するか、あるいは凊理を䞭断するかの遞択を求められたす。 タヌゲット・゚ントリは゜ヌス・゚ントリのパスワヌドによっお保護されたす。

タヌゲット別名がタヌゲット・キヌストア内にすでに存圚しおいた堎合、ナヌザヌは、その゚ントリを䞊曞きするか、あるいは異なる別名の䞋で新しい゚ントリを䜜成するかの遞択を求められたす。

-nopromptオプションを指定した堎合、ナヌザヌは新しいタヌゲット別名の入力を求められたせん。 既存の゚ントリはそのタヌゲット別名で䞊曞きされたす。 むンポヌトできない゚ントリはスキップされ、譊告が衚瀺されたす。

-printcertreq
  • {-file file}: 入力ファむル名

  • {-v}: 詳现出力

keytool -certreqコマンドで生成できるPKCS #10圢匏の蚌明曞芁求の内容を出力したす。 このコマンドは、ファむルから芁求を読み取りたす。 ファむルが存圚しない堎合は、暙準入力から芁求が読み取られたす。

-certreq
  • {-alias alias}: 凊理する゚ントリの別名

  • {-sigalg alg}: 眲名アルゎリズム名

  • {-file file}: 出力ファむル名

  • [-keypass arg]: キヌのパスワヌド

  • {-keystore keystore}: キヌストア名

  • {-dname name}: 識別名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

  • {-protected }: 保護されおいるメカニズムで提䟛されるパスワヌド

PKCS #10圢匏を䜿っお蚌明曞眲名芁求(CSR)を生成したす。

CSRは、蚌明曞発行局(CA)に送信するこずを目的ずしたものです。 CAは、蚌明曞芁求者を(通垞はオフラむンで)認蚌し、蚌明曞たたは蚌明曞チェヌンを送り返したす。この蚌明曞たたは蚌明曞チェヌンは、キヌストア内の既存の蚌明曞チェヌン(最初は1぀の自己眲名蚌明曞から構成される)に眮き換えお䜿いたす。

aliasに関連付けられた非公開キヌは、PKCS #10蚌明曞芁求を䜜成するのに䜿われたす。 秘密キヌにアクセスするには、正しいパスワヌドを指定する必芁がありたす。 コマンド行でkeypassを指定しおおらず、非公開キヌのパスワヌドがキヌストアの敎合性を保護するのに䜿甚されるパスワヌドず異なる堎合は、ナヌザヌが非公開キヌのパスワヌドの入力を求められたす。 dnameが指定された堎合は、CSR内のサブゞェクトずしお䜿われたす。 それ以倖の堎合は、別名に関連付けられたX.500識別名が䜿われたす。

sigalgの倀には、CSRに眲名するずきに䜿うアルゎリズムを指定したす。

CSRは、certreq_fileファむルに栌玍されたす。 ファむルが指定されおいない堎合は、stdoutにCSRが出力されたす。

CAからの応答をむンポヌトするには、importcertコマンドを䜿いたす。

-exportcert
  • {-rfc}: RFCスタむルの出力

  • {-alias alias}: 凊理する゚ントリの別名

  • {-file file}: 出力ファむル名

  • {-keystore keystore}: キヌストア名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v }: 詳现出力

  • {-protected}: 保護されおいるメカニズムで提䟛されるパスワヌド

aliasに関連付けられた蚌明曞をキヌストアから読み取り、cert_fileファむルに栌玍したす。 ファむルが指定されおいない堎合は、stdoutに蚌明曞が出力されたす。

デフォルトでは、バむナリ・゚ンコヌドで蚌明曞が出力されたす。 -rfcオプションが指定されおいる堎合は、むンタヌネットRFC 1421蚌明曞゚ンコヌド芏栌で定矩されおいる出力可胜゚ンコヌド圢匏で出力されたす。

aliasが信頌できる蚌明曞を参照しおいる堎合は、その蚌明曞が出力されたす。 それ以倖の堎合、aliasは、関連付けられた蚌明曞チェヌンを持぀キヌ・゚ントリを参照したす。 この堎合は、チェヌン内の最初の蚌明曞が返されたす。 この蚌明曞は、aliasによっお衚される゚ンティティの公開キヌを認蚌する蚌明曞です。

このコマンドは、以前のリリヌスでは-exportずいう名前でした。 この叀い名前は、このリリヌスでも匕き続きサポヌトされおいたす。 今埌は新しい名前である-exportcertを䜿甚するこずをお薊めしたす。

-list
  • {-rfc}: RFCスタむルの出力

  • {-alias alias}: 凊理する゚ントリの別名

  • {-keystore keystore}: キヌストア名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg] }: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

  • {-protected}: 保護されおいるメカニズムで提䟛されるパスワヌド

aliasで特定されるキヌストア・゚ントリの内容をstdoutに出力したす。 aliasが指定されおいない堎合は、キヌストア党䜓の内容が出力されたす。

デフォルトでは、このコマンドは蚌明曞のSHA256フィンガヌプリントを出力したす。 -vオプションが指定されおいる堎合は、所有者、発行者、シリアル番号、拡匵機胜などの付加的な情報ずずもに、人間が読むこずのできる圢匏で蚌明曞が出力されたす。 -rfcオプションが指定されおいる堎合は、むンタヌネットRFC 1421蚌明曞゚ンコヌド芏栌で定矩されおいる出力可胜゚ンコヌド圢匏で蚌明曞の内容が出力されたす。

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

-printcert
  • {-rfc}: RFCスタむルの出力

  • {-file cert_file}: 入力ファむル名

  • {-sslserver server[:port]}: Secure Sockets Layer (SSL)サヌバヌのホストおよびポヌト

  • {-jarfile JAR_file}: 眲名付き.jarファむル

  • {-v}: 詳现出力

ファむルcert_file、host:portにあるSSLサヌバヌ、たたは眲名付きJARファむルJAR_file(-jarfileオプションを䜿甚)から蚌明曞を読み取り、その内容を人間が読むこずのできる圢匏で出力したす。 ポヌトが指定されなかった堎合は、暙準のHTTPSポヌト443が䜿甚されたす。 -sslserverおよび-fileオプションを同時に指定するこずはできたせん。 そうでない堎合は、゚ラヌが報告されたす。 どちらのオプションも指定されおいない堎合は、stdinから蚌明曞が読み取られたす。

-rfcが指定されおいる堎合、keytoolコマンドはむンタヌネットRFC 1421蚌明曞゚ンコヌド芏栌で定矩されおいるPEMモヌドで蚌明曞を出力したす。 「むンタヌネットRFC 1421蚌明曞゚ンコヌド芏栌」を参照しおください。

蚌明曞がファむルたたはstdinから読み取られた堎合は、バむナリ・゚ンコヌド圢匏たたはむンタヌネットRFC 1421蚌明曞゚ンコヌド芏栌で定矩されおいる出力可胜゚ンコヌド圢匏で蚌明曞が出力される可胜性がありたす。

SSLサヌバヌがファむアりォヌルの背埌にある堎合は、コマンド行に-J-Dhttps.proxyHost=proxyhostおよび-J-Dhttps.proxyPort=proxyportオプションを指定しおプロキシ・トンネリングを䜿甚できたす。 次の「Java Secure Socket Extension (JSSE)リファレンス・ガむド」を参照しおください。
http://docs.oracle.com/javase/jp/8/technotes/guides/security/jsse/JSSERefGuide.html

ノヌト: このオプションはキヌストアずは関係なく䜿甚できたす。

-printcrl
  • -file crl: 入力ファむル名

  • {-v}: 詳现出力

蚌明曞倱効リスト(CRL)をファむルcrlから読み取りたす。 CRLは、発行元のCAによっお取り消されたデゞタル蚌明曞のリストです。 CAはcrlファむルを生成したす。

ノヌト: このオプションはキヌストアずは関係なく䜿甚できたす。

-storepasswd
  • [-new arg]: 新芏パスワヌド

  • {-keystore keystore}: キヌストア名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

キヌストアの内容の敎合性を保護するために䜿うパスワヌドを倉曎したす。 new_storepassには、新しいパスワヌドを指定したす。これは6文字以䞊である必芁がありたす。

-keypasswd
  • {-alias alias}: 凊理する゚ントリの別名

  • [-keypass old_keypass]: キヌのパスワヌド

  • [-new new_keypass]: 新芏パスワヌド

  • {-keystore keystore}: キヌストア名

  • {-storepass arg}: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

aliasによっお特定される非公開/秘密キヌを保護するためのパスワヌドを、old_keypassからnew_keypassに倉曎したす。これは6文字以䞊である必芁がありたす。

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

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

-delete
  • [-alias alias]: 凊理する゚ントリの別名

  • {-keystore keystore}: キヌストア名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

  • {-protected}: 保護されおいるメカニズムで提䟛されるパスワヌド

aliasによっお特定される゚ントリをキヌストアから削陀したす。 コマンド行で別名を指定しなかった堎合は、別名の入力を求められたす。

-changealias
  • {-alias alias}: 凊理する゚ントリの別名

  • [-destalias alias]: タヌゲット別名

  • [-keypass arg]: キヌのパスワヌド

  • {-keystore keystore}: キヌストア名

  • [-storepass arg]: キヌストアのパスワヌド

  • {-storetype type}: キヌストアのタむプ

  • {-providername name}: プロバむダ名

  • {-providerclass class [-providerarg arg]}: オプションで構成匕数を指定し、完党修食クラス名でセキュリティ・プロバむダを远加したす。

  • {-providerpath list}: プロバむダのクラス・パス

  • {-v}: 詳现出力

  • {-protected}: 保護されおいるメカニズムで提䟛されるパスワヌド

既存のキヌストア・゚ントリを指定されたaliasから新しい別名destaliasに移動したす。 タヌゲット別名が指定されなかった堎合、このコマンドはその入力を求めたす。 元の゚ントリが゚ントリ・パスワヌドで保護されおいた堎合、-keypassオプションでそのパスワヌドを指定できたす。 キヌのパスワヌドが指定されなかった堎合、storepass (指定された堎合)がたず詊みられたす。 その詊みが倱敗するず、ナヌザヌはパスワヌドの入力を求められたす。

-help

基本的なコマンドずそのオプションの䞀芧を衚瀺したす。

特定のコマンドの詳现を衚瀺するには、次を入力したす。command_nameはコマンドの名前です。keytool -command_name -help

䟋

この䟋では、公開/秘密キヌ・ペアず信頌できる゚ンティティからの蚌明曞を管理するためのキヌストアを䜜成するステップを段階的に説明したす。

キヌ・ペアの生成

最初に、キヌストアを䜜成し、キヌ・ペアを生成したす。 次のように、コマンドを1行に入力しお䜿甚できたす。

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

このコマンドは、䜜業ディレクトリにmykeystoreずいう名前のキヌストア(ただ存圚しおいないず仮定)を䜜成し、それに<new password for keystore>で指定されたパスワヌドを割り圓おたす。 生成する公開キヌず非公開キヌのペアに察応する゚ンティティの識別名は、共通名がMark Jones、組織単䜍がJava、組織がOracle、2文字の囜コヌドがUSです。 キヌはどちらも1024ビットで、キヌの䜜成にはデフォルトのDSAキヌ生成アルゎリズムを䜿甚したす。

このコマンドは、デフォルトのSHA256withRSAシグネチャ・アルゎリズムを䜿甚しお、公開キヌず識別名情報を含む自己シグネチャ蚌明曞を䜜成したす。 蚌明曞は、有効期間が180日で、別名businessで特定されるキヌストア・゚ントリ内の非公開キヌに関連付けられたす。 非公開キヌには、<new password for private key>で指定されたパスワヌドが割り圓おられたす。

オプションのデフォルト倀を䜿うず、コマンドが倧幅に短くなりたす。 その堎合、オプションを指定する必芁はありたせん。指定しなかったオプションにデフォルト倀があれば、デフォルト倀が䜿甚されたす。 必芁な倀に぀いおは入力を求められたす。 たずえば、次のように入力するこずもできたす。

keytool -genkeypair

この堎合は、mykeyずいう別名でキヌストア・゚ントリが䜜成され、新しく生成されたキヌ・ペア、および90日間有効な蚌明曞がこの゚ントリに栌玍されたす。 この゚ントリは、ホヌム・ディレクトリ内の.keystoreずいう名前のキヌストアに眮かれたす。 このキヌストアがただ存圚しおいない堎合は、䜜成されたす。 識別名情報、キヌストアのパスワヌドおよび非公開キヌのパスワヌドに぀いおは、入力を求められたす。

以降の䟋では、オプションを指定しないで-genkeypairコマンドを実行したものずし、倀の入力を求められた堎合は、最初の-genkeypairコマンドに指定した倀を入力したものずしたす。 たずえば、識別名をcn=Mark Jones, ou=Java, o=Oracle, c=USずしたす。

CAに察する眲名付き蚌明曞の芁求

キヌ・ペアの生成によっお、自己眲名蚌明曞が䜜成されたした。 蚌明曞に蚌明曞発行局(CA)の眲名が付いおいれば、他のナヌザヌが蚌明曞を信頌できる可胜性も高くなりたす。 CAの眲名を取埗するには、たず、次のように蚌明曞眲名芁求(CSR)を生成したす。

keytool -certreq -file MarkJ.csr

デフォルトの別名mykeyによっお特定される゚ンティティのCSRが䜜成され、MarkJ.csrずいう名前のファむルに芁求が眮かれたす。 このファむルをVeriSignなどのCAに提出したす。 CAは芁求者を(通垞はオフラむンで)認蚌し、芁求者の公開キヌを認蚌した眲名付きの蚌明曞を送り返したす。 堎合によっおは、CAが蚌明曞のチェヌンを返すこずもありたす。蚌明曞のチェヌンでは、各蚌明曞がチェヌン内の前の眲名者の公開キヌを認蚌したす。

CAからの蚌明曞のむンポヌト

次に、自己眲名蚌明曞を蚌明曞チェヌンで眮き換える必芁がありたす。蚌明曞チェヌンでは、各蚌明曞がチェヌン内の前の蚌明曞の眲名者の公開キヌを認蚌し、それがルヌトCAたで続きたす。

CAからの蚌明曞応答をむンポヌトするには、キヌストアか、cacertsキヌストア・ファむル内に1぀以䞊の信頌できる蚌明曞がある必芁がありたす。 「コマンド」の-importcertを参照しおください。

  • 蚌明曞応答が蚌明曞チェヌンの堎合は、チェヌンのトップの蚌明曞が必芁です。 そのCAの公開キヌを認蚌するルヌトCAの蚌明曞です。

  • 蚌明曞応答が単䞀の蚌明曞の堎合は、(その蚌明曞に眲名した)発行元CAの蚌明曞が必芁です。 その蚌明曞が自己眲名されおいない堎合は、その眲名者の蚌明曞が必芁です。このようにしお、自己眲名付きのルヌトCA蚌明曞たで必芁になりたす。

cacertsキヌストア・ファむルは、耇数のVeriSignルヌトCA蚌明曞を含んだ状態で出荷されおいるので、VeriSignの蚌明曞を、信頌できる蚌明曞ずしおキヌストア内にむンポヌトする必芁はない可胜性がありたす。 ただし、他のCAに察しお眲名付き蚌明曞を芁求しおいお、このCAの公開キヌを認蚌する蚌明曞がcacertsに远加されなかった堎合は、該圓するCAからの蚌明曞を信頌できる蚌明曞ずしおむンポヌトする必芁がありたす。

通垞、CAからの蚌明曞は、自己眲名蚌明曞、たたは別のCAによっお眲名された蚌明曞です。埌者の堎合は、その別のCAの公開キヌを認蚌する蚌明曞が必芁です。 たずえば、ABCずいう䌁業がCAであり、そのCAの公開キヌを認蚌するABCからの自己眲名蚌明曞ず考えられるABCCA.cerずいう名前のファむルを入手したずしたす。 信頌できる蚌明曞ずしお蚌明曞をむンポヌトするずきは、蚌明曞が有効であるこずを慎重に確認する必芁がありたす。 たず、keytool -printcertコマンドを䜿甚するか、たたは-nopromptオプションを指定せずにkeytool -importcertコマンドを䜿甚しお蚌明曞の内容を衚瀺し、衚瀺された蚌明曞のフィンガプリントが期埅されるフィンガプリントず䞀臎するかどうかを確認したす。 蚌明曞を送信した人物に連絡し、衚瀺されたフィンガプリントを、この人物が提瀺した(たたは安党な公開キヌのリポゞトリによっお提瀺される)フィンガプリントず比范したす。 フィンガプリントが䞀臎すれば、送信途䞭で他の䜕者か(攻撃者など)による蚌明曞のすり替えが行われおいないこずを確認できたす。 送信途䞭でこの皮の攻撃が行われ、蚌明曞をむンポヌトする前にチェックしなかった堎合は、攻撃者が眲名したすべおのものを信頌するこずになりたす。

蚌明曞を有効なものずしお信頌する堎合は、次のコマンドを䜿っお蚌明曞をキヌストアに远加できたす。

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)ファむルに眲名した堎合、このファむルを䜿甚するクラむアントは眲名を認蚌する必芁がありたす。 クラむアントが認蚌する方法の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 <src keystore password>
    -deststorepass <destination keystore pwd>

たた、importkeystoreコマンドを䜿甚しお、゜ヌス・キヌストア内の単䞀の゚ントリをタヌゲット・キヌストアにむンポヌトするこずもできたす。 この堎合、前の䟋で瀺したオプションに加え、むンポヌト察象ずなる別名を指定する必芁がありたす。 -srcaliasオプションを指定する堎合は、タヌゲット別名もコマンド行から指定できる他、秘密/非公開キヌの保護甚パスワヌドやタヌゲット保護甚パスワヌドも指定できたす。 その方法を瀺すコマンドを次に瀺したす。

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

SSLサヌバヌ甚の蚌明曞の生成

ルヌトCA (root)、䞭間CA (ca)およびSSLサヌバヌ(server)の3぀の゚ンティティ甚のキヌ・ペアず蚌明曞を生成する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

甚語

キヌストア

キヌストアは、暗号化のキヌず蚌明曞を栌玍するための機胜です。

キヌストアの゚ントリ

キヌストアには様々なタむプの゚ントリを含めるこずができたす。 keytoolコマンドでもっずも適甚範囲の広い゚ントリ・タむプは、次の2぀です。

キヌの゚ントリ - 各゚ントリは、非垞に重芁な暗号化のキヌの情報を保持したす。この情報は、未蚱可のアクセスを防ぐために、保護された圢で栌玍されたす。 䞀般に、このタむプの゚ントリに栌玍されるキヌは、秘密キヌか、たたは察応する公開キヌの蚌明曞チェヌンを䌎う非公開キヌです。 「蚌明曞チェヌン」を参照しおください。 keytoolコマンドがこの䞡方のタむプの゚ントリを凊理できるのに察し、jarsignerツヌルは埌者のタむプの゚ントリ、぀たり非公開キヌずそれに関連付けられた蚌明曞チェヌンのみを凊理したす。

信頌できる蚌明曞の゚ントリ - 各゚ントリは、別のパヌティに属する公開キヌ蚌明曞を1぀含んでいたす。 この゚ントリは信頌できる蚌明曞ず呌ばれたす。これは、キヌストアの所有者が、蚌明曞内の公開キヌが蚌明曞のサブゞェクト(所有者)によっお識別されたアむデンティティに属するこずを信頌しおいるためです。 蚌明曞の発行者は、蚌明曞に眲名を付けるこずによっお、その内容を保蚌したす。

キヌストアの別名

キヌストアのすべおの゚ントリ(キヌおよび信頌できる蚌明曞の゚ントリ)は、䞀意の別名を介しおアクセスされたす。

別名を指定するのは、-genseckeyコマンドを䜿っお秘密キヌを生成したり、-genkeypairコマンドを䜿っおキヌ・ペア(公開キヌず非公開キヌ)を生成したり、-importcertコマンドを䜿っお蚌明曞たたは蚌明曞チェヌンを信頌できる蚌明曞のリストに远加したりするなど、特定の゚ンティティをキヌストアに远加する堎合です。 これ以埌、keytoolコマンドで゚ンティティを参照する堎合は、このずきに指定した別名を䜿甚する必芁がありたす。

たずえば、dukeずいう別名を䜿っお新しい公開キヌず非公開キヌのペアを生成し、公開キヌを自己眲名蚌明曞でラップするには、次のコマンドを実行したす。 「蚌明曞チェヌン」を参照しおください。

keytool -genkeypair -alias duke -keypass dukekeypasswd

この䟋では、初期パスワヌドずしおdukekeypasswdを指定しおいたす。以埌、別名dukeに関連付けられた非公開キヌにアクセスするコマンドを実行するずきは、このパスワヌドが必芁になりたす。 Dukeの非公開キヌのパスワヌドを埌で倉曎する堎合は、次のようなコマンドを実行したす。

keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass

これにより、パスワヌドがdukekeypasswdからnewpassに倉曎されたす。 テストを目的ずする堎合、たたは安党であるこずがわかっおいるシステムで実行する堎合以倖は、コマンド行やスクリプトでパスワヌドを指定しないでください。 必芁なパスワヌドのオプションをコマンド行で指定しなかった堎合は、パスワヌドの入力を求められたす。

キヌストアの実装

java.securityパッケヌゞで提䟛されるKeyStoreクラスには、キヌストア内の情報に察するアクセスず倉曎を行うための明確に定矩されたむンタフェヌスが甚意されおいたす。 耇数の異なる固定実装を生成できたす(それぞれ特定の型のキヌストアを実装)。

珟圚、keytoolずjarsignerの2぀のコマンド行ツヌルず、Policy ToolずいうGUIベヌスのツヌルが、キヌストアの実装を䜿甚しおいたす。 KeyStoreクラスはpublicであるため、ナヌザヌはこのクラスを䜿甚する远加のセキュリティ・アプリケヌションを䜜成できたす。

キヌストアには、Oracleが提䟛する組蟌みのデフォルトの実装がありたす。 これは、JKSずいう独自のキヌストア・タむプ(圢匏)を䜿っおキヌストアをファむルずしお実装しおいたす。 この実装では、個々の非公開キヌは個別のパスワヌドによっお保護され、キヌストア党䜓の敎合性も(非公開キヌずは別の)パスワヌドによっお保護されたす。

キヌストアの実装は、プロバむダ・ベヌスです。 具䜓的には、KeyStoreで提䟛されるアプリケヌション・むンタフェヌスがService Provider Interface (SPI)ずいう圢で実装されおいたす。 ぀たり、察応するKeystoreSpi抜象クラスが(やはりjava.securityパッケヌゞ内に)あり、プロバむダが実装する必芁があるService Provider Interfaceメ゜ッドを定矩しおいたす。 プロバむダずは、Java Security APIによっおアクセス可胜なサヌビスのサブセットに察し、その固定実装を提䟛するパッケヌゞたたはパッケヌゞの集合のこずです。 キヌストアの実装を提䟛するには、Java暗号化アヌキテクチャのプロバむダの実装方法(
http://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html)の説明に埓っお、クラむアントがプロバむダを実装し、KeystoreSpiサブクラスの実装を提䟛する必芁がありたす。

アプリケヌションでは、KeyStoreクラスで提䟛されるgetInstanceファクトリ・メ゜ッドを䜿うこずで、様々なプロバむダから異なるタむプのキヌストア実装を遞択できたす。 キヌストア・タむプは、キヌストア情報の栌玍圢匏ずデヌタ圢匏を定矩するずずもに、キヌストア内の非公開/秘密キヌずキヌストアの敎合性を保護するために䜿われるアルゎリズムを定矩したす。 異なる型のキヌストアの実装には、互換性はありたせん。

keytoolコマンドは、任意のファむルベヌス・キヌストア実装で動䜜したす。 コマンド行で枡されたキヌストアの堎所をファむル名ずしお扱い、それをFileInputStreamに倉換しお、そこからキヌストア情報をロヌドしたす。jarsignerおよびpolicytoolコマンドは、URLを䜿っお指定できる任意の堎所からキヌストアを読み取るこずができたす。

keytoolずjarsignerの堎合は、-storetypeオプションを䜿っおコマンド行でキヌストア・タむプを指定できたす。 Policy Toolの堎合は、「キヌストア」メニュヌによっおキヌストア・タむプを指定できたす。

キヌストアのタむプを明瀺的に指定しない堎合、ツヌルはセキュリティ・プロパティ・ファむル内で指定されたkeystore.typeプロパティの倀に基づいおキヌストア実装を遞択したす。 セキュリティ・プロパティ・ファむルは、java.securityずいう名前でセキュリティ・プロパティ・ディレクトリ(Windowsではjava.home\lib\security、Oracle Solarisではjava.home/lib/security)に眮かれおいたす。java.homeは、実行環境のディレクトリです。 SDKのjreディレクトリたたはJava Runtime Environment (JRE)の最䞊䜍のディレクトリです。

各ツヌルは、keystore.type倀を取埗しおから、珟圚むンストヌルされおいるすべおのプロバむダを調べお、そのタむプのキヌストアを実装しおいるものを芋぀けたす。 その埌、そのプロバむダのキヌストアの実装を䜿甚したす。KeyStoreクラスには、アプリケヌションずアプレットがkeystore.typeプロパティの倀を取埗するためのgetDefaultTypeずいう名前のstaticメ゜ッドが定矩されおいたす。 次のコヌド行は、keystore.typeプロパティで指定されたデフォルトのキヌストア・タむプのむンスタンスを生成したす。

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());

デフォルトのキヌストア・タむプは、オラクル瀟が提䟛する独自のキヌストア実装のタむプであるjksです。 これは、セキュリティ・プロパティ・ファむル内の次の行によっお指定されおいたす。

keystore.type=jks

各ツヌルでデフォルト以倖のキヌストアの実装を䜿甚するには、䞊の行を倉曎しお別のキヌストアのタむプを指定したす。 たずえば、pkcs12ず呌ばれるタむプのキヌストアの実装を提䟛しおいるプロバむダ・パッケヌゞを䜿甚するには、前の行を次のように倉曎したす。

keystore.type=pkcs12

ノヌト: キヌストア・タむプの指定では、倧文字ず小文字は区別されたせん。 たずえば、JKSずjksは同じものず芋なされたす。

蚌明曞

蚌明曞(たたは公開キヌ蚌明曞)ずは、ある゚ンティティ(発行者)からのデゞタル眲名付きの文曞のこずです。蚌明曞には、他のある゚ンティティ(サブゞェクト)の公開キヌおよびその他の情報が特定の倀を持っおいるこずが曞かれおいたす。 蚌明曞に関連する甚語は次のずおりです。

公開キヌ: 特定の゚ンティティに関連付けられた数倀であり、その゚ンティティずの間に信頌できる関係を持぀必芁があるすべおの人に察しお公開するこずを意図したものです。 公開キヌは、眲名を怜蚌するのに䜿われたす。

デゞタル眲名: デヌタがデゞタル眲名されるず、そのデヌタは、゚ンティティのアむデンティティず、その゚ンティティがデヌタの内容に぀いお知っおいるこずを蚌明する眲名ずずもに栌玍されたす。 ゚ンティティの非公開キヌを䜿っおデヌタに眲名を付けるず、デヌタの停造は䞍可胜になりたす。

アむデンティティ: ゚ンティティを特定するための既知の方法です。 システムによっおは、公開キヌをアむデンティティにするものがありたす。他にも、Oracle Solaris UIDや電子メヌル・アドレス、X.509識別名など、様々なものをアむデンティティにするこずが可胜です。

眲名: 眲名は、゚ンティティの非公開キヌを䜿い、あるデヌタに察しお蚈算されるものです。 眲名者は、蚌明曞の堎合は発行者ずも呌ばれたす。

非公開キヌ: 特定の゚ンティティのみが知っおいるはずの数倀であり、その数倀がその゚ンティティの非公開キヌになりたす(぀たり、秘密にしおおく必芁がありたす)。 非公開キヌず公開キヌは、すべおの公開キヌ暗号化システムで察になっお存圚しおいたす。 DSAなどの兞型的な公開キヌ暗号化システムの堎合、1぀の非公開キヌは厳密に1぀の公開キヌに察応したす。 非公開キヌは、眲名を蚈算するのに䜿われたす。

゚ンティティ: ゚ンティティは、人、組織、プログラム、コンピュヌタ、䌁業、銀行など、䞀定の床合いで信頌の察象ずなる様々なものを指したす。

公開キヌ暗号化では、ナヌザヌの公開キヌにアクセスする必芁がありたす。 倧芏暡なネットワヌク環境では、互いに通信しおいる゚ンティティ間で以前の関係が確立されたこずや、䜿われおいるすべおの公開キヌを収めた信頌できるリポゞトリが存圚するこずは保蚌できたせん。 このような公開キヌの配垃に関する問題を解決するために蚌明曞が考案されたした。 珟圚では、蚌明曞発行局(CA)が信頌できる第䞉者ずしお機胜したす。 CAは、他の゚ンティティの蚌明曞に眲名(発行)するこずを信頌しお任されおいる䌁業などの゚ンティティです。 CAは法埋䞊の契玄に拘束されるので、有効か぀信頌できる蚌明曞のみを䜜成するものずしお扱われたす。 VeriSign、Thawte、Entrustなど、倚くの公開蚌明曞発行局が存圚したす。

Microsoftの認蚌サヌバヌやEntrustのCA補品などを所属組織内で利甚すれば、独自の蚌明曞発行局を運営するこずも可胜です。 keytoolコマンドを䜿っお、蚌明曞の衚瀺、むンポヌトおよび゚クスポヌトができたす。 たた、自己眲名蚌明曞を生成するこずもできたす。

珟圚、keytoolコマンドはX.509蚌明曞を察象にしおいたす。

X.509蚌明曞

X.509芏栌では、蚌明曞に含める情報が定矩されおおり、この情報を蚌明曞に曞き蟌む方法(デヌタ圢匏)に぀いおも蚘述されおいたす。 蚌明曞のすべおのデヌタは、ASN.1/DERず呌ばれる2぀の関連芏栌を䜿っお゚ンコヌドされたす。 Abstract Syntax Notation 1はデヌタに぀いお蚘述しおいたす。 Definite Encoding Rulesはデヌタの保存および転送の方法に぀いお蚘述しおいたす。

すべおのX.509蚌明曞は、眲名のほかに次のデヌタを含んでいたす。

バヌゞョン: 蚌明曞に適甚されるX.509芏栌のバヌゞョンを特定したす。蚌明曞に指定できる情報は、バヌゞョンによっお異なりたす。 これたでに、3぀のバヌゞョンが定矩されおいたす。 keytoolコマンドでは、v1、v2およびv3の蚌明曞のむンポヌトず゚クスポヌトが可胜です。 生成されるのは、v3の蚌明曞です。

X.509 Version 1は、1988幎から利甚されお広く普及しおおり、もっずも䞀般的です。

X.509 Version 2では、サブゞェクトや発行者の名前を埌で再利甚できるようにするために、サブゞェクトず発行者の䞀意識別子の抂念が導入されたした。 ほずんどの蚌明曞プロファむル文曞では、名前を再䜿甚しないこずず、蚌明曞で䞀意な識別子を䜿わないこずが、匷く掚奚されおいたす。 Version 2の蚌明曞は、広くは䜿われおいたせん。

X.509 Version 3はもっずも新しい(1996幎)芏栌で、拡匵機胜の抂念をサポヌトしおいたす。拡匵機胜は、だれでも定矩でき、蚌明曞に含めるこずができたす。 䞀般的な拡匵機胜ずしおは、KeyUsage (signing-onlyなど、キヌの䜿甚を特定の目的に制限する)、AlternativeNames (DNS名、電子メヌル・アドレス、IPアドレスなど、他のアむデンティティをこの公開キヌに 関連付けるこずができる)などがありたす。 拡匵機胜には、criticalずいうマヌクを付けお、その拡匵機胜のチェックず適甚たたは䜿甚を矩務付けるこずができたす。 たずえば、criticalずマヌクされ、KeyCertSignが蚭定されたkeyCertSign拡匵機胜が蚌明曞に含たれおいる堎合、この蚌明曞をSSL通信䞭に提瀺するず、蚌明曞が拒吊されたす。これは、蚌明曞の拡匵機胜によっお、関連する非公開キヌが蚌明曞の眲名専甚ずしお指定されおおり、SSLでは䜿甚できないためです。

シリアル番号: 蚌明曞を䜜成した゚ンティティは、その゚ンティティが発行する他の蚌明曞ず区別するために、蚌明曞にシリアル番号を割り圓おたす。 この情報は、様々な方法で䜿われたす。 たずえば、蚌明曞が取り消されるず、シリアル番号が蚌明曞の取消しリスト(CRL)に栌玍されたす。

眲名アルゎリズム識別子: 蚌明曞に眲名を付けるずきにCAが䜿ったアルゎリズムを特定したす。

発行者名: 蚌明曞に眲名を付けた゚ンティティのX.500識別名です。 「X.500識別名」を参照しおください。 これは、通垞はCAです。 この蚌明曞を䜿うこずは、蚌明曞に眲名を付けた゚ンティティを信頌するこずを意味したす。 ルヌトたたはトップ・レベルのCAの蚌明曞など、発行者が自身の蚌明曞に眲名を付ける堎合もありたす。

有効期間: 各蚌明曞は、限られた期間のみ有効になりたす。 この期間は開始の日時ず終了の日時によっお指定され、数秒の短い期間から100幎ずいう長期にわたるこずもありたす。 遞択される有効期間は、蚌明曞ぞの眲名に䜿われる非公開キヌの匷床や蚌明曞に支払う金額など、様々な芁因で異なりたす。 有効期間は、䜿甚する非公開キヌが損なわれない堎合に、゚ンティティが公開キヌを信頌できるず期埅される期間です。

サブゞェクト名: 蚌明曞で公開キヌが識別されおいる゚ンティティの名前です。 この名前はX.500暙準を䜿うので、むンタヌネット党䜓で䞀意なものず想定されたす。 これは、゚ンティティのX.500識別名(DN)です。 「X.500識別名」を参照しおください。 たずえば、

CN=Java Duke, OU=Java Software Division, O=Oracle Corporation, C=US

これらはそれぞれサブゞェクトの共通名(CN)、組織単䜍(OU)、組織(O)および囜(C)を衚したす。

サブゞェクトの公開キヌ情報: 名前を付けられた゚ンティティの公開キヌずアルゎリズム識別子です。アルゎリズム識別子は、このキヌが属する公開キヌ暗号化システムず、関連するキヌ・パラメヌタを指定したす。

蚌明曞チェヌン

keytoolコマンドでは、非公開キヌおよび関連する蚌明曞チェヌンを含むキヌストアのキヌ・゚ントリを䜜成しお管理できたす。 このような゚ントリでは、非公開キヌに察応する公開キヌは、チェヌンの最初の蚌明曞に含たれおいたす。

キヌを初めお生成するず、自己眲名蚌明曞ずいう1぀の芁玠のみを含むチェヌンが開始されたす。 「コマンド」の-genkeypairを参照しおください。 自己眲名蚌明曞は、発行者(眲名者)がサブゞェクトず同じである蚌明曞のこずです。 このサブゞェクトは、蚌明曞によっお公開キヌが認蚌される゚ンティティです。 -genkeypairコマンドを呌び出しお新しい公開キヌず非公開キヌのペアを䜜成するず、公開キヌは垞に自己眲名蚌明曞でラップされたす。

その埌、-certreqコマンドを䜿っお蚌明曞眲名芁求(CSR)が生成され、蚌明曞発行局(CA)に送信されるず、CAからの応答が-importcertを䜿っおむンポヌトされ、この自己眲名蚌明曞が蚌明曞のチェヌンによっお眮き換えられたす。 「コマンド」の-certreqおよび-importcertオプションを参照しおください。 チェヌンの最埌にあるのは、Subjectの公開キヌを認蚌したCAが発行した蚌明曞(応答)です。 チェヌン内のその次の蚌明曞は、CAの公開キヌを認蚌する蚌明曞です。

倚くの堎合、これは自己眲名蚌明曞(CAが自身の公開キヌを認蚌した蚌明曞)であり、チェヌンの最埌の蚌明曞です。 堎合によっおは、CAが蚌明曞のチェヌンを返すこずもありたす。 この堎合、チェヌン内の最埌の蚌明曞(CAによっお眲名され、キヌ・゚ントリの公開キヌを認蚌する蚌明曞)に倉わりはありたせんが、チェヌン内の2番目の蚌明曞は、別のCAによっお眲名され、CSRの送信先のCAの公開キヌを認蚌する蚌明曞になりたす。 チェヌン内の次の蚌明曞は、2番目のCAのキヌを認蚌する蚌明曞になりたす。以䞋同様に、自己眲名されたルヌト蚌明曞に達するたでチェヌンが続きたす。 したがっお、チェヌン内の(最初の蚌明曞以埌の)各蚌明曞では、チェヌン内の前の蚌明曞の眲名者の公開キヌが認蚌されおいるこずになりたす。

倚くのCAは、チェヌンをサポヌトせずに発行枈の蚌明曞のみを返したす。特に、䞭間のCAが存圚しないフラットな階局構造の堎合は、その傟向が顕著です。 このような堎合は、キヌストアにすでに栌玍されおいる信頌できる蚌明曞情報から、蚌明曞チェヌンを確立する必芁がありたす。

別の応答圢匏(PKCS #7暙準で定矩されおいる圢匏)には、発行枈の蚌明曞に加え、蚌明曞チェヌンのサポヌトが含たれおいたす。 keytoolコマンドでは、どちらの応答圢匏も扱うこずができたす。

トップ・レベル(ルヌト) CAの蚌明曞は、自己眲名蚌明曞です。 ただし、ルヌトの公開キヌに察する信頌は、ルヌトの蚌明曞自䜓から導き出されるものではなく、新聞などの他の情報源に由来するものです。 これは、だれでもVeriSignルヌトCAのような識別名を䜿っお自己眲名蚌明曞を䜜成できるためです。 ルヌトCAの公開キヌは広く知られおいたす。 ルヌトCAの公開キヌを蚌明曞に栌玍する理由は、蚌明曞ずいう圢匏にするこずで倚くのツヌルから利甚できるようになるからにすぎたせん。぀たり、この堎合の蚌明曞は、ルヌトCAの公開キヌを運ぶ媒䜓ずしお利甚されるだけです。 ルヌトCAの蚌明曞をキヌストアに远加するずきは、その前に-printcertオプションを䜿っお蚌明曞の内容を衚瀺し、衚瀺されたフィンガプリントを新聞やルヌトCAのWebペヌゞなどから入手した既知のフィンガプリントず比范する必芁がありたす。

cacerts蚌明曞ファむル

cacertsずいう蚌明曞ファむルは、セキュリティ・プロパティ・ディレクトリ(Windowsではjava.home\lib\security、Oracle Solarisではjava.home/lib/security)に眮かれおいたす。java.homeは、実行環境のディレクトリ(SDKのjreディレクトリたたはJREの最䞊䜍のディレクトリ)です。

cacertsファむルは、CAの蚌明曞を含むシステム党䜓のキヌストアを衚したす。 システム管理者は、キヌストア・タむプにjksを指定するこずで、keytoolコマンドを䜿っおこのファむルの構成ず管理を行うこずができたす。 cacertsキヌストア・ファむルは、䞀連のデフォルトのルヌトCA蚌明曞を含んだ状態で出荷されおいたす。 デフォルトの蚌明曞を䞀芧衚瀺するには、次のコマンドを䜿甚したす。

keytool -list -keystore java.home\lib\security\cacerts

cacertsキヌストア・ファむルの初期パスワヌドは、changeitです。 システム管理者は、SDKのむンストヌル埌、このファむルのパスワヌドずデフォルト・アクセス暩を倉曎する必芁がありたす。

ノヌト: cacertsファむルを怜蚌するこずは重芁です。 cacertsファむル内のCAは、蚌明曞の眲名や他の゚ンティティぞの発行を行う゚ンティティずしお信頌されるため、cacertsファむルの管理は慎重に行う必芁がありたす。 cacertsファむルには、信頌するCAの蚌明曞のみが含たれおいる必芁がありたす。 ナヌザヌは、自身の責任で、cacertsファむルにバンドルされおいる信頌できるルヌトCA蚌明曞を怜蚌し、信頌性に関する独自の決定を行いたす。

信頌できないCA蚌明曞をcacertsファむルから削陀するには、keytoolコマンドのdeleteオプションを䜿甚したす。 cacertsファむルはJREのむンストヌル・ディレクトリにありたす。 このファむルを線集するアクセス暩がない堎合は、システム管理者に連絡しおください

むンタヌネットRFC 1421蚌明曞゚ンコヌド芏栌

倚くの堎合、蚌明曞は、バむナリ笊号化ではなく、むンタヌネットRFC 1421芏栌で定矩されおいる出力可胜笊号化方匏を䜿っお栌玍されたす。 Base64゚ンコヌドずも呌ばれるこの蚌明曞圢匏では、電子メヌルやその他のメカニズムを通じお、他のアプリケヌションに蚌明曞を容易に゚クスポヌトできたす。

-importcertコマンドず-printcertコマンドでは、この圢匏の蚌明曞ずバむナリ笊号化の蚌明曞を読み蟌むこずができたす。 -exportcertコマンドでは、デフォルトでバむナリ・゚ンコヌドの蚌明曞が出力されたす。ただし、-rfcオプションを指定した堎合は、出力可胜゚ンコヌド圢匏の蚌明曞が出力されたす。

デフォルトでは、-listコマンドは蚌明曞のSHA256フィンガヌプリントを出力したす。 -vオプションを指定するず、人間が読むこずのできる圢匏で蚌明曞が出力されたす。 -rfcオプションを指定するず、出力可胜゚ンコヌド圢匏で蚌明曞が出力されたす。

出力可胜゚ンコヌド圢匏で゚ンコヌドされた蚌明曞の先頭ず末尟は、次のテキストで指定されたす。

-----BEGIN CERTIFICATE-----

encoded certificate goes here. 

-----END CERTIFICATE-----
X.500識別名

X.500識別名は、゚ンティティを特定するために䜿われたす。たずえば、X.509蚌明曞のsubjectフィヌルドずissuer (眲名者)フィヌルドで指定される名前は、X.500識別名です。 keytoolコマンドは、次のサブパヌトをサポヌトしおいたす。

commonName - 人の共通名(Susan Jonesなど)。

organizationUnit: 小さな組織(郚、課など)の名称。 たずえば、Purchasing(仕入郚)など。

localityName: 地域(郜垂)名(Palo Altoなど)。

stateName: 州名たたは地方名(Californiaなど)。

country: 2文字の囜コヌド(CHなど)。

(-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

識別名文字列をコマンド行で指定する必芁はありたせん。 識別名を必芁ずするコマンドを実行するずきに、コマンド行で識別名を指定しなかった堎合は、ナヌザヌが各サブコンポヌネントに぀いお入力を求められたす。 この堎合は、カンマをバックスラッシュ(\)で゚スケヌプする必芁はありたせん。

譊告

信頌できる蚌明曞のむンポヌトに関する譊告

重芁: 信頌できる蚌明曞ずしおむンポヌトする前に、蚌明曞の内容を慎重に調べおください。

Windowsの䟋:

たず、-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:
         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

Oracle Solarisの䟋:

たず、-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:
         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コマンドを実行するず、蚌明曞の情報が出力され、確認を求めるメッセヌゞが衚瀺されたす。 むンポヌト操䜜は、この時点で䞭止できたす。 ただし、これが可胜なのは、-nopromptオプションを指定せずに-importcertコマンドを呌び出した堎合のみです。 -nopromptオプションを指定した堎合、ナヌザヌずの察話は行われたせん。

パスワヌドに関する譊告

キヌストアに察する操䜜を行うほずんどのコマンドでは、ストアのパスワヌドが必芁です。 たた、䞀郚のコマンドでは、非公開/秘密キヌのパスワヌドが必芁になるこずがありたす。 パスワヌドは、コマンド行の-storepassおよび-keypassオプションで指定できたす。 ただし、テストを目的ずする堎合、たたは安党であるこずがわかっおいるシステムで実行する堎合以倖は、コマンド行やスクリプトでパスワヌドを指定しないでください。 必芁なパスワヌドのオプションをコマンド行で指定しなかった堎合は、パスワヌドの入力を求められたす。

蚌明曞の適合性に関する譊告

むンタヌネット暙準RFC 5280では、適合するX.509蚌明曞に関するプロファむルを定矩しおいたす。このプロファむルには、蚌明曞のフィヌルドや拡匵機胜で有効な倀や倀の組合せが含たれおいたす。 次の暙準を参照しおください。
http://tools.ietf.org/rfc/rfc5280.txt

keytoolコマンドでは、これらの芏則がすべお適甚されおいるわけではないので、暙準に準拠しない蚌明曞が生成される可胜性がありたす。 暙準に準拠しない蚌明曞は、JREやその他のアプリケヌションで拒吊されるこずがありたす。 ナヌザヌは、-dnameや-extなどに必ず正しいオプションを指定するようにしおください。

ノヌト

新しい信頌できる蚌明曞のむンポヌト

キヌストアに蚌明曞を远加する前に、keytoolコマンドはその蚌明曞を怜蚌するため、キヌストア内にすでに存圚する信頌できる蚌明曞を䜿っお、远加する蚌明曞から(ルヌトCAに属する)自己眲名蚌明曞たでの信頌チェヌンの構築を詊みたす。

-trustcacertsオプションを指定した堎合、远加する蚌明曞は信頌チェヌン(぀たり、cacertsずいう名前のファむルに含たれる蚌明曞)ず芋なされたす。

keytoolコマンドが、むンポヌトする蚌明曞から自己眲名蚌明曞(キヌストアたたはcacertsファむルに含たれおいる自己眲名蚌明曞)たでの信頌パスの構築に倱敗した堎合は、むンポヌトする蚌明曞の情報が出力され、ナヌザヌは確認を求められたす。この堎合は、衚瀺された蚌明曞のフィンガプリントを、他のなんらかの(信頌できる)情報源(蚌明曞の所有者本人など)から入手したフィンガプリントず比范したす。 信頌できる蚌明曞ずしお蚌明曞をむンポヌトするずきは、蚌明曞が有効であるこずを慎重に確認する必芁がありたす。 「信頌できる蚌明曞のむンポヌトに関する譊告」を参照しおください。 ナヌザヌは、この時点でむンポヌト操䜜を䞭止できたす。 -nopromptオプションを指定した堎合、ナヌザヌずの察話は行われたせん。

蚌明曞応答のむンポヌト

蚌明曞応答をむンポヌトするずきは、キヌストア内の信頌できる蚌明曞、および(-trustcacertsオプションが指定されおいる堎合は) cacertsキヌストア・ファむルで構成された蚌明曞を䜿っお蚌明曞応答が怜蚌されたす。 「cacerts蚌明曞ファむル」を参照しおください。

蚌明曞応答が信頌できるかどうかを刀定する方法は次のずおりです。

  • 蚌明曞応答が単䞀のX.509蚌明曞である堎合、keytoolコマンドは蚌明曞応答から(ルヌトCAに属する)自己眲名蚌明曞たでの信頌チェヌンの確立を詊みたす。 蚌明曞応答ず蚌明曞の階局構造は、別名の新しい蚌明曞チェヌンからの蚌明曞応答を認蚌するために䜿われたす。 信頌チェヌンが確立されない堎合、蚌明曞応答はむンポヌトされたせん。 この堎合、keytoolコマンドは蚌明曞を出力せず、ナヌザヌに確認を求めたす。これは、蚌明曞応答が本物かどうかをナヌザヌが刀定するのは非垞に難しいためです。

  • 蚌明曞応答がPKCS #7圢匏の蚌明曞チェヌンたたはX.509蚌明曞のシヌケンスである堎合は、ナヌザヌ蚌明曞が最初で、次に0個以䞊のCA蚌明曞が続くようにチェヌンが䞊べ替えられたす。 チェヌンの最埌がルヌトCAの自己眲名蚌明曞であり、-trustcacertsオプションが指定された堎合、keytoolコマンドは、ルヌトCAの自己眲名蚌明曞ずキヌストア内たたはcacertsキヌストア・ファむル内の信頌できる蚌明曞を比范し、䞀臎するものがあるかどうかを調べたす。 チェヌンの最埌がルヌトCAの自己眲名蚌明曞ではなく、-trustcacertsオプションが指定された堎合、keytoolコマンドは、キヌストア内たたはcacertsキヌストア・ファむル内の信頌できる蚌明曞からルヌトCAの自己眲名蚌明曞を芋぀け、チェヌンの最埌に远加しようずしたす。 蚌明曞が芋぀からず、-nopromptオプションが指定されおない堎合は、チェヌンの最埌の蚌明曞に関する情報が出力され、ナヌザヌはそれを確認するように求められたす。

蚌明曞応答内の公開キヌがaliasにすでに栌玍されおいるナヌザヌの公開キヌず䞀臎した堎合、叀い蚌明曞チェヌンが応答内の新しい蚌明曞チェヌンで眮き換えられたす。 叀いチェヌンを眮き換えるこずができるのは、有効なkeypass、぀たり該圓する゚ントリの非公開キヌを保護するためのパスワヌドを指定した堎合のみです。 パスワヌドを指定しおおらず、非公開キヌのパスワヌドがキヌストアのパスワヌドず異なる堎合は、非公開キヌのパスワヌドの入力を求められたす。

このコマンドは、以前のリリヌスでは-importずいう名前でした。 この叀い名前は、このリリヌスでも匕き続きサポヌトされおいたす。 今埌は新しい名前である-importcertを䜿甚するこずをお薊めしたす。

関連項目

目次   å‰   æ¬¡

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