X.509èšŒææžãšèšŒææžå€±å¹ãªã¹ã(CRL)
- æŠèŠ: èšŒææžãšã¯
- èšŒææžã䜿ãã¢ããªã±ãŒã·ã§ã³
- èšŒææžã®ååŸæ¹æ³
- X.509èšŒææžã®å
容
- èšŒææžã®ã¢ã¯ã»ã¹ãšç®¡çã«äœ¿ãJava API
- X.509èšŒææžã®çæã衚瀺ãã€ã³ããŒããããã³ãšã¯ã¹ããŒãã®ããã®JavaããŒã«
å
¬éããŒèšŒææžãšã¯ããããšã³ãã£ãã£ãçºè¡ããããžã¿ã«çœ²åã®ããææžã§ãå¥ã®ãšã³ãã£ãã£ã®å
¬éããŒ(ããã³ã»ãã®æ
å ±)ãç¹å®ã®å€ã§ããããšã蚌æãããã®ã§ãã
次ã§ã¯ãããã€ãã®éèŠãªçšèªã«ã€ããŠèª¬æããŸãã
- å
¬éããŒ
- å
¬éããŒã¯ãç¹å®ã®ãšã³ãã£ãã£ã«é¢é£ä»ããããæ°ã§ããå
¬éããŒã¯ã該åœãããšã³ãã£ãã£ãšã®éã«ä¿¡é Œã§ããé¢ä¿ãæã€å¿
èŠããããã¹ãŠã®äººã«å¯ŸããŠå
¬éããããšãæå³ãããã®ã§ãã å
¬éããŒã¯ã眲åãæ€èšŒããã®ã«äœ¿ãããŸãã
- ããžã¿ã«çœ²å
- ããŒã¿ãããžã¿ã«çœ²åããããšããã®ããŒã¿ã¯ããšã³ãã£ãã£ã®ãã¢ã€ãã³ãã£ãã£ããšããã®ãšã³ãã£ãã£ãããŒã¿ã®å
容ã«ã€ããŠç¥ã£ãŠããããšã蚌æãã眲åãšãšãã«æ ŒçŽãããŸãã ãšã³ãã£ãã£ã®éå
¬éããŒã䜿ã£ãŠçœ²åããããšã§ãããŒã¿ãåœé ã§ããªããªããŸãã
- ã¢ã€ãã³ãã£ãã£
- ãšã³ãã£ãã£ãç¹å®ããããã®æ¢ç¥ã®æ¹æ³ã§ãã ã·ã¹ãã ã«ãã£ãŠã¯ãå
¬éããŒãã¢ã€ãã³ãã£ãã£ã«ãããã®ããããŸããå
¬éããŒã®ä»ã«ããUNIX UIDãé»åã¡ãŒã«ã»ã¢ãã¬ã¹ãX.509èå¥åãªã©ãæ§ã
ãªãã®ãã¢ã€ãã³ãã£ãã£ãšããããšãã§ããŸãã
- 眲å
- 眲åã¯ããšã³ãã£ãã£(眲åè
)ã®éå
¬éããŒã䜿ããããããŒã¿ã«å¯ŸããŠèšç®ããããã®ã§ãã
- éå
¬éããŒ
- éå
¬éããŒãšã¯ãç¹å®ã®ãšã³ãã£ãã£ã®ã¿ãç¥ã£ãŠããæ°ã®ããšã§ããã®æ°ã®ããšããã®ãšã³ãã£ãã£ã®éå
¬éããŒãšåŒã³ãŸããéå
¬éããŒã¯ãä»ã«ç¥ãããªãããã«ç§å¯ã«ããŠããããšãåæã«ãªã£ãŠããŸãã éå
¬éããŒãšå
¬éããŒã¯ããã¹ãŠã®å
¬éããŒæå·åã·ã¹ãã ã§å¯Ÿã«ãªã£ãŠååšããŠããŸãã DSAãªã©ã®å
žåçãªå
¬éããŒæå·åã·ã¹ãã ã®å Žåã1ã€ã®éå
¬éããŒã¯æ£ç¢ºã«1ã€ã®å
¬éããŒã«å¯Ÿå¿ããŸãã éå
¬éããŒã¯ã眲åãèšç®ããã®ã«äœ¿ãããŸãã
- ãšã³ãã£ãã£
- ãšã³ãã£ãã£ã¯ã人ãçµç¹ãããã°ã©ã ãã³ã³ãã¥ãŒã¿ãäŒæ¥ãéè¡ãªã©ãäžå®ã®åºŠåãã§ä¿¡é Œã®å¯Ÿè±¡ãšãªãããŸããŸãªãã®ãæããŸãã
å
¬éããŒæå·åã§ã¯ããã®æ§è³ªäžããŠãŒã¶ãŒã®å
¬éããŒã«ã¢ã¯ã»ã¹ããå¿
èŠããããŸãã å€§èŠæš¡ãªãããã¯ãŒã¯ç°å¢ã§ã¯ãäºãã«éä¿¡ããŠãããšã³ãã£ãã£éã§ä»¥åã®é¢ä¿ãåŒãç¶ã確ç«ãããŠãããšä»®å®ãããã䜿ãããŠãããã¹ãŠã®å
¬éããŒãåããä¿¡é Œã§ãããªããžããªãååšãããšä»®å®ãããããããšã¯äžå¯èœã§ãã ãã®ãããªå
¬éããŒã®é
åžã«é¢ããåé¡ã解決ããããã«èšŒææžãèæ¡ãããŸããã çŸåšã§ã¯ãèšŒææžçºè¡å± (CA)ãä¿¡é Œã§ãã第äžè
ãšããŠæ©èœããŸãã CAã¯ãä¿¡é ŒãããŠãã»ãã®ãšã³ãã£ãã£ã®ããã«èšŒææžã«çœ²åãã(èšŒææžãçºè¡ãã)ãšã³ãã£ãã£(ããžãã¹ãªã©)ã§ãã CAã ãããæ³çãªå¥çŽã«ãã矩åã®äžã§ãæå¹ãã€ä¿¡é Œã§ããèšŒææžãäœæãããã®ãšèŠãªãããŠããŸãã ComodoãDigiCertãGoDaddyãªã©ã倿°ã®å
Œ
±ã®èšŒææžçºè¡å±ããããŸãã
çŸåšãX.509èšŒææžã®ã¢ããªã±ãŒã·ã§ã³ã§ãã£ãšã身è¿ãªãã®ã¯ãTLSãããã³ã«ããµããŒãããWebãã©ãŠã¶(Mozilla FirefoxãMicrosoft Internet Explorerãªã©)ã§ãã TLS (Transport Layer Security)ã¯ããããã¯ãŒã¯ã»ãã©ãã£ãã¯ã«ãã©ã€ãã·ãšèªèšŒæ©èœãæäŸããã»ãã¥ãªãã£ã»ãããã³ã«ã§ãã TLSããµããŒããããã©ãŠã¶ã¯ãTLSããµããŒãããWebãµãŒããŒãšã®éã§ã ãããã®ãããã³ã«ã䜿ãããšãã§ããŸãã
X.509ã®èšŒææžã«äŸåããæè¡ãšããŠã¯ãã»ãã«æ¬¡ã®ãã®ããããŸãã
- 眲åãããJava ARchiveãMicrosoft Authenticodeãªã©ãããŸããŸãªã³ãŒãçœ²åæ¹åŒã
- PEMãS/MIMEãªã©ãæ©å¯ä¿è·ãããé»åã¡ãŒã«ã®åçš®æšæºã
- SETãªã©ãé»ååååŒçšã®ãããã³ã«ã
èšŒææžãååŸããåºæ¬çãªæ¹æ³ãšããŠã¯ã次ã®2ã€ããããŸãã
- èªåã§äœæãã(keytoolãªã©ã®é©åœãªããŒã«ã䜿ã)
- èšŒææžçºè¡å±ã«èšŒææžã®çºè¡ãäŸé Œãã(çŽæ¥èŠæ±ããããŸãã¯keytoolãªã©ã®ããŒã«ã䜿ã£ãŠçæããèŠæ±ã䜿ã)ã
èšŒææžã®äœæåŠçã§å¿
èŠã«ãªãäž»ãªå
¥åã«ã¯ã次ã®ãã®ããããŸãã
- 察ã«ãªã£ãå
¬éããŒãšéå
¬éããŒãå°çšã®ããŒã«(keytoolãªã©)ããã©ãŠã¶ã䜿ã£ãŠçæããããã®ã§ãã å
¬éããŒã®ã¿ãã ãã«å¯ŸããŠãæç€ºãããŸãã éå
¬éããŒã¯ãããŒã¿ãžã®çœ²åã«äœ¿ãããŸããä»äººã«éå
¬éããŒãç¥ããããšãææè
ã«ãªãããŸãããŠãææè
ã«åž°å±ããæ³çãªææžãåœé ãããããšã«ããªããããŸããã
- èªå®ããããšã³ãã£ãã£(èªåãªã©)ã«ã€ããŠã®æ
å ±ãæäŸããå¿
èŠããããŸãã äžè¬ã«ãååãå€åå
äœæãªã©ã®æ
å ±ãå«ãŸããŸãã CAã«èšŒææžã®çºè¡ãäŸé Œããå Žåãéåžžãæ
å ±ãæ£ããããšã蚌æãããã®ãæç€ºããªããã°ãªããŸããã
CAã«èšŒææžã®çºè¡ãäŸé Œããå Žåã¯ãèªåã®éå
¬éããŒãšèªåã«ã€ããŠã®æ
å ±ãæåºããŸãã keytoolããèšŒææžçœ²åèŠæ±ã®çæããµããŒããããã©ãŠã¶ãªã©ã®ããŒã«ã䜿ã£ãŠãã®æ
å ±ã«ããžã¿ã«çœ²åããCAã«éããŸãã CAã¯èšŒææžãçæããŠãéãè¿ããŸãã
èªåã§èšŒææžãçæããå Žåã¯ãåæ§ã®æ
å ±ã«å ããŠãããã«è¥å¹²ã®æ
å ±(èšŒææžã®æå¹æéãã·ãªã¢ã«çªå·ãªã©)ãçšæããkeytoolãªã©ã®ããŒã«ã䜿ã£ãŠèšŒææžãäœæããŸãã èªå·±çœ²åã®èšŒææžã§ã¯åãå
¥ããããªãå ŽåããããŸããCAãæäŸãã䟡å€ã®1ã€ã¯ãäžç«ã§ä¿¡é Œã§ãã玹ä»ãµãŒãã¹ãæäŸããããšã§ããããã®äžéšã¯ãèªèšŒãµãŒãã¹æ¥å(CSP)ã®äžã§å
¬éãããŠããæ€èšŒèŠä»¶ã«åºã¥ããŠããŸãã
X.509èŠæ Œã§ã¯ãèšŒææžã«å«ããæ
å ±ãå®çŸ©ãããŠããããã®æ
å ±ãèšŒææžã«æžãèŸŒãæ¹æ³(ããŒã¿åœ¢åŒ)ã«ã€ããŠãèšè¿°ãããŠããŸãã ãã¹ãŠã®X.509èšŒææžã¯ã眲åã®ã»ãã«æ¬¡ã®ããŒã¿ãå«ãã§ããŸãã
- Version
- èšŒææžã«é©çšãããX.509èŠæ Œã®ããŒãžã§ã³ãç¹å®ããŸããèšŒææžã«æå®ã§ããæ
å ±ã¯ãããŒãžã§ã³ã«ãã£ãŠç°ãªããŸãã ãããŸã§ã«ã3ã€ã®ããŒãžã§ã³ãå®çŸ©ãããŠããŸãã
- ã·ãªã¢ã«çªå·
- èšŒææžãäœæãããšã³ãã£ãã£ã¯ããã®ãšã³ãã£ãã£ãçºè¡ããä»ã®èšŒææžãšåºå¥ããããã«ãèšŒææžã«ã·ãªã¢ã«çªå·ãå²ãåœãŠãŸãã ãã®æ
å ±ã¯ãæ§ã
ãªæ¹æ³ã§äœ¿ãããŸããããšãã°ãèšŒææžã倱å¹ããããšãã·ãªã¢ã«çªå·ãèšŒææžå€±å¹ãªã¹ã(CRL)ã«æ ŒçŽãããŸãã
- 眲åã¢ã«ãŽãªãºã èå¥å
- èšŒææžã«çœ²åãä»ãããšãã«CAã䜿ã£ãã¢ã«ãŽãªãºã ãç¹å®ããŸãã
- çºè¡è
å
- èšŒææžã«çœ²åãããšã³ãã£ãã£ã®X.500åã§ãã ãšã³ãã£ãã£ã¯ãéåžžã¯CAã§ãã ãã®èšŒææžã䜿ãããšã¯ãèšŒææžã«çœ²åãä»ãããšã³ãã£ãã£ãä¿¡é Œããããšãæå³ããŸãã ã«ãŒããŸãã¯ãããã»ã¬ãã«ã®CAã®èšŒææžãªã©ãå Žåã«ãã£ãŠã¯çºè¡è
ãèªèº«ã®èšŒææžã«çœ²åãä»ããããšãããç¹ã«æ³šæããŠãã ããã
- æå¹æé
- åèšŒææžã¯ããããããæéã ãæå¹ã«ãªããŸãã ãã®æéã¯éå§ã®æ¥æãšçµäºã®æ¥æã«ãã£ãŠæå®ãããæ°ç§ã®çãæéãã100幎ãšããé·æã«ãããããšããããŸãã éžæãããæå¹æéã¯ãèšŒææžãžã®çœ²åã«äœ¿ãããéå
¬éããŒã®åŒ·åºŠãèšŒææžã«æ¯æãéé¡ãªã©ãããŸããŸãªèŠå ã§ç°ãªããŸãã æå¹æéã¯ã䜿çšããéå
¬éããŒãæãªãããªãå Žåã«ããšã³ãã£ãã£ãå
¬éããŒãä¿¡é Œã§ãããšæåŸ
ãããæéã§ãã
- Subjectå
- èšŒææžã§å
¬éããŒãèå¥ãããŠãããšã³ãã£ãã£ã®ååã§ãã ãã®ååã¯X.500æšæºã䜿ãã®ã§ãã€ã³ã¿ãŒãããå
šäœã§äžæãªãã®ãšæ³å®ãããŸãã ããã¯ãšã³ãã£ãã£ã®èå¥å(DN)ã§ããããšãã°ã
CN=Java Duke, OU=Java Software Division, O=Sun Microsystems Inc, C=US
ãããã¯ãããããµããžã§ã¯ãã®éç§°ãçµç¹åäœãçµç¹ãåœã衚ããŸãã
- Subjectã®å
¬éããŒæ
å ±
- ååãä»ãããããšã³ãã£ãã£ã®å
¬éããŒãšã¢ã«ãŽãªãºã èå¥åã§ããã¢ã«ãŽãªãºã èå¥åã§ã¯ãå
¬éããŒã«å¯ŸããŠäœ¿ãããŠããå
¬éããŒæå·åã·ã¹ãã ããã³é¢é£ããããŒã»ãã©ã¡ãŒã¿ãæå®ãããŠããŸãã
X.509 Version 1ã¯ã1988幎ããå©çšãããŠåºãæ®åããŠããããã£ãšãäžè¬çã§ãã
X.509 Version 2ã§ã¯ããµããžã§ã¯ããçºè¡è
ã®ååãããšã§åå©çšã§ããããã«ããããã«ããµããžã§ã¯ããšçºè¡è
ã®äžæèå¥åã®æŠå¿µãå°å
¥ãããŸããã ã»ãšãã©ã®èšŒææžãããã¡ã€ã«ææžã§ã¯ãååãå䜿çšããªãããšãšãèšŒææžã§äžæãªèå¥åã䜿ããªãããšããåŒ·ãæšå¥šãããŠããŸãã Version 2ã®èšŒææžã¯ãåºãã¯äœ¿ãããŠããŸããã
X.509 Version 3ã¯ãã£ãšãæ°ãã(1996幎)èŠæ Œã§ãæ¡åŒµæ©èœã®æŠå¿µããµããŒãããŠããŸããããã«ãããã ãã§ãæ¡åŒµæ©èœãå®çŸ©ã§ããèšŒææžã«å«ããããšãã§ããŸãã çŸåšäœ¿ãããŠããäžè¬çãªæ¡åŒµæ©èœãšããŠã¯ãKeyUsage (ã眲åå°çšããªã©ãããŒã®äœ¿çšãç¹å®ã®ç®çã«å¶éãã)ãAlternativeNames (DNSåãé»åã¡ãŒã«ã»ã¢ãã¬ã¹ãIPã¢ãã¬ã¹ãªã©ãä»ã®ã¢ã€ãã³ãã£ãã£ãå
¬éããŒã«é¢é£ä»ããããšãã§ãã)ãªã©ããããŸãã æ¡åŒµæ©èœã«ã¯ãcriticalãšããããŒã¯ãä»ããŠããã®æ¡åŒµæ©èœã®ãã§ãã¯ãšäœ¿çšã矩åä»ããããšãã§ããŸãã ããšãã°ãcriticalãšããŒã¯ãããKeyCertSignãèšå®ãããKeyUsageãšã¯ã¹ãã³ã·ã§ã³ãèšŒææžã«å«ãŸããŠããå Žåããã®èšŒææžãSSLéä¿¡äžã«æç€ºãããšãèšŒææžãæåŠãããŸããããã¯ãèšŒææžã®ãšã¯ã¹ãã³ã·ã§ã³ã«ãã£ãŠãé¢é£ããéå
¬éããŒãèšŒææžã®çœ²åå°çšãšããŠæå®ãããŠãããSSLã§ã¯äœ¿çšã§ããªãããã§ãã
èšŒææžã®ãã¹ãŠã®ããŒã¿ã¯ãASN.1/DERãšåŒã°ãã2ã€ã®é¢é£èŠæ Œã䜿ã£ãŠãšã³ã³ãŒããããŸãã Abstract Syntax Notation 1ã¯ããŒã¿ã«ã€ããŠèšè¿°ããŠããŸãã Definite Encoding Rulesã¯ãããŒã¿ã®ä¿åããã³è»¢éã®æ¹æ³ã«ã€ããŠèšè¿°ããŠããŸãã ãã®çµã¿åããã¯ãã匷åãã€æè»ãã§ãããšåæã«ããããã«ãã䜿ãã¥ããããã®ã§ãããšèšãããŠããŸãã
IETF PKIXã®äœæ¥çã¯ãã€ã³ã¿ãŒãããå
¬éããŒã»ã€ã³ãã©ã¹ãã©ã¯ãã£(PKI)ã®æšæºåãé²ããŠããŸãã ããããã¯ãã®äœæ¥ã«åžžã«æ³šç®ããŠãããRFC 3280ã§èŠå®ãããŠããX.509 Certificate and CRL ProfileããµããŒãããŸãã
java.security.certã«ããCertificate APIã«ã¯ã次ã®ã¯ã©ã¹ãšã€ã³ã¿ãã§ãŒã¹ãå«ãŸããŠããŸãã
- CertificateFactoryã¯ã©ã¹ã¯ãèšŒææžãã¡ã¯ããªã®æ©èœãå®çŸ©ããŸããèšŒææžãã¡ã¯ããªã¯ããšã³ã³ãŒãã£ã³ã°ããèšŒææžã®ãªããžã§ã¯ããèšŒææžå€±å¹ãªã¹ã(CRL)ã®ãªããžã§ã¯ããããã³èšŒææžãã¹ã®ãªããžã§ã¯ããçæããããã«äœ¿çšãããŸãã
- Certificateã¯ã©ã¹ã¯ãããŸããŸãªèšŒææžã管çããããã®æœè±¡ã¯ã©ã¹ã§ãã 圢åŒã¯ç°ãªã£ãŠããŠãéèŠãªå
±éã®äœ¿ç𿹿³ãåãããèšŒææžã®ããã®æœè±¡åã§ãã ããšãã°ãX.509ãšPGPãªã©ã¯ç°ãªãçš®é¡ã®èšŒææžã§ãããäžè¬çãªèšŒææžã®æ©èœ(ãšã³ã³ãŒããšæ€èšŒãªã©)ãšãå
¬éããŒãªã©äžéšã®æ
å ±ãå
±æããŠããŸãã
- CRLã¯ã©ã¹ã¯ãããŸããŸãªèšŒææžå€±å¹ãªã¹ã(CRL)ã管çããããã®æœè±¡ã¯ã©ã¹ã§ãã
- X509Certificateã¯ã©ã¹ã¯ãX.509èšŒææžã®ããã®æœè±¡ã¯ã©ã¹ã§ãã X.509èšŒææžã®ãã¹ãŠã®å±æ§ã«ã¢ã¯ã»ã¹ããããã®æšæºçãªææ®µãæäŸããŸãã
- X509Extensionã€ã³ã¿ãã§ãŒã¹ã¯ãX.509æ¡åŒµæ
å ±ã®ããã®ã€ã³ã¿ãã§ãŒã¹ã§ãã X.509 v3ã®èšŒææžããã³v2ã®CRLã«å®çŸ©ãããŠããæ¡åŒµæ
å ±ã¯ãä»å 屿§ããŠãŒã¶ãŒãå
¬éããŒãšé¢é£ä»ããããã®ã¡ã«ããºã ãæäŸããŸããããã¯ãèšŒææžã®éå±€ãCRLã®é
åžã管çããããã®ãã®ã§ãã
- X509CRLã¯ã©ã¹ã¯ãX.509èšŒææžå€±å¹ãªã¹ã(CRL)ã®ããã®æœè±¡ã¯ã©ã¹ã§ãã CRLã¯ãã¿ã€ã ã¹ã¿ã³ãã®ä»ãããªã¹ãã§ãåãæ¶ãããèšŒææžã瀺ããŠããŸãã ããã¯èšŒææžçºè¡å±(CA)ã«ãã£ãŠçœ²åãããå
¬éã®ãªããžããªã§èªç±ã«å©çšã§ããããã«ãªã£ãŠããŸãã
- X509CRLEntryã¯ã©ã¹ã¯ãCRLã®ãšã³ããªã®ããã®æœè±¡ã¯ã©ã¹ã§ãã
JDK 1.4ã§ãèšŒææžã®é£éãŸãã¯èšŒææžãã¹ã®æ§ç¯ããã³æ€èšŒããµããŒãããããã«ãæ°ããã¯ã©ã¹ã远å ãããŸããã ãããã®ã¯ã©ã¹ã®è©³çްã¯ããPKIããã°ã©ããŒãºã»ã¬ã€ãããåç
§ããŠãã ããã
keytool (SolarisãLinuxãŸãã¯Mac OS XçšãWindowsçš)ãšããååã®ããŒã«ãããããã®ããŒã«ã䜿çšãããšãå
¬é/éå
¬éããŒã»ãã¢ãèªå·±çœ²åã®X.509 v3èšŒææžãäœæããããããŒã¹ãã¢ã管çãããã§ããŸãã ããŒãšèšŒææžã䜿ã£ãŠãJavaã¢ããªã±ãŒã·ã§ã³ãã¢ãã¬ããã«ããžã¿ã«çœ²åããŸã(jarsignerããŒã«(SolarisãLinuxãŸãã¯Mac OS XçšãWindowsçš)ãåç
§)ã
ããŒã¹ãã¢ãšã¯ãããŒãšèšŒææžãä¿æããä¿è·ãããããŒã¿ããŒã¹ã§ãã ããŒã¹ãã¢ãžã®ã¢ã¯ã»ã¹ã¯ããã¹ã¯ãŒãã«ãã£ãŠä¿è·ãããŸããããŒã¹ãã¢ã®ãã¹ã¯ãŒãã¯ãããŒã¹ãã¢ã®äœææã«äœæè
ãå®çŸ©ãã倿Žã§ããã®ã¯ãçŸåšã®ãã¹ã¯ãŒããæå®ããå Žåã®ã¿ã§ãã ãŸããããŒã¹ãã¢ã«å«ãŸããåéå
¬éããŒã¯ãããããã®ãã¹ã¯ãŒãã«ãã£ãŠä¿è·ã§ããŸãã
keytoolã䜿çšãããšããã¡ã€ã«ãšããŠæ ŒçŽãããŠããX.509 v1ãv2ãããã³v3ã®èšŒææžã®è¡šç€ºãã€ã³ããŒããããã³ãšã¯ã¹ããŒããå¯èœã§ãèªå·±çœ²åã«ããæ°ããv3èšŒææžãäœæããããšãã§ããŸãã å
·äœçã«ã¯ãkeytoolã®ããã¥ã¡ã³ã(SolarisãLinuxãŸãã¯Mac OS XçšãWindowsçš)ã®ãäŸãã®é
ãåç
§ããŠãã ããã