æå·åããŒã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ãšå
¥åããŠãã ããã
ãããã®ãªãã·ã§ã³ã¯ãããŒã¹ãã¢ã«å¯Ÿããæäœãè¡ããã¹ãŠã®ã³ãã³ãã§æå®ã§ããŸãã
ãã®ä¿®é£Ÿåã¯ãã€ã³ã¹ã¿ã³ã¹ãçæããããŒã¹ãã¢ã®ã¿ã€ããæå®ããŸãã
ããŒã¹ãã¢ã®å Žæãæå®ããŸãã
ç¹å®ã®keytoolã³ãã³ããå®è¡ããéã«ãJKS storetypeã䜿çšããããã€ããŒã¹ãã¢ã»ãã¡ã€ã«ããŸã ååšããŠããªãã£ãå Žåãæ°ããããŒã¹ãã¢ã»ãã¡ã€ã«ãäœæãããŸãã ããšãã°ãkeytool -genkeypairã®åŒåºãæã«-keystoreãªãã·ã§ã³ãæå®ãããªãã£ãå Žåã.keystoreãšããååã®ããã©ã«ãã»ããŒã¹ãã¢ã»ãã¡ã€ã«ããŠãŒã¶ãŒã®ããŒã ã»ãã£ã¬ã¯ããªå
ã«ãŸã ååšããŠããªããã°ãããã«äœæãããŸãã åæ§ã«ã-keystore ks_fileãšãããªãã·ã§ã³ãæå®ãããŠks_fileãååšããªãã£ãå Žåã¯ããã®ãã¡ã€ã«ãäœæãããŸãã JKS storetypeã®è©³çްã¯ããããŒã¹ãã¢ã®å¥åãã®ããŒã¹ãã¢ã®å®è£
ã«é¢ããé
ãåç
§ããŠãã ããã
-keystoreãªãã·ã§ã³ããã®å
¥åã¹ããªãŒã ã¯ãKeyStore.loadã¡ãœããã«æž¡ãããŸãã URLãšããŠNONEãæå®ãããŠããå Žåã¯ãnullã®ã¹ããªãŒã ãKeyStore.loadã¡ãœããã«æž¡ãããŸãã NONEã¯ãããŒã¹ãã¢ããã¡ã€ã«ããŒã¹ã§ãªãå Žåã«æå®ããŠãã ããã ããšãã°ãããŒããŠã§ã¢ã»ããŒã¯ã³ã»ããã€ã¹ã«çœ®ãããŠããå Žåãªã©ã§ãã
ããŒã¹ãã¢ã®æŽåæ§ãä¿è·ããããã«äœ¿ããã¹ã¯ãŒããæå®ããŸãã
修食åenvãŸãã¯fileãæå®ãããŠããªãå Žåããã¹ã¯ãŒãã®å€ã¯argumentã§ããããã¯6æå以äžã§ããå¿
èŠããããŸãã ãã以å€ã®å Žåããã¹ã¯ãŒãã¯æ¬¡ã®ããã«ååŸãããŸãã
env: argumentãšããååã®ç°å¢å€æ°ãããã¹ã¯ãŒããååŸããŸãã
file: argumentãšããååã®ãã¡ã€ã«ãããã¹ã¯ãŒããååŸããŸãã
ããŒã: -keypassã-srckeypassã-destkeypassã-srcstorepassã-deststorepassãªã©ããã¹ã¯ãŒããå¿
èŠãªä»ã®ãã¹ãŠã®ãªãã·ã§ã³ã¯ä¿®é£Ÿåenvããã³fileãåãå
¥ããŸãã ãã¹ã¯ãŒãã»ãªãã·ã§ã³ãšä¿®é£Ÿåã¯å¿
ãã³ãã³(:)ã§åºåã£ãŠãã ããã
ãã®ãã¹ã¯ãŒãã¯ãããŒã¹ãã¢ã®å
容ã«ã¢ã¯ã»ã¹ãããã¹ãŠã®ã³ãã³ãã§äœ¿ãããŸãã ãã®çš®ã®ã³ãã³ãã§ã¯ãã³ãã³ãè¡ã§-storepassãªãã·ã§ã³ãæå®ããªãã£ãå Žåã«ããŠãŒã¶ãŒããã¹ã¯ãŒãã®å
¥åãæ±ããããŸãã
ããŒã¹ãã¢ããæ å ±ãåãåºãå Žåããã¹ã¯ãŒãã¯ãªãã·ã§ã³ã§ãã ãã¹ã¯ãŒããæå®ããªãã£ãå Žåã¯ãåãåºãæ å ±ã®æŽåæ§ããã§ãã¯ã§ããªããããèŠåã衚瀺ãããŸãã
ã»ãã¥ãªãã£ã»ããããã£ã»ãã¡ã€ã«å ã«å«ãŸããæå·åãµãŒãã¹ã»ãããã€ãåãç¹å®ããããã«äœ¿çšãããŸãã
æå·åãµãŒãã¹ã»ãããã€ããã»ãã¥ãªãã£ã»ããããã£ã»ãã¡ã€ã«ã«æå®ãããŠããªããšãã¯ããã®ãã¹ã¿ãŒã»ã¯ã©ã¹ã»ãã¡ã€ã«ã®ååãæå®ãããšãã«äœ¿ãããŸãã
-providerclassãªãã·ã§ã³ãšãšãã«äœ¿çšããprovider_class_nameã®ã³ã³ã¹ãã©ã¯ã¿ã«å¯Ÿãããªãã·ã§ã³ã®æååå
¥ååŒæ°ã衚ããŸãã
trueãŸãã¯falseã å°çšPINãªãŒããŒãªã©ã®ä¿è·ãããèªèšŒãã¹ãä»ããŠãã¹ã¯ãŒããæå®ããå¿
èŠãããå Žåã¯ããã®å€ãtrueãšããŠæå®ããŠãã ããã-importkeystoreã³ãã³ãã«ã¯2ã€ã®ããŒã¹ãã¢ãé¢ä¿ããŠããããã2ã€ã®ãªãã·ã§ã³-srcprotectedããã³-destprotectedããããããœãŒã¹ã»ããŒã¹ãã¢ããã³ã¿ãŒã²ããã»ããŒã¹ãã¢ãšããŠæå®ããŸãã
X.509èšŒææžã®æ¡åŒµæ©èœã瀺ããŸãã ãã®ãªãã·ã§ã³ã¯ã-genkeypairããã³-gencertã§ãçæãããèšŒææžã«æ¡åŒµæ©èœãçµã¿èŸŒãããããŸãã¯-certreqã§ãèšŒææžèŠæ±ã§èŠæ±ãããæ¡åŒµæ©èœã衚瀺ããããã«äœ¿çšã§ããŸãã ãã®ãªãã·ã§ã³ã¯ãè€æ°å䜿çšã§ããŸãã nameåŒæ°ã«ã¯ããµããŒããããŠããæ¡åŒµæ©èœå(ãååä»ãæ¡åŒµæ©èœããåç
§)ãŸãã¯ä»»æã®OIDçªå·ãæå®ã§ããŸãã valueåŒæ°ãæå®ããå Žåã¯ãæ¡åŒµæ©èœã®åŒæ°ã瀺ããŸãã valueãçç¥ããå Žåã¯ãæ¡åŒµæ©èœã®ããã©ã«ãå€ãæå³ãããããŸãã¯æ¡åŒµæ©èœã«åŒæ°ã¯å¿
èŠãããŸããã 修食å:criticalãæå®ããå Žåã¯ãæ¡åŒµæ©èœã®isCritical屿§ãtrueã§ããããšãæå³ãããã以å€ã®å Žåã¯falseã§ããããšãæå³ããŸãã :criticalã®ãããã«:cã䜿çšã§ããŸãã
keytoolã³ãã³ãã¯ããããã®ååä»ãæ¡åŒµæ©èœããµããŒãããŠããŸãã ååã®å€§æåãšå°æåã¯åºå¥ãããŸããã
å€: å®å
šãªåœ¢åŒã§ããca:{true|false}[,pathlen:<len>]ãŸãã¯ca:true,pathlen:<len>ã®ç瞮圢ã§ãã<len>ã <len>ãçç¥ããå Žåã¯ca:trueã«ãªããŸãã
å€: usage(,usage)*ãusageã¯digitalSignatureãnonRepudiation (contentCommitment)ãkeyEnciphermentãdataEnciphermentãkeyAgreementãkeyCertSignãcRLSignãencipherOnlyãdecipherOnlyã®ããããã§ãã usageåŒæ°ã¯ããããŸããããªãããããæåã®æ°æå(digitalSignatureã®å Žåã¯dig)ã«ççž®ãããããã£ã¡ã«èšæ³(digitalSignatureã®å Žåã¯dSãcRLSignã®å Žåã¯cRLS)ã§æå®ãããã§ããŸãã usageã®å€ã®å€§æåãšå°æåã¯åºå¥ãããŸãã
å€: usage(,usage)*ãusageã¯anyExtendedKeyUsageãserverAuthãclientAuthãcodeSigningãemailProtectionãtimeStampingãOCSPSigningãä»»æã®OIDæååã®ããããã§ãã usageåŒæ°ã¯ããããŸããããªãããããæåã®æ°æåã«ççž®ãããããã£ã¡ã«èšæ³ã§æå®ãããã§ããŸãã usageã®å€ã®å€§æåãšå°æåã¯åºå¥ãããŸãã
å€: type:value(,type:value)*ãtypeã¯EMAILãURIãDNSãIPãOIDã®ããããã§ãã valueåŒæ°ã¯typeã衚ãæåå圢åŒã®å€ã§ãã
å€: SubjectAlternativeNameãšåãã§ãã
å€: method:location-type:location-value (,method:location-type:location-value)*ãmethodã¯timeStampingãcaRepositoryãä»»æã®OIDã®ããããã§ãã location-typeããã³location-valueåŒæ°ã¯SubjectAlternativeNameæ¡åŒµæ©èœã§ãµããŒããããŠããä»»æã®type:valueã§ãã
å€: 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ãäœæãããŸãã
ããŒã: ãŠãŒã¶ãŒã¯ãæ¡åŒµæ©èœ(ããã³èšŒææžã®ã»ãã®ãã£ãŒã«ã)ã®çµã¿åããã«ãã£ãŠã¯ã€ã³ã¿ãŒãããæšæºã«æºæ ããªãå Žåãããããšã«æ³šæããŠãã ããã ãèšŒææžã®é©åæ§ã«é¢ããèŠåããåç §ããŠãã ããã
{-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
{-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ã䜿çšããããšããèŠãããŸãã
{-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æå以äžã§ããå¿
èŠããããŸãã
{-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ã³ãã³ãã¯ãŠãŒã¶ãŒãèšŒææžå¿çãã€ã³ããŒãããããšããŠãããšèŠãªããŸãã
{-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æå以äžã§ããå¿
èŠããããŸãã
{-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ãªãã·ã§ã³ãæå®ããå ŽåããŠãŒã¶ãŒã¯æ°ããã¿ãŒã²ããå¥åã®å
¥åãæ±ããããŸããã æ¢åã®ãšã³ããªã¯ãã®ã¿ãŒã²ããå¥åã§äžæžããããŸãã ã€ã³ããŒãã§ããªããšã³ããªã¯ã¹ããããããèŠåã衚瀺ãããŸãã
{-file file}: å
¥åãã¡ã€ã«å
{-v}: 詳现åºå
keytool -certreqã³ãã³ãã§çæã§ããPKCS #10圢åŒã®èšŒææžèŠæ±ã®å
容ãåºåããŸãã ãã®ã³ãã³ãã¯ããã¡ã€ã«ããèŠæ±ãèªã¿åããŸãã ãã¡ã€ã«ãååšããªãå Žåã¯ãæšæºå
¥åããèŠæ±ãèªã¿åãããŸãã
{-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ã³ãã³ãã䜿ããŸãã
{-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ã䜿çšããããšããèŠãããŸãã
{-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ãªãã·ã§ã³ãåæã«æå®ããããšã¯ã§ããŸããã
{-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
ããŒã: ãã®ãªãã·ã§ã³ã¯ããŒã¹ãã¢ãšã¯é¢ä¿ãªã䜿çšã§ããŸãã
-file crl: å
¥åãã¡ã€ã«å
{-v}: 詳现åºå
èšŒææžå€±å¹ãªã¹ã(CRL)ããã¡ã€ã«crlããèªã¿åããŸãã CRLã¯ãçºè¡å
ã®CAã«ãã£ãŠåãæ¶ãããããžã¿ã«èšŒææžã®ãªã¹ãã§ãã CAã¯crlãã¡ã€ã«ãçæããŸãã
ããŒã: ãã®ãªãã·ã§ã³ã¯ããŒã¹ãã¢ãšã¯é¢ä¿ãªã䜿çšã§ããŸãã
[-new arg]: æ°èŠãã¹ã¯ãŒã
{-keystore keystore}: ããŒã¹ãã¢å
[-storepass arg]: ããŒã¹ãã¢ã®ãã¹ã¯ãŒã
{-storetype type}: ããŒã¹ãã¢ã®ã¿ã€ã
{-providername name}: ãããã€ãå
{-providerclass class [-providerarg arg]}: ãªãã·ã§ã³ã§æ§æåŒæ°ãæå®ããå®å
šä¿®é£Ÿã¯ã©ã¹åã§ã»ãã¥ãªãã£ã»ãããã€ãã远å ããŸãã
{-providerpath list}: ãããã€ãã®ã¯ã©ã¹ã»ãã¹
{-v}: 詳现åºå
ããŒã¹ãã¢ã®å
å®¹ã®æŽåæ§ãä¿è·ããããã«äœ¿ããã¹ã¯ãŒãã倿ŽããŸãã new_storepassã«ã¯ãæ°ãããã¹ã¯ãŒããæå®ããŸããããã¯6æå以äžã§ããå¿
èŠããããŸãã
{-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ãªãã·ã§ã³ãæå®ããªãã£ãå Žåã¯ãæ°ãããã¹ã¯ãŒãã®å
¥åãæ±ããããŸã
[-alias alias]: åŠçãããšã³ããªã®å¥å
{-keystore keystore}: ããŒã¹ãã¢å
[-storepass arg]: ããŒã¹ãã¢ã®ãã¹ã¯ãŒã
{-storetype type}: ããŒã¹ãã¢ã®ã¿ã€ã
{-providername name}: ãããã€ãå
{-providerclass class [-providerarg arg]}: ãªãã·ã§ã³ã§æ§æåŒæ°ãæå®ããå®å
šä¿®é£Ÿã¯ã©ã¹åã§ã»ãã¥ãªãã£ã»ãããã€ãã远å ããŸãã
{-providerpath list}: ãããã€ãã®ã¯ã©ã¹ã»ãã¹
{-v}: 詳现åºå
{-protected}: ä¿è·ãããŠããã¡ã«ããºã ã§æäŸããããã¹ã¯ãŒã
aliasã«ãã£ãŠç¹å®ããããšã³ããªãããŒã¹ãã¢ããåé€ããŸãã ã³ãã³ãè¡ã§å¥åãæå®ããªãã£ãå Žåã¯ãå¥åã®å
¥åãæ±ããããŸãã
{-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 (æå®ãããå Žå)ããŸã詊ã¿ãããŸãã ãã®è©Šã¿ã倱æãããšããŠãŒã¶ãŒã¯ãã¹ã¯ãŒãã®å
¥åãæ±ããããŸãã
åºæ¬çãªã³ãã³ããšãã®ãªãã·ã§ã³ã®äžèЧã衚瀺ããŸãã
ç¹å®ã®ã³ãã³ãã®è©³çްã衚瀺ããã«ã¯ã次ãå
¥åããŸãã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ã®çœ²åãååŸããã«ã¯ããŸããæ¬¡ã®ããã«èšŒææžçœ²åèŠæ±(CSR)ãçæããŸãã
keytool -certreq -file MarkJ.csr
ããã©ã«ãã®å¥åmykeyã«ãã£ãŠç¹å®ããããšã³ãã£ãã£ã®CSRãäœæãããMarkJ.csrãšããååã®ãã¡ã€ã«ã«èŠæ±ã眮ãããŸãã ãã®ãã¡ã€ã«ãVeriSignãªã©ã®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ã®å
¬éããŒãèªèšŒããèšŒææžãã€ã³ããŒãããåŸã¯(ãŸãã¯åçš®ã®èšŒææžããã§ã«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
ã«ãŒã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èŠæ Œã§ã¯ãèšŒææžã«å«ããæ å ±ãå®çŸ©ãããŠããããã®æ å ±ãèšŒææžã«æžãèŸŒãæ¹æ³(ããŒã¿åœ¢åŒ)ã«ã€ããŠãèšè¿°ãããŠããŸãã èšŒææžã®ãã¹ãŠã®ããŒã¿ã¯ã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ãšããèšŒææžãã¡ã€ã«ã¯ãã»ãã¥ãªãã£ã»ããããã£ã»ãã£ã¬ã¯ããª(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èŠæ Œã§å®çŸ©ãããŠããåºåå¯èœç¬Šå·åæ¹åŒã䜿ã£ãŠæ ŒçŽãããŸãã Base64ãšã³ã³ãŒããšãåŒã°ãããã®èšŒææžåœ¢åŒã§ã¯ãé»åã¡ãŒã«ããã®ä»ã®ã¡ã«ããºã ãéããŠãä»ã®ã¢ããªã±ãŒã·ã§ã³ã«èšŒææžã容æã«ãšã¯ã¹ããŒãã§ããŸãã
-importcertã³ãã³ããš-printcertã³ãã³ãã§ã¯ããã®åœ¢åŒã®èšŒææžãšãã€ããªç¬Šå·åã®èšŒææžãèªã¿èŸŒãããšãã§ããŸãã -exportcertã³ãã³ãã§ã¯ãããã©ã«ãã§ãã€ããªã»ãšã³ã³ãŒãã®èšŒææžãåºåãããŸãããã ãã-rfcãªãã·ã§ã³ãæå®ããå Žåã¯ãåºåå¯èœãšã³ã³ãŒã圢åŒã®èšŒææžãåºåãããŸãã
ããã©ã«ãã§ã¯ã-listã³ãã³ãã¯èšŒææžã®SHA256ãã£ã³ã¬ãŒããªã³ããåºåããŸãã -vãªãã·ã§ã³ãæå®ãããšã人éãèªãããšã®ã§ãã圢åŒã§èšŒææžãåºåãããŸãã -rfcãªãã·ã§ã³ãæå®ãããšãåºåå¯èœãšã³ã³ãŒã圢åŒã§èšŒææžãåºåãããŸãã
åºåå¯èœãšã³ã³ãŒã圢åŒã§ãšã³ã³ãŒããããèšŒææžã®å é ãšæ«å°Ÿã¯ã次ã®ããã¹ãã§æå®ãããŸãã
-----BEGIN CERTIFICATE----- encoded certificate goes here. -----END CERTIFICATE-----
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ã䜿çšããããšããèŠãããŸãã
ãTrail: Security Features in Java SEã
http://docs.oracle.com/javase/tutorial/security/index.html