áË̓͂— á‚à›‚œÍƒ ˂‡ŸÁ à߉œ
(Ý͂žˆ ś‹–) ÿÁߘ ‚ƒ ޛÁ áÁà—ƒŒ


ÿÁߘ ႝà͟‡œÎ áßÍ ÙŸ–‰… ß ‚ÅœŸš— ß ‚Íß͋ ˟삅

Todd Sundsted :à˜‹Ÿßœ
JavaWorld.com
ËÁˉ àÍÁ͌ :݇ͅ›

àšŠ
ÞéŸÁ ÜßÁ ś‹– à‹ ÎÁ àËÍßÀ ŋ˃ łšÔÁ ß ‚ÍÁ΃Á ÎÁ à˂•…‹Á ‚ƒ ˟œÁ߅ÿ›
áÁ̓ ޟÁ Ëß‡ß ‚ƒ .˟΂‹ƒ ÁÍ Ëߊ áË̓͂— á‚à›‚œÍƒ ¬ÿÁߘ à͂ƒÍË àß›‡›
ËéŸì‚… àƒ Ô߃͛ łŸŸÎ‡ ˟‚ƒ ¬ËœŒ‚ƒ ޛŸÁ ނ—›Á ˉ ‚… à— ÿŸ‚à›‚œÍƒ Ŋ‚‹
ÿ酂閟–‰… Í߅ ڟ ‚ƒ ÁÍ ‚›Œ Todd Sundsted á͂‡ à‚› ÍË .˟œÁ˃ ÁÍ ÿÁߘ
àÍéŸé‡éœÎ ËéŸé삅 áÁ̓ áÍß͎ ܉Á͛ ß Ëœ—ÿ› àÁ͛ X.509 ߟ…—„‹Í„ à͂ƒÍË
.˝Ëÿ› ɟŽß… ÁÍ X.509 ÿÁߘ

ß X.509 á‚éÿéÁßé˜ ¬ÿé›ßé›é Ë韙— áÍÁÌ˜Î›Í à͂ƒÍË à…ŒÌ˜ ś‹– ˜ˆ ØÍÕ
ÁÍ Áß‚é‡ àéƒ ÔßéƒÍ› ႞‹š— .˟Ëߛœ ˗ ֚ÔÁ ÿÁߘ ߓ™ àƒ Ô߃͛ ႞…‹Ÿ™
à˂é•é…‹Á à߉œ ˟‚ƒ Þߜ—Á .˟Ë̓ ÿ„ ‚žœÀ ş›Á àƒ ß ËŸË͗ Íß͛ ß ÿ‹Í̓
Í‚é— ß Íé‹ ÞÀ ‚éƒ à‚é› ÞéŸÁ àé— Å‹Á ÿßŽß› ޟÁ ß ËŸÍŸ˜ƒ ˂Ÿ ÁÍ ‚žœÀ ÎÁ
.˟ÍÁË

:˟Ÿ‚›œ à™‚Ô› ÁÍ ÿÁߘ à͂ƒÍË àß›‡› ޟÁ ႞›…‹– à› ˟œÁ߅ÿ›

˜ŒŠƒÿ› ͂ƒ…Á ÿ›ß› ˟™— áÍÁÌ˜Î›Í àƒ ‚ÿÁߘ - ÜßÁ ś‹–
X.509 ႝÿÁߘ ÎÁ à˂•…‹Á à߉œ - ÝßË Å›‹–
Á߂‡ X.509 CRL ß CRL ႞‹š— Ë̓͂— - Ýߋ ś‹–
ÿÁߘ à͟‡œÎ áßÍ ÙŸ–‰… ß ÅœŸš— ß Íß͋ ˟삅 - Ý͂žˆ ś‹–

à›Ÿƒ ՜ áÁ̓ áÁà›‚œÍƒ ˂‡ŸÁ ܂‰ ÍË ‚›Œ :˟͟˜ƒ Í՜ ÍË ÁÍ ÍŸÎ áߟ͂œ‹
ł鏚éÔÁ àéƒ Þ‚‹À ÿ‹Í…‹Ë àƒ Î‚Ÿœ HIPPA Security Guidlines .˟…‹ ÿ…›š‹
Üé›‚éŒ Ýé ‚Î‚Ÿœ ޟÁ .ŋÁ àˌ à͟ŠÌ ÞÀ ‘ƒ‚… ႞›…‹Ÿ‹ ÍË à— ËÍÁË ÿ‹‚‹‰
ÞéŸÁÍ郂œƒ .ˌ‚ƒÿ› ‚à›‚œÍƒ ͘ŸË ØÍÔ ÎÁ ÿ‹Í…‹Ë ݝ ß ÒŠŒ ܂‡ ÎÁ ÿ‹Í…‹Ë
á‚éà雂éœÍƒ .ˌ‚ƒ ޛŸÁ ˟‚ƒ Á·Á ޟƒ ܃‚–…› ԃÁßÍ ‚›Œ ÿŸÎ߅ ݅‹Ÿ‹ ÍË
‚éžéœÀ ‚ƒ à— ÁÍ ÿŸ‚Íß͋ ¬Ð‚‹‰ łšÔÁ ܂–…œÁ ÎÁ ܃– ˜œÁ߅ƒ ˟‚ƒ ŜŸš—
ÅéœéŸš— á‚à›‚œÍƒ ˟‚ƒ Ϝ ‚Íß͋ ß ËœŸ‚›œ ˟Ÿ‚… ¬Ëœœ—ÿ› ÍÁ͖̓ Ԃƒ…ÍÁ
ÝéÁÍé• ‚éžé…éœéŸš— à— ÿ‹‚‹‰ łšÔÁ áßÍ Å‚Ÿ™› ݂‡œÁ ß Ñ̄͟ ÎÁ ܃– ÁÍ
.˜Ÿ‚›œ ˟삅 ¬ËœÁàË͗

SSL .(Secure Socket Layer) Ë錂ƒÿ› SSL ÎÁ à˂•…‹Á ¬ËŸì‚… ႞ÁÍ ÎÁ ÿ—Ÿ
¬Ë錂éƒÿ› ÿ‹Í…‹Ë ÍË Á߂‡ áÁ̓ (Java Secur Socket Extension) JSSE ÍË à—
Ԃéƒé…ÍÁ áÍÁ͖̓ ˜ŸÀÍ͕ ޟ‰ ÁÍ ËŸì‚… ͂— X.509 áÏߙߜ—… ÎÁ à˂•…‹Á ‚ƒ
ނ郟…Œ„ áߖ ß Öߜ…› áÍÁÌ˜Î›Í á‚Ý…ŸÍߘ™Á ÎÁ à˂•…‹Á ‚ƒ ß Ë͟˜ÿ› à˞ƒ
Íé†ßé› ‚à›‚œÍƒ ͆—Á ËÍߛ ÍË ÑßÍ ÞŸÁ à— Å•˜ ˟‚ƒ àœ‚–Ë‚ .˟‚›œÿ› àŸž…
͝ à— ËŸ…‹ Þì›Ô› ß ËŸ…‹ ޟÁ ÎÁ ͟’ á͘ŸË ܉àÁÍ Ü‚ƒœË ÿ…–ß àϟ߃ ¬Å‹Á
͂— ËÍÁߛ ÿސƒ ÍË SSL ޟÁ Ëß‡ß ‚ƒ .˜Ÿ‚›œÿ› àŸž… ÁÍ SSL ނƒŸ…Œ„ ØÍÔ ßË
à˂é•é…é‹Á ÞÀ ÎÁ ˟œÁ߅ÿ›œ ‚Ÿ ˟ÍÁ˜ á΂Ÿœ ÞÀ àƒ ‚›Œ ÿ…–ß ˟‚Œ ¬Ëœ—ÿ›œ
ނ…Ëߊ ˟‚ƒ áËÍÁߛ ޟœˆ ÍË .˟Ÿ‚›œ à˂•…‹Á ÞÀ ÎÁ ˟Áߊÿ›œ ÿ…‰ ‚Ÿ ˟œ—
.˟Ÿ‚›œ ˂‡ŸÁ Á͜À àƒ‚Œ› ÿŸÀ͂—

˟삅
ÁÍ ÅéœéŸš— ß Íß͋ ڟ ޟƒ ԃÁßÍ .ݟÎÁ˜Ÿƒ ÿ–Ÿ–Ë à‚˜œ ܗŒ› ޟÁ àƒ ËŸŸ‚Ÿƒ
àéˆÍé˜) ˜Œ‚ƒÿ› SSL ş™ƒ‚– áÁÍÁË à›‚œÍƒ ßË ÎÁ áÁàœß›œ à— ËŸÍŸ˜ƒ Í՜ ÍË
ÎÁ à˂é•é…é‹Á ‚éƒ àé— ÿ鍂éé…ŠÁ á‚à›‚œÍƒ ÍßԜŸ› ß (˜…‹Ÿœ şßÍ Üƒ‚–
ËéÁߊÿ› ßÁ ÎÁ ß Ëߌÿ› ܍…› Íß͋ àƒ ÅœŸš— .˜Áàˌ à…Š‚‹ X.509 áÏߙߜ—…
ËßéŠ Î韜 ßÁ ‚… ˝Áߊÿ› ŜŸš— ÎÁ- ÿƒ‚Š…œÁ Íßԃ ß ËŸ‚›œ ˟삅 ÁÍ Ëߊ ‚…
˟Àÿ› џ„ Å͘ àƒ ¬Ë͟˜ÿ› ÅÍߍ SSL à™Ÿ‹ßƒ à— ÅœŸš— ˟삅 .˜— ˟삅 ÁÍ
àé— ÿé…é—ÍŒ á‚à›‚œÍƒ ÍË ÞŸÁ Ëß‡ß ‚ƒ .ˌ‚ƒ à…ŒÁË ÿŒ–œ SSL łŸ™› ÍË à—
Åé‹Á ÿŒßÍ ‚žœ… ŜŸš— ˟삅 ¬ËŒ‚ƒÿ› ݞ› ß ÿ›ÁΙÁ ÅÁÍߛÁ ݂›… àƒ ÿ‹Íƒ‚‹‰
.àœ ‚Ÿ ŋÁ ÿœßœ‚– ß Î‚‡› ŜŸš— Ëß‡ß à—œŸÁ ÎÁ ނœŸ›ÔÁ áÁ̓

ÍÁËÎé›Í Ԃƒ…ÍÁ ڟ áÍÁ͖̓ ނÁߊ ŜŸš— ͘Á .˟‚›œÿ› ˟삅 ÁÍ Ëߊ ŜŸš—
‚é‡éœéŸÁ ÍË ÝéÁߊÿ›œ ޛ .ËÍÁË à™‰Í› ޟ˜ˆ ÞË͗ ÿÔ àƒ Î‚Ÿœ ͂—ÞŸÁ ˌ‚ƒ
.ÝË ÉŸŽß… ÁÍ àˌ áÍÁÌ˜Î›Í Ô‚ƒ…ÍÁ ڟ ˂‡ŸÁ ˜ŸÀ͕

˜—ÿ› ͂— àƒ Öß͌ ŜŸš—
‚žœÀ ÎÁ ÿ—Ÿ à͂ƒÍË ÉŸŽß… ޟÁ̓‚œƒ ¬Ëœœ—ÿ› ˟삅 ÁÍ Í˜ŸË—Ÿ ŜŸš— ß Íß͋
ÝéŸÎÁËéœéŸéƒ ÿ靂˜œ Íß͋ ˟삅 ˜ŸÀ͕ àƒ ÚŸËΜ ÎÁ ˟Ÿ‚Ÿƒ Á˅ƒÁ .ŋŸ•‚—
á͂— ˟‚ƒ Íß͋ ¬ËŸ‚›œ ˟삅 ÁÍ Íß͋ ŜŸš— ڟ à—œŸÁ áÁ̓ .(² ß ± ܉Á͛)
ܛ ÞÀ ˜Á߅ƒ ˟‚ƒ Ϝ ŜŸš— ß ËŸÀÿ› ̓ ßÁ à˞ ÎÁ Ԗ• à— ËË Ý‚‡œÁ ÁÍ
Ë韙— áÍÁÌ˜Î›Í Å‚Ÿ™› ڟ ÎÁ ‚žœÀ áßË Í Íß՜› ޟ› àƒ ß ËŸ‚›œ ˟삅 ÁÍ
.ÝË͗ à͂ŒÁ ÞÀ àƒ ÜßÁ ś‹– ÍË Þ› à— Ëœœ—ÿ› à˂•…‹Á ÿ›ß›

ß Ëœ—ÿ› ܂‹ÍÁ Íß͋ àƒ ÁÍ àËÁË ÎÁ áÍÁ˖› ¬Ëߌÿ› ܍…› Íß͋ àƒ ÅœŸš— ÿ…–ß
ÁÍ àËÁË ÞÀ ËßéŠ à霂›Í‰› ß ÿ‚…ŠÁ ˟™— ÎÁ à˂•…‹Á ‚ƒ ‚… ˝Áߊÿ› ßÁ ÎÁ
-ˌ‚ƒÿ› ÞÀ ݂‡œÁ àƒ Í˂– Íß͋ Ԗ• à— ÿ™›- ˟‚›œ ‚Ž›Á ܂…Ÿ‡ŸË à–ŸÍÔ àƒ
á‚éŽé›Á ‚éƒ ÍßÍé‹ .ËéŒ‚éƒ àˌœ š›Íƒ ßÁ àœ‚›Í‰› ˟™— à—œŸÁ Ó͕ ‚ƒ à…ƒ™Á
ÍË àËéŒ àÍéŸŠÌ ÿ›ß› ˟™— ÎÁ à˂•…‹Á ‚ƒ ŜŸš— ß ËËÿ› ʋ‚„ Ëߊ ܂…Ÿ‡ŸË
݂é‡éœÁ ËéŸéì‚é… ܛ ß ËŸ‚›œÿ› ˟삅 ÁÍ Íß͋ ܂…Ÿ‡ŸË ႎ›Á ¬Íß͋ ÿÁߘ
.Ëߌÿ›

ÅéœéŸšé— ޟÁ̓‚œƒ ß ËœŒ‚ƒ àˌœ ÿ•͐› ܃– ÎÁ ŜŸš— ß Íß͋ ŋÁ ޗ›› ÿ‚˜
Ë韂ƒ Íß͋ ¬ßŸÍ‚œ‹ ޟÁ àƒ à‡ß… ‚ƒ .ˌ‚ƒ à…ŒÁ˜ ͂Ÿ…ŠÁ ÍË ÁÍ Íß͋ ÿÁߘ
ÿ鄗 ڟ Íß͋ ͘Á .˟‚›œ àìÁÍÁ ÿŸß˜Š‹‚„ އ Ëߊ ႎ›Á àÁ͛ àƒ ÁÍ ÿÁߘ
Ü郂é–é› ÍË Í‚é— Ô‹ß ÍË à›‚œÍƒ ¬ËÍÁ̘ƒ ŜŸš— ͂Ÿ…ŠÁ ÍË ÁÍ Ëߊ ÿÁߘ ÎÁ
ÞéŸéƒ ͘à˂•…‹Áߋ ƙ‚† ҊŒ ¬à™›‰ ޟÁ ÍË .ˌ ˝Áߊ ̄͟ߋÀ ҊŒ ڟ à™›‰
ÁÍ Üƒ‚–› ØÍÔ Ñ–œ ڟ ͝ áÁ̓ ß ËœŸŒœÿ› ͘ŸË—Ÿ ‚ƒ Ԃƒ…ÍÁ ܂‰ ÍË àß͘ ßË
ÞéŸÁ ‚éŸÀ àé— ËéŸéœ— ٟ–‰… ˟‚ƒ áÁà™›‰ ޟœˆ ‚ƒ à™ƒ‚–› áÁ̓ .˜—ÿ› á΂ƒ
Ԃéƒé…ÍÁ ßÁ ‚éƒ ˟…‹Áߊÿ› ‚›Œ à— ËÍÁË Ù™… ÿŠŒ ނ› àƒ àˌ àŸž… ÿÁߘ
Åé‹Á àËÍé— Ë‚‡ŸÁ Ëߊ à— ÁÍ áÁàËÁË ËŸ‚ƒœ Íß͋ à‚˜ˆŸ .àœ ‚Ÿ ˟œ— ÍÁ͖̓
܂‹ÍÁ ŜŸš— àƒ ËŸì‚… އ ÁÍ ‚Ž›Á ݝ ß àËÁË Ý Є‹ ß ËŸ‚›œ ˟삅 ß ‚Ž›Á
ҊŒ :Ëߌÿ› ˡ› ъ„ à™›‰ ܃‚–› ÍË á̄͟ߋÀ Ə‚ƒ Ϝ Ëߊ ͂—œŸÁ .˟‚›œ
áÁÍéƒ ‚éžéœÀ ÎÁ Є‹ ß Ë͟˜ÿ› ͂Ÿ…ŠÁ ÍË ÁÍ ‚Ž›Á ß àËÁË Í˜à˂•…‹Áߋ ƙ‚†
.˟‚›œÿ› à˂•…‹Á ÿ™Á Íß͋ ÞÁߜƒ Ëߊ ˟삅

ÿéÁßé˜ ËŸì‚… à߉œ à͂ƒÍË Åš›‰ àœß˜œŸÁ Îß̓ ÎÁ á͟˜ß™‡ áÁ̓ ˟‚ƒ Þߜ—Á
.ݟœ— щ Ë߇ߛ

ÿÁߘ ˟Ÿ‚…
¬DN) ÁÍ ÿéÁßé˜ ÍË Ë߇ߛ ݂œ à— Å‹Á ޟÁ ÿÁߘ ڟ ˟삅 áÁ̓ ÑßÍ ÞŸÍ…žƒ
‚ƒ (-Ëߌÿ› à˂•…‹Á AltName ˜ߋ„ ÎÁ Ϝ ÿ‚˜- X.509 ÍË àˌ ҊŒ› ݂œ ‚Ÿ
.˟Ÿ‚›œ à‹Ÿ‚–› ¬ËŸœ— ÍÁ͖̓ Ԃƒ…ÍÁ ßÁ ‚ƒ ˟œÁߊÿ› à— ÿ™ƒ‚–› ØÍÔ Ý‚œ

ËéœÁ߅ÿ› З͝ à— Å‹Á ޟÁ ݝ ÞÀ ß ËÍÁË Ü‚—ŒÁ ڟ à˂‹ ÑßÍ ÞŸÁ ¬àœ‚•‹‚…›
.˟‚›œ ˂‡ŸÁ ÁÍ ËŒ‚ƒÿ› àÁߊ™Ë ݂œ ڟ ß ÿ›ß› ˟™— ڟ ܛ‚Œ à— ÿÁߘ ڟ

ٙ… ÿ›‚œ ނ› àƒ ÿÁߘ ÍË Ë߇ߛ ÿ›ß› ˟™— à— ËŸœ— т† ˟œÁ߅ÿ› ÍßԈ
¿Å‹Á à˛À ÿÁߘ ÍË à— ËÍÁË

:ŋÁ łšÔÁ Öߜ à‹ áÁÍÁË Ü–Áˉ ÿÁߘ ڟ

݂œ ڟ
ËÍÁË Ù™… ݂œ ÞÀ àƒ Á͝‚Õ à— ÿ›ß› ˟™— ڟ
ËÍÁË Ü߃– ÁÍ ÿÁߘ áßÍ Å‚šÔÁ ƙ‚† ҊŒ à—œŸÁ àœ‚Œœ àƒ Æ™‚† ႎ›Á ڟ

.˟Ÿ‚›œ ˟삅 ÁÍ ÿÁߘ áßÍ Æ™‚† ႎ›Á ˟‚ƒ ÿÁߘ ˟삅 áÁ̓ ¬ÞŸÁ̓‚œƒ
ÿéÁßé˜ áßÍ Æé™‚† ႎ›Á ÎÁ ÁÍ à…Š‚œŒ‚œ Íß͋ áߙ‡ ˜Á߅ÿ› ÿ™›Áߏ àˆ ÿ™ß
Åé‹Ëƒ àˌ ‚Ž›Á ႝÿÁߘ ÿ›‚›… ˟œÁ߅ÿ› ‚›Œ ޟÁ Ëß‡ß ‚ƒ .ψ ȟ ¿Ë͟˜ƒ
àé…銂éœéŒ ‚CA ‚Ÿ ÿÁߘ ނ‹‚œŒÍ‚— ÞÁߜƒ à— ÿ—ˆß— àß͘ ÎÁ ͟’ ÿŠŒ ͝
ÁÍ CA ÿé›ßé›é ËéŸé™— ͘Á .(˟œ— à‡Á͛ ÜßÁ ś‹– àƒ) ˟Ÿ‚›œ ËÍ ¬ËœÁàˌ
ÿéÁßé˜ áßÍ ÁÍ CA á‚éŽé›Á ˟œÁ߅ÿ› -˟…‹ ÿÁߘ ÿ„— áÁÍÁË Þ߈- ˟œÁËÿ›
.˟Ÿ‚›œ ܍‚‰ ނœŸ›ÔÁ ÞÀ ʼn ÎÁ ß ËŸœ— ˟삅

ÞÀ ‚éŸÀ à—œŸÁ ҟŠŒ… ß ÿÁߘ áßÍ Ý‚œ ނ‰…›Á ‚ƒ ŜŸš— ŕ˜ ˟‚ƒ àšŠ Íßԃ
Ëéœé— ÍÁÍé–Íéƒ Ô‚éƒ…ÍÁ ÞÀ ‚ƒ ˝Áߊÿ› ßÁ à— ËÍÁË Ù™… áÍß͋ ނ› àƒ Ý‚œ
¬ËŒ‚ƒ ɟ‰ ݂œ áÁÍÁË Íß͋ ÿÁߘ ͘Á .˟‚›œÿ› ˟Ÿ‚… ÁÍ Íß͋ ÿÁߘ ¬àœ‚Ÿ
CA ØÍéÔ ÎÁ ‚Ž›Á ÞÀ ‚ŸÀ ˜Ÿƒƒ ‚… ˟‚›œÿ› ÿ‹Í̓ ÁÍ ÿÁߘ áßÍ á‚Ž›Á ŜŸš—
.Ëߌÿ› ݂›… ˟Ÿ‚… ܛ .àœ ‚Ÿ ŋÁ ˂›…Á ܃‚–

ŋ˃ ŋÁ ޗ›› à—œŸÁ ÜßÁ ¬ËÍÁË Ëß‡ß ÿ…š—Œ› Ϝ ܛ ޟÁ ݂‡œÁ ÍË ¬à͂ƒßË
ÍË ËéŸÍÁËéœ Ë‚é›é…Á ßÁ àƒ ‚Ÿ ˟‹‚œŒÿ›œ ÁÍ ßÁ ‚›Œ à— ËŒ‚ƒ àˌ ‚Ž›Á ÿ‹—
‚éŸ ¬Ë錂éƒÿé› ÿ鍊Œ ޟœˆ ÞÀ à˜œ—‚Ž›Á à— ËŸ…‹ ÿÁߘ áÁÍÁË ‚›Œ à—Ÿ™‚‰
ÍË .ËéŸÍÁË Ë‚é›…Á 𛂗 ßÁ àƒ à— ËŒ‚ƒ àˌ ‚Ž›Á ÿ‹— ŋ˃ ŋÁ ޗ›› à—œŸÁ
áÁÍéƒ .ËéœÍßÀ Ëßé‡ßéƒ ÁÍ Ü‹œ ޟ˜ˆ ˜Á߅ÿ› ÿÁߘ ႝà͟‡œÎ ޟÁ ÑßÍ ÞŸÁ
Üéƒ‚é– ß ËÍÁË Ëßé‡ß àÍéŸé‡œÎ ޟÁ ÍË à— ÿÁߘ ͝ ˟‚ƒ ¬Íß͋ ÿÁߘ ˟Ÿ‚…
.˟œ— ˟삅 ÁÍ Å‹Á ˂›…Á

áÁÍÁË ÿ靂é…ß— ނ›Î Ş áÁ̓ Ԗ• ‚ÿÁߘ ޟÁ :͘ŸË ψ ڟ ˟œ— ̓ ÿ™ß
áÁ̓ .˜Œ‚ƒÿ› ‚ž…œÁ ß Á˅ƒÁ ʟ͂… ڟ ܛ‚Œ X.509 ႞ŸÁߘ .˜…‹ ͂ƒ…Á
ÎÁ àÍ韇œÎ ܊ÁË á‚žŸÁߘ à› ˟‚ƒ ˌ‚ƒ ͂ƒ…Á áÁÍÁË ÿÁߘ à͟‡œÎ à—œŸÁ
Å鋛– ÍË à— ÍßԜ‚› àߚƒ .˜Œ‚ƒ ÍÁËÍߊ̓ Ëߊ àƒ ÒߍŠ› ͂ƒ…Á ʟ͂… ڟ
Åé‹éŸé™) ႝCRL ˟‚ƒ ޟÁ̓‚œƒ .˜ߌ ÜԂƒ ˜œÁ߅ÿ› ‚ÿÁߘ ¬ËŸ…Šß›À Ýߋ
.Ëߛœ ڈ ÿÁߘ à͇ŸœÎ ÍË ÁÍ ÿÁߘ ͝ áÁ̓ ˂œ› (ÿÁߘ ܂ԃÁ

ÿ›ž› ႝ˜ߋ„ ܛ‚Œ ŋÁ ޗ›› ‚ÿÁߘ .˟ÁàËÁ˜ ݂‡œÁ ÁÍ Í‚—œŸÁ Îߜ ‚›Œ
Íé—Ì àƒ ÞÁ˜ˆ à—œŸÁ Ëß‡ß ‚ƒ ˟Ëߛœ àՉš› ÝßË Å›‹– ÍË à— ÍßԜ‚› .˜Œ‚ƒ
ÿŸ‚ž…ŸËßˉ› ˝Ëÿ› ނœŸ›ÔÁ ‚›Œ àƒ ÿŸÁ͇Á łŸ™› ÿ™ß àˌœ à…ŠÁË̈́ łŸŸÎ‡
ß Ò銌› ÿÁߘ ͂ƒ…Á ‚ƒ Ԃƒ…ÍÁ ß Ù™… ݂˜œ ÍË ËÍÁË Ëß‡ß ‚Ëœß‹„ ÍË à—
ÿéÁßé˜ ÚéŸ ÎÁ ÍßéÔéˆ àé— ËËÿ› ނŒœ Keyusage ˜ߋ„ š†› .˜ߌÿ› á͟˜Ÿ„
ÿ陂é…éŸé‡éŸË á‚é‚Ž›Á áÁ̓ ÍÁËÎ›Í ÿÁߘ ڟ ÎÁ ˟‚ƒœ ‚›Œ :Ëߛœ à˂•…‹Á
.˟Ÿ‚›œ à˂•…‹Á

ÿéÁßé˜ ËÍÁË霂é…é‹Á Пߜџ„ ޟͅ˟ˇ .àˌœ ݂›… ނ…Í‚— Îߜ ¬àœ‚•‹‚…›
‚éÿéŒé› Ԋ Üͅœ— àƒ Î‚Ÿœ ¬ËŒ‚ƒÿ› ÿÁߘ à͟‡œÎ ˟Ÿ‚… Ñ͂— à— IETF PKIX
ÍË à…•Í Í‚—ƒ ÿŒ› Ԋ ÿœŸ ÿÁߘ ÿŒ› Ԋ ÎÁ Íß՜› .ËÍÁË ËŸì‚… ˜ŸÀ͕ ԋ߅
.Ëߌ ޟ›‚… ÿÁߘ ڟ ÎÁ à˂•…‹Á ‚ƒ ˟‚ƒ à— ÿ•Á˝Á ß àˌ Í˂ ÿÁߘ ڟ

ËéœéŸÀÍé• ÞŸÁ ݂‡œÁ .Ýˌ à…‹Š ޛ ˟Áߊƒ ÁÍ Ñ…‹ÁÍ Í˜Á ¿ËŸËŒœ à…‹Š Îߜ
àé— ÿ韂žŒš… à͂ƒÍË Áːƒ .ŋÁ ܗŒ› ÞÀ ÞËÁË Ý‚‡œÁ ŋÍË ß ËÍÁË á˂ŸÎ ͂—
˗ ˜ˆ ݝÁߊÿ› ܂‰ .Ë͗ ݝÁߊ щ à…•Í Í‚—ƒ ¬Åš—Œ› ‘•Í ß à‹ß… އ ÍË
ÁÍ š‚éƒ ܉Á͛ ÎÁ áÁàß›‡›ÍŸÎ ˟œÁ߅ƒ ‚žœÀ ٟÍÔ ÎÁ à— Ýœ— ÿ•͐› ‚›Œƒ ÁÍ
.ٟ–Ë ß Ã‹‚œ› ÿÁߘ à͟‡œÎ ڟ ˟삅 áÁ̓ Ԗ• ÿ™ß .˟Ë ݂‡œÁ

˗
áÍé‹ ÚéŸ ÎÁ ‚é›éŒ ¬‚éCRL ß ‚éËéœß鋄 ¬à…•Í ͂—ƒ ႝÿŒ› Ԋ ÎÁ Í՜ ØÍ
‚é›éŒ àé— ËéËÿé› Þ‚Œœ àƒÍ‡… .ˌ ˟Áߊ ÍÁËÍߊ̓ ÿ™Í…œ— ܃‚– ႞ŸŸÀ͂—
ÍË à闬X.509 à˜Œ— à›‚œÍƒ ß SSL .˟Ÿ‚›œ ØÌ‰ ÁÍ ËÍÁߛ ޟÁ ÿ‚˜ ˟œÁ߅ÿ›
.˜Ëÿ›œ ݂‡œÁ ÁÍ Å‚Ÿ™› ޟÁ ÎÁ ڟ ȟ ¬ËœÍÁË Ëß‡ß á͘Íß͛ ͝

:àˌ àËÁË Þ‚Œœ X.509 ÿÁߘ à͟‡œÎ ڟ ˟Ÿ‚… ܉Á͛‚‡œŸÁ ÍË

Þéìé›Ô› ¬ËŸœ— ͂— à͟‡œÎ áßÍ ËŸ‚ƒ à͟‡œÎ ޟÁ ÍË Ë߇ߛ ÿÁߘ ͝ ËÍߛ ÍË
àÍéŸé‡éœÎ ÞéŸÁ ÍË ËéŸéƒ ÿÁߘ à˜œ—Í˂ ß ØÍ› ÿÁߘ àœß›œ ͝ à— ËŸßŒ
.ˌ‚ƒÿ›
ÿéÁßé˜ ÞéŸé™ßÁ ÞÁߜƒ ËÍÁË Ë‚›…Á ßÁ àƒ ÅœŸš— à— ÿ†™‚† ҊŒ ˟œ— ˟Ÿ‚…
.ŋÁ à…•Í˜ ÍÁ͖ à͟‡œÎ
ËéŸé삅 Á͜À ˟Áߊÿ› ‚›Œ à— áÍß͋ ‚ƒ à͟‡œÎ ÿÁߘ ޟ͊À à— ËŸœ— ˟삅
.ŋÁ كԜ› ¬ËŸì‚›œ
ÍéŽ‚é‰ Ü‚‰ ÍË ÿÁߘ ޟÁ à— ËŸœ— ˟Ÿ‚… ˟‚ƒ à͟‡œÎ ޟÁ ÍË ÿÁߘ ͝ áÁ̓
.ˌ‚ƒÿ› ̓…›

݂é‡éœÁ ÿéÁßé˜ àÍ韇œÎ ڟ ܃‚–› ÍË ÿÁߘ ͝ áÁ̓ ÁÍ Å‚Ÿ™› ޟÁ ͟Π˗
:˝Ëÿ›


 public
  static
  boolean
  verify
  (
    X509Certificate x509certificateRoot,
    Collection collectionX509CertificateChain,
    String stringTarget
  )
  {
    int nSize = collectionX509CertificateChain.size();
    X509Certificate [] arx509certificate = new X509Certificate [nSize];
    collectionX509CertificateChain.toArray(arx509certificate);

    // Working down the chain, for every certificate in the chain,
    // verify that the subject of the certificate is the issuer of the
    // next certificate in the chain.
    Principal principalLast = null;
    for (int i = 0; i < nSize; i++)
    {
      X509Certificate x509certificate = arx509certificate[i];
      Principal principalIssuer = x509certificate.getIssuerDN();
      Principal principalSubject = x509certificate.getSubjectDN();
      if (principalLast != null)
      {
        if (principalIssuer.equals(principalLast))
        {
          try
          {
            PublicKey publickey = arx509certificate[i - 1].getPublicKey();
            arx509certificate[i].verify(publickey);
          }
          catch (GeneralSecurityException generalsecurityexception)
          {
            System.out.println("signature verification failed");
            return false;
          }
        }
        else
        {
          System.out.println("subject/issuer verification failed");
          return false;
        }
      }
      principalLast = principalSubject;
    }

    // Verify that the the first certificate in the chain was issued
    // by a third-party that the client trusts.
    try
    {
      PublicKey publickey = x509certificateRoot.getPublicKey();
      arx509certificate[0].verify(publickey);
    }
    catch (GeneralSecurityException generalsecurityexception)
    {
      System.out.println("signature verification failed");
      return false;
    }

    // Verify that the last certificate in the chain corresponds to
    // the server we desire to authenticate.
    Principal principalSubject = arx509certificate[nSize -
1].getSubjectDN();
    if (!stringTarget.equals(principalSubject.getName()))
    {
      System.out.println("target verification failed");
      return false;
    }

    // For every certificate in the chain, verify that the certificate
    // is valid at the current time.
    Date date = new Date();
    for (int i = 0; i < nSize; i++)
    {
      try
      {
        arx509certificate[i].checkValidity(date);
      }
      catch (GeneralSecurityException generalsecurityexception)
      {
        System.out.println("invalid date");
        return false;
      }
    }

    return true;
  }


àÍéŸé‡éœÎ áßÍ Å‚éŸé™é›é ޟÁ ݂‡œÁ áÁ̓ ÁÍ ÿ…œŸš— ޛ ‘ƒ‚œ› ÎÁ ڟ ͝ ÍË
àéƒ ÁÍ Íßé‡‚éœ á‚éžé™Ÿ‚• á͋—Ÿ ‚›Œ à— Ó͕ ޟÁ ‚ƒ .ÝËߛœ à•‚ŽÁ ¬‚ÿÁߘ
RSA (á‚éžéŸéÁßé˜ ÎÁ àé— áÁàéœßé›éœ) ËéŸéŒ‚éƒ àË͗ à•‚ŽÁ Ëߊ CLASSPATH
JCE Ëéé韂éééƒ ‚ééé›éééŒ ß Ëééœé—ÿé› à˂é•é…é‹Á (Rivest-shami-Adleman)
Íßé…é‹Ë ËéŸ‚éƒ (˟Ÿ‚›œ ͜ ß download ÁÍ (Java Cryptography Extension)
.˟Ÿ‚›œ Á͇Á ÍßԜŸÁ ÁÍ ÅœŸš—

java Client <> <>

ÞéŸÁ ÍË Þé› à— ÿ—Ÿœ—… ÎÁ à˂•…‹Á ‚ƒ ÁÍ ÿÁߘ à͟‡œÎ ‚… ˜—ÿ› ÿ‹ ŜŸš—
áÁÍéƒ ÁÍ ËéŸéì‚é… à™‰Í› ޟÁ à‡Ÿ…œ ŜŸš— .˟‚›œ ˟Ÿ‚… ¬ÝËÁË ÉŸŽß… à™‚–›
.˟‚›œÿ› ŜŸÍ„ Üߋœ—

ͅŒŸƒ ႞ŸŸ‚›œÁÍ
͂關ŸÁ àƒ ÝÁ˖Á à—ŸËÁ͕Á ß Å‹Á á͟˜Å–ß ˜ŸÀ͕ ÿÁߘ ˟Ÿ‚… à— Ý…•˜ šƒ–
.Ëߌÿ› ‚žœÀ àƒ Ý ÿ—›— àœ‚…ŠƒŒßŠ .˜œ— à‚ƒ…ŒÁ ŋÁ ޗ›› ¬ËœŸ‚›œÿ›

ÞéŸé‹ áÍéƒÍ àƒ Certification Path API ¬Java Specification Request #55
ÿéÁßé˜ (àÍ韇œÎ ‚Ÿ) ͟‹› ˟Ÿ‚… ܛ áÁ̓ ÁÍ ÿ›ß› API ڟ ¬Þ‚‹ ߎ ޙߛ
ËéœéŸÀÍé• ËßÍ Í‚é—ƒ ŋÍË Í˜Á .Ë΂‹ÿ› ݝÁ͕ PKIX ႝËÍÁ˜‚…‹Á ÙƒÔ X.509
.ˌ ˝Áߊ à˂‹ ͂Ÿ‹ƒ ÿÁߘ ˟Ÿ‚…

à‡Ÿ…œ
àé‡éŸé…éœ àƒ Á߂‡ ÍË X.509 ÿÁߘ ÿœ‚ƒŸ…Œ„ à͂ƒÍË ÁÍ Þ› ÑÍÁΘ à™‚–› ޟÁ
ÎÁ à˂é•é…é‹Á ‚ƒ ß ËŸŒ‚ƒ ÍÁËÍߊ̓ ÿŸ‚ÍÁ΃Á ÎÁ ˟‚ƒ ‚›Œ Þߜ—Á .˜‚‹Íÿ›
͂郅Á à™ì‹› àƒ à‡ß… ‚ƒ .˟Ÿ‚›œ ˂‡ŸÁ ÁÍ Ëߊ á‚à›‚œÍƒ X.509 áÏߙߜ—…
ß à™‚Ô› ÁÍ Icebery ˜•Í… Ԗ• ‚›Œ à— Å‹Á Ýߙ› ¬ËŒ Í—Ì š‚ƒ ÍË à— ÿÁߘ
ÎéŸéœ ‚éËéœé•Í… ͟‚‹ àƒ Ëߊ ͅžƒ ÚÍË áÁ̓ ˟œÁ߅ÿ› ‚›Œ .˟ÁàË͗ ÿ‹Í̓
à͂éƒÍË àé— Åé‹Á ޟÁ ͂—à΂… ß ËÍÁ߂œ ËÁ͕Á àƒ Þ› àŸß… .˟Ÿ‚›œ à‡Á͛
àéé™‚éÔé› Í…ŒŸƒ SSL ܆›- ˜—ÿ› à˂•…‹Á X.509 ÎÁ à— áË߇ߛ ႞ŸÏߙߜ—…
ÚÍË ÿé…é‰ÁÍéƒ ÁÍ àËéŒ àËÁË Å‚šÔÁ ß ËÍÁߛ à› ˟œÁ߅ÿ› ٟÍÔ ÞŸËƒ .˜œ—
.˟Ÿ‚›œ

http://a301.g.akamai.net/7/301/1403/v001/www.javaworld.com/
javaworld/icons/dingbat.gif

ÐÍËÀ ß
http://a301.g.akamai.net/7/301/1403/v001/www.javaworld.com/
javaworld/icons/dot_clear.gif


Üé—éŒ àéƒ ‚Í…ߟ„›‚— ÍßžÕ Þ‚›Î ÎÁ à— Ë…‹Ëœ‚‹ ˂… ݂œƒ ŋÁ ÿ•™ß› à͂ƒÍË
˂釟Á àƒ Ëߊ ÿ…ÁÌ à–š Ëß‡ß ‚ƒ ˂… .ŋÁ àË߃ ÐŸßœà›‚œÍƒ Ă…Ú‹Ë ႞™Ë›
.ËÍßÀ áßÍ ÎŸœ Á߂‡ ÿ‹Ÿßœà›‚œÍƒ ނƒÎ àƒ C++ ÍË àˌ ‘ŸÎ߅ á‚à›‚œÍƒ

ÞéŸéœéˆé›é ß Point Fire П‹‚… ÍË ‚—ÍŒ ÎÁ ÿ—Ÿ ßÁ ÿ˜Ëœ‹Ÿßœ à•͉ ̓ àߚ
.ˌ‚ƒÿ› ÞÀ ݞ› ŗ…ŸŒÍÀ

Resources

"Construct Secure Networked Applications with Certificates," Todd Sundsted (JavaWorld)

Part 1: Certificates add value to public-key cryptography (January 12, 2001)
Part 2: Learn to use the X.509 certificates (February 16, 2001)
Part 3: Use the Java CRL and X509CRL classes (March 16, 2001)
Part 4: Authenticate clients and servers, and verify certificate chains (April 13, 2001)

Download the source and resource files that accompany this article:
http://www.javaworld.com/javaworld/jw-04-2001/howto/jw-0413-howto.zip

JCE (Java Cryptography Extension): http://java.sun.com/products/jce/

JSSE (Java Secure Socket Extension): http://java.sun.com/products/jsse/

Sun's documentation: http://java.sun.com/j2se/1.3/docs/api/java/security/cert/package-summary.html

Internet X.509 Public Key Infrastructure -- Certificate and CRL Profile:
http://www.ietf.org/rfc/rfc2459.txt

The emerging specification that will make RFC 2459 obsolete (note that this URL may change as the spec is updated): http://www.ietf.org/internet-drafts/draft-ietf-pkix-new-part1-06.txt


Information on Java Specification Request #55:
http://java.sun.com/aboutJava/communityprocess/jsr/jsr_055_certp.html

Read more articles on Java Security in the JavaWorld Topical Index:
http://www.javaworld.com/javaworld/topicalindex/jw-ti-security.html

Have a security question? Check out ITworld.com's Java Security discussion:
http://www.itworld.com/jump/jw-0413-howto/forums.itworld.com/webx?14@@.ee6b80e

Sign up for the Java Security newsletter to learn more preventive measures:
http://reg.itworld.com/cgi-bin/subcontent12.cgi

For a complete listing of all How-To Java columns:
http://www.javaworld.com/javaworld/topicalindex/jw-ti-howto.html



ÿ‡œ‹Í՜
ޟÁ ËÍߛ ÍË ÁÍ Ëߊ Í՜
:˟Ÿß˜ƒ ‚› àƒ Ã™Ô›

ÑÎÍÁ ‚ƒ ÿ™ŸŠ -
ÑÎÍÁ ‚ƒ -
ÑÎÍÁÿƒ -

ÿœ šßÔ ÿ™ŸŠ -
˂œ› -
à‚…ß— -

ÿŠ… ÿ™ŸŠ -
Ãߙԛ -
ŋŸœ ÿŠ… ÿ•‚— àÎÁ˜Á àƒ -


:݂œ

:ڟœßͅ—™Á ŋ„

: ŗ͌ ݂œ








Copyright 2001/2002, PC WORLD Iran/JavaWorld.com./ All rights reserved.