|
JavaTM 2 Platform Std. Ed. v1. 4.0 |
||||||||||
ÀüÀÇ Å¬·¡½º ´ÙÀ½ÀÇ Å¬·¡½º | ÇÁ·¹ÀÓ ÀÖ¾î ÇÁ·¹ÀÓ ¾øÀ½ | ||||||||||
°³¿ä: »óÀÚ | Çʵå | constructor | ¸Þ¼Òµå | »ó¼¼: Çʵå | constructor | ¸Þ¼Òµå |
java.lang.Object | +--javax.security.cert.Certificate | +--javax.security.cert.X509Certificate
X. 509 v1 Áõ¸í¼ÀÇ abstract Ŭ·¡½ºÀÔ´Ï´Ù. X. 509 Áõ¸í¼ÀÇ ¹öÁ¯ 1 ÀÇ ¼Ó¼º¿¡ ¾×¼¼½º Çϴ ǥÁØÀûÀÎ ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù. X. 509 ÀÇ v2 ³ª v3 ¿¡ °íÀ¯ÀÇ ¼Ó¼ºÀº ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ¼´Â ÀÌ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. Àå·¡ÀÇ API Àü°³¿¡¼´Â ¿ÏÀüÇÑ X. 509 v3 ¼Ó¼º¿¡ÀÇ Ç® ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù.
±âº»ÀûÀÎ X. 509 Çü½ÄÀº ISO/IEC ¹× ANSI X9 ¿¡ ÀÇÇØ Ã¥Á¤µÇ¾î ÀÌÇÏ¿Í °°ÀÌ ASN. 1 À¸·Î ±â¼úµË´Ï´Ù.
Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signature BIT STRING }
ÀÌ·¯ÇÑ Áõ¸í¼´Â ÀÎÅͳÝÀÇ ½ÃÅ¥·¯Æ¼ ½Ã½ºÅÛÀ¸·Î ÀÎÁõµîÀÇ ±â´ÉÀ» ¼Æ÷Æ®Çϱâ À§Çؼ ³Ð°Ô »ç¿ëµÇ°í ÀÖ½À´Ï´Ù. ´ëÇ¥ÀûÀÎ ¾îÇø®ÄÉÀ̼ǿ¡´Â Privacy Enhanced Mail (PEM), Transport Layer Security (SSL), ½Å·ÚÇÒ ¼ö ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î ¹èÆ÷¸¦ À§ÇÑ ÄÚµå ¼¸í, ¹× Secure Electronic Transactions (SET)µîÀÌ ÀÖ½À´Ï´Ù.
ÀÌ·¯ÇÑ Áõ¸í¼´Â ¡¸Áõ¸í¼ ¹ßÇà±¹ (CA)¡¹¿¡ ÀÇÇØ °ü¸® ¹× ÇÁ·ÎÅØ¼ÇµÇ°í ÀÖ½À´Ï´Ù. CA ´Â µ¥ÀÌÅ͸¦ X. 509 Ç¥ÁØ Çü½ÄÀ¸·Î ÇÏ°í ³ª¼, ±× µ¥ÀÌÅÍ¿¡ µðÁöÅÐ ¼¸í ÇÏ´Â °ÍÀ¸·Î½á Áõ¸í¼¸¦ ÀÛ¼ºÇÏ´Â ¼ºñ½ºÀÔ´Ï´Ù. CA ´Â ½Å·ÚÇÒ ¼ö ÀÖ´Â Á¦»ïÀڷμ ±â´ÉÇØ, Á÷Á¢Àº ¾È¸éÀÌ ¾ø´Â ÁÖü³¢¸®¸¦ ¼Ò°³ÇÕ´Ï´Ù. CA Áõ¸í¼´Â ±× CA ÀÚ½ÅÀ¸·Î, ¶Ç´Â ¡¸·çÆ®¡¹CA µîÀÇ ´Ù¸¥ CA ¿¡ ÀÇÇØ ¼¸íµÇ°í ÀÖ½À´Ï´Ù.
tbsCertificate
ÀÇ ASN. 1 Á¤ÀÇ´Â ´ÙÀ½°ú °°½À´Ï´Ù.
TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, }
X. 509 Áõ¸í¼¸¦ ÀνºÅϽºÈÇÏ´Â ÄÚµù¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
InputStream inStream = new FileInputStream("fileName-of-cert"); X509Certificate cert = X509Certificate.getInstance(inStream); inStream.close();¶Ç´Â
byte[] certData = <certificate read from a file, say> X509Certificate cert = X509Certificate.getInstance(certData);
¾î´À ÂÊÀÇ °æ¿ìµµ, X. 509 Áõ¸í¼¸¦ ÀνºÅϽºÈÇÏ´Â ÄÚµå´Â ½ÇÁ¦ÀÇ ±¸ÇöÀ» ƯÁ¤Çϰųª µðÆúÆ® ±¸ÇöÀ¸·Î ÃʱâÈÇϰųª Çϴµ¥ Java ½ÃÅ¥·¯Æ¼ ÇÁ·ÎÆÛƼ ÆÄÀÏÀ» »ç¿ëÇÕ´Ï´Ù.
Java ½ÃÅ¥·¯Æ¼ ÇÁ·ÎÆÛƼ ÆÄÀÏÀº <JAVA_HOME>/lib/security/java.security ¶ó°í ÇÏ´Â ÆÄÀÏÀÔ´Ï´Ù. <JAVA_HOME> ´Â JDK °¡ ÀνºÅç µÇ°í ÀÖ´Â µð·ºÅ丮¸¦ °¡¸®Åµ´Ï´Ù. ½ÃÅ¥·¯Æ¼ ÇÁ·ÎÆÛƼ ÆÄÀÏ¿¡¼´Â X. 509 v1 ÀÇ µðÆúÆ® ±¸ÇöÀÌ ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ.
cert.provider.x509v1=com.sun.security.cert.internal.x509.X509V1CertImpl
´Ù¸¥ ±¸ÇöÀ» ÀνºÅϽºÈÇÒ ¶§´Â ÀÌ cert.provider.x509v1
ÇÁ·ÎÆÛƼÀÇ °ªÀ» º¯°æÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ ÇÁ·ÎÆÛƼ ÆÄÀÏÀÌ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â µðÆúÆ® ±¸ÇöÀÌ »ç¿ëµË´Ï´Ù. ÇöÀç·Î¼´Â ½ÃÅ¥·¯Æ¼ ÇÁ·ÎÆÛƼ¿¡ ¾×¼¼½º Çϴµ¥ ½ÃÅ¥·¯Æ¼ Á¦ÇÑÀÌ ÀÖÀ» ¿ì·Á°¡ ÀÖ±â (À§ÇØ)¶§¹®¿¡, ÀÌ °ªÀº Ŭ·¡½º°¡ Ãʱâ鵃 ¶§ Á¶»ç, ij½¬µÇ¾î ½ÃÅ¥·¯Æ¼ ÇÁ·ÎÆÛƼ¿¡ ¾×¼¼½º ÇÒ ¼ö ¾ø´Â °æ¿ì´Â µðÆúÆ® ±¸ÇöÀÌ ´ë½Å¿¡ »ç¿ëµË´Ï´Ù.
ÁÖ: ÆÐŰÁö javax.security.cert
ÀÇ Å¬·¡½º´Â ±¸¹öÁ¯ÀÇ Java Secure Sockets Extension (JSSE)¿ÍÀÇ È£È¯¼ºÀ» À§Çؼ(¶§¹®¿¡) Á¸ÀçÇÕ´Ï´Ù. »õ·Ó°Ô ÀÛ¼ºÇÏ´Â ¾îÇø®ÄÉÀ̼ǿ¡¼´Â java.security.cert
¿¡ Àִ ǥÁØ J2SE Áõ¸í¼ Ŭ·¡½º¸¦ ÀÌ Å¬·¡½º ´ë½Å¿¡ »ç¿ëÇØ ÁÖ¼¼¿ä.
Certificate
,
X509Extension
»ý¼ºÀÚÀÇ °³¿ä | |
X509Certificate ()
|
¸Þ¼ÒµåÀÇ °³¿ä | |
abstract void |
checkValidity ()
Áõ¸í¼°¡ ÇöÀç À¯È¿ÇÑÁö ¾î¶²Áö¸¦ ÆÇÁ¤ÇÕ´Ï´Ù. |
abstract void |
checkValidity (Date date)
ÁöÁ¤µÈ ÀÏÀÚ°¡, Áõ¸í¼ÀÇ À¯È¿±â°£³»ÀÏÁö ¾î¶³Áö¸¦ ÆÇÁ¤ÇÕ´Ï´Ù. |
static X509Certificate |
getInstance (byte[] certData)
X509Certificate ¿ÀºêÁ§Æ®¸¦ ÀνºÅϽºÈÇØ, ÁöÁ¤ÇÑ ¹ÙÀÌÆ® ¹è¿·Î ÃʱâÈÇÕ´Ï´Ù. |
static X509Certificate |
getInstance (InputStream inStream)
X509Certificate ¿ÀºêÁ§Æ®¸¦ ÀνºÅϽºÈÇØ, ÀÔ·Â ½ºÆ®¸² inStream ·ÎºÎÅÍ ÀоÁø µ¥ÀÌÅÍ·Î ÃʱâÈÇÕ´Ï´Ù. |
abstract Principal |
getIssuerDN ()
Áõ¸í¼·ÎºÎÅÍ issuer (¹ßÇàÀÚ ½Äº°¸í) Ä¡¸¦ ÃëµæÇÕ´Ï´Ù. |
abstract Date |
getNotAfter ()
Áõ¸í¼ÀÇ À¯È¿±â°£À¸·ÎºÎÅÍ notAfter ÀÇ ÀÏÀÚ¸¦ ÃëµæÇÕ´Ï´Ù. |
abstract Date |
getNotBefore ()
Áõ¸í¼ÀÇ À¯È¿±â°£À¸·ÎºÎÅÍ notBefore ÀÇ ÀÏÀÚ¸¦ ÃëµæÇÕ´Ï´Ù. |
abstract BigInteger |
getSerialNumber ()
Áõ¸í¼·ÎºÎÅÍ serialNumber Ä¡¸¦ ÃëµæÇÕ´Ï´Ù. |
abstract String |
getSigAlgName ()
Áõ¸í¼ÀÇ ¼¸í ¾Ë°í¸®Áò¸íÀ» ÃëµæÇÕ´Ï´Ù. |
abstract String |
getSigAlgOID ()
Áõ¸í¼·ÎºÎÅÍ ¼¸í ¾Ë°í¸®ÁòÀÇ OID ij¸¯ÅÍ ¶óÀÎÀ» ÃëµæÇÕ´Ï´Ù. |
abstract byte[] |
getSigAlgParams ()
ÀÌ Áõ¸í¼ÀÇ ¼¸í ¾Ë°í¸®ÁòÀ¸·ÎºÎÅÍ, DER ·Î encode µÈ ¼¸í ¾Ë°í¸®Áò ÆÄ¶ó¹ÌÅ͸¦ ÃëµæÇÕ´Ï´Ù. |
abstract Principal |
getSubjectDN ()
Áõ¸í¼·ÎºÎÅÍ subject (ÇÇÀÎÁõÀÚ ½Äº°¸í) Ä¡¸¦ ÃëµæÇÕ´Ï´Ù. |
abstract int |
getVersion ()
Áõ¸í¼·ÎºÎÅÍ version (¹öÁ¯ ¹øÈ£) Ä¡¸¦ ÃëµæÇÕ´Ï´Ù. |
Ŭ·¡½º javax.security.cert. Certificate ¿¡¼ »ó¼Ó¹ÞÀº ¸Þ¼Òµå |
equals , getEncoded , getPublicKey , hashCode , toString , verify , verify |
Ŭ·¡½º java.lang. Object ¿¡¼ »ó¼Ó¹ÞÀº ¸Þ¼Òµå |
clone , finalize , getClass , notify , notifyAll , wait , wait , wait |
»ý¼ºÀÚÀÇ »ó¼¼ |
public X509Certificate()
¸Þ¼ÒµåÀÇ »ó¼¼ |
public static final X509Certificate getInstance(InputStream inStream) throws CertificateException
inStream
·ÎºÎÅÍ ÀоÁø µ¥ÀÌÅÍ·Î ÃʱâÈÇÕ´Ï´Ù. ÀÌ ±¸Çö (X509Certificate ´Â abstract Ŭ·¡½º)Àº ½ÃÅ¥·¯Æ¼ ÇÁ·ÎÆÛƼ ÆÄÀÏ·Î cert.provider.x509v1
ÇÁ·ÎÆÛƼÀÇ °ªÀ¸·Î ÇØ¼ ÁöÁ¤ÇÑ Å¬·¡½º¿¡ ÀÇÇØ Á¦°øµË´Ï´Ù.
ÁÖ: 1 °³ÀÇ DER encode Áõ¸í¼¸¸ÀÌ ÀÔ·Â ½ºÆ®¸²ÀÎ °ÍÀÌ ÀüÁ¦°¡ µË´Ï´Ù. ¶Ç, ¸ðµç X509Certificate ¼ºê Ŭ·¡½º¿¡¼´Â ´ÙÀ½°ú °°Àº ÆûÀÇ constructor¸¦ Á¦°øÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
public <subClass>(InputStream inStream) ...
inStream
- Áõ¸í¼¸¦ ÃʱâÈÇϱâ À§Çؼ ÀоÁö´Â µ¥ÀÌÅ͸¦ º¸°ü À¯ÁöÇÏ´Â ÀÔ·Â ½ºÆ®¸²
CertificateException
- Ŭ·¡½ºÀÇ ÃʱâȽÃ, ¶Ç´Â Áõ¸í¼ÀÇ ÇØ¼®½Ã¿¡ ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ìpublic static final X509Certificate getInstance(byte[] certData) throws CertificateException
cert.provider.x509v1
ÇÁ·ÎÆÛƼÀÇ °ªÀ¸·Î ÇØ¼ ÁöÁ¤ÇÑ Å¬·¡½º¿¡ ÀÇÇØ Á¦°øµË´Ï´Ù.
ÁÖ: ¸ðµç X509Certificate ¼ºê Ŭ·¡½º¿¡¼´Â ´ÙÀ½°ú °°Àº ÆûÀÇ constructor¸¦ Á¦°øÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
public <subClass>(InputStream inStream) ...
certData
- DER encode µÈ Áõ¸í¼¸¦ Æ÷ÇÔÇÑ ¹ÙÀÌÆ® ¹è¿
certData
·ÎºÎÅÍÀÇ µ¥ÀÌÅÍ·Î ÃʱâÈµÈ X509Certificate ¿ÀºêÁ§Æ®
CertificateException
- Ŭ·¡½ºÀÇ ÃʱâȽÃ, ¶Ç´Â Áõ¸í¼ÀÇ ÇØ¼®½Ã¿¡ ¿¡·¯°¡ ¹ß»ýÇßÀ» °æ¿ìpublic abstract void checkValidity() throws CertificateExpiredException , CertificateNotYetValidException
À¯È¿±â°£Àº Áõ¸í¼°¡ À¯È¿ÇÑ ÃÖÃÊÀÇ ÀÏ½Ã¿Í ¸¶Áö¸· ÀϽÃÀÇ 2 °³ÀÇ ÀϽÃÄ¡·ÎºÎÅÍ µË´Ï´Ù. À̰ÍÀº ASN. 1 À¸·Î ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ.
validity ValidityValidity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
CertificateExpiredException
- Áõ¸í¼ÀÇ À¯È¿±â°£ÀÌ ²÷¾îÁ® ÀÖ´Â °æ¿ì
CertificateNotYetValidException
- Áõ¸í¼°¡ ¾ÆÁ÷ À¯È¿ÇÏ°Ô µÇÁö ¾ÊÀº °æ¿ìpublic abstract void checkValidity(Date date) throws CertificateExpiredException , CertificateNotYetValidException
date
- ÁöÁ¤µÈ ÀϽÿ¡ ÀÌ Áõ¸í¼°¡ À¯È¿ÇÑÁö ¾î¶²Áö¸¦ Á¶»çÇÏ´Â Date
CertificateExpiredException
- ÁöÁ¤µÈ date
¿¡ Áõ¸í¼°¡ ±âÇÑ ¸¶°¨ÀÌ µÇ¾î ÀÖ´Â °æ¿ì
CertificateNotYetValidException
- ÁöÁ¤µÈ date
¿¡ Áõ¸í¼°¡ ¾ÆÁ÷ À¯È¿ÇÏ°Ô µÇÁö ¾ÊÀº °æ¿ìcheckValidity()
public abstract int getVersion()
version
(¹öÁ¯ ¹øÈ£) Ä¡¸¦ ÃëµæÇÕ´Ï´Ù. ASN. 1 Á¤ÀÇ´Â ´ÙÀ½°ú °°½À´Ï´Ù.
version [0] EXPLICIT Version DEFAULT v1Version ::= INTEGER { v1(0), v2(1), v3(2) }
public abstract BigInteger getSerialNumber()
serialNumber
Ä¡¸¦ ÃëµæÇÕ´Ï´Ù. ½Ã¸®¾ó ¹øÈ£´Â Áõ¸í¼ ¹ßÇà±¹¿¡ ÀÇÇØ °¢ Áõ¸í¼¿¡ ÇÒ´çÇÒ ¼ö ÀÖ´Â Á¤¼öÄ¡ÀÔ´Ï´Ù. ½Ã¸®¾ó ¹øÈ£´Â ÁöÁ¤µÈ CA ¿¡ ÀÇÇØ ¹ßÇàµÈ °¢ Áõ¸í¼¿¡ ´ëÇØ¼ ÀÏÀǰ¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. Áï, ¹ßÇàÀÚ¸í°ú ½Ã¸®¾ó ¹øÈ£¿¡ ÀÇÇØ ÀÏÀÇÀÇ Áõ¸í¼°¡ ½Äº°µË´Ï´Ù. ASN. 1 Á¤ÀÇ´Â ´ÙÀ½°ú °°½À´Ï´Ù.
serialNumber CertificateSerialNumberCertificateSerialNumber ::= INTEGER
public abstract Principal getIssuerDN()
issuer
(¹ßÇàÀÚ ½Äº°¸í) Ä¡¸¦ ÃëµæÇÕ´Ï´Ù. ¹ßÇàÀÚ¸íÀº Áõ¸í¼ÀÇ ¼¸í°ú ¹ßÇàÀ» ½Ç½ÃÇÑ ¿£Æ¼Æ¼¸¦ ½Äº°ÇÕ´Ï´Ù.
¹ßÇàÀÚ¸í Çʵ忡´Â X. 500 ½Äº°¸í (DN)ÀÌ ÀúÀåµË´Ï´Ù. ASN. 1 Á¤ÀÇ´Â ´ÙÀ½°ú °°½À´Ï´Ù.
issuer NameName ::= CHOICE { RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET OF AttributeValueAssertion AttributeValueAssertion ::= SEQUENCE { AttributeType, AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY
Name
¿¡´Â ±¹¸íµîÀÇ ¼Ó¼º°ú °Å±â¿¡ ´ëÀÀÇÏ´Â US µîÀÇ °ªÀ¸·ÎºÎÅÍ µÇ´Â °èÃþÀûÀÎ À̸§À» ±â¼úÇÕ´Ï´Ù. AttributeValue
ÄÄÆÛ³ÍÆ®ÀÇ Å¸ÀÔÀº AttributeType
¿¡ ÀÇÇØ Á¤ÇØÁý´Ï´Ù. ÀϹÝÀûÀ¸·Î´Â directoryString
ÀÔ´Ï´Ù. directoryString
Àº Åë»ó PrintableString
,TeletexString
,UniversalString
ÀÇ ¾î¶² °ÍÀΰ¡ÀÔ´Ï´Ù.
public abstract Principal getSubjectDN()
subject
(ÇÇÀÎÁõÀÚ ½Äº°¸í) Ä¡¸¦ ÃëµæÇÕ´Ï´Ù. ASN. 1 Á¤ÀÇ´Â ´ÙÀ½°ú °°½À´Ï´Ù.
subject Name
Name
¹× ±× ¿ÜÀÇ °ü·ÃÇÏ´Â Á¤ÀÇ¿¡ ´ëÇØ¼´Â getIssuerDN ¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
getIssuerDN()
public abstract Date getNotBefore()
notBefore
ÀÇ ÀÏÀÚ¸¦ ÃëµæÇÕ´Ï´Ù. ÇØ´çÇÏ´Â ASN. 1 Á¤ÀÇ´Â ´ÙÀ½°ú °°½À´Ï´Ù.
validity ValidityValidity ::= SEQUENCE { notBefore CertificateValidityDate, notAfter CertificateValidityDate }
CertificateValidityDate ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime }
checkValidity()
public abstract Date getNotAfter()
notAfter
ÀÇ ÀÏÀÚ¸¦ ÃëµæÇÕ´Ï´Ù. ÇØ´çÇÏ´Â ASN. 1 Á¤ÀÇ¿¡ ´ëÇØ¼´Â getNotBefore ¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
checkValidity()
public abstract String getSigAlgName()
signatureAlgorithm AlgorithmIdentifierAlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL } -- contains a value of the type -- registered for use with the -- algorithm object identifier value
¾Ë°í¸®Áò¸íÀº algorithm
OID ij¸¯ÅÍ ¶óÀÎÀ¸·ÎºÎÅÍ ÆÇÁ¤µË´Ï´Ù.
public abstract String getSigAlgOID()
°ü·ÃÇÏ´Â ASN. 1 Á¤ÀÇ¿¡ ´ëÇØ¼´Â getSigAlgName ¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
public abstract byte[] getSigAlgParams()
°ü·ÃÇÏ´Â ASN. 1 Á¤ÀÇ¿¡ ´ëÇØ¼´Â getSigAlgName ¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
|
JavaTM 2 Platform Std. Ed. v1. 4.0 |
||||||||||
ÀüÀÇ Å¬·¡½º ´ÙÀ½ÀÇ Å¬·¡½º | ÇÁ·¹ÀÓ ÀÖ¾î ÇÁ·¹ÀÓ ¾øÀ½ | ||||||||||
°³¿ä: »óÀÚ | Çʵå | constructor | ¸Þ¼Òµå | »ó¼¼: Çʵå | constructor | ¸Þ¼Òµå |
Java, Java 2 D, ¹× JDBC ´Â ¹Ì±¹ ¹× ±× ¿ÜÀÇ ³ª¶ó¿¡ ÀÖ¾î¼ÀÇ ¹Ì±¹ Sun Microsystems, Inc. ÀÇ »óÇ¥ ȤÀº µî·Ï»óÇ¥ÀÔ´Ï´Ù.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.