|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | constructor | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
java.lang.Objectjavax.net.ssl.SSLEngine
public abstract class SSLEngine
Secure Sockets Layer (SSL)³ª IETF RFC 2246 Transport Layer Security (TLS) ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇØ, Àü¼Û¿¡ ÀÇÁ¸µÈ ÀÏ ¾øÀÌ ½ÃÅ¥¾î Åë½ÅÀ» À¯È¿ÇÏ°Ô Çϴ Ŭ·¡½ºÀÔ´Ï´Ù.
½ÃÅ¥¾î Åë½Å ¸ðµå¿¡¼´Â ´ÙÀ½ÀÇ ½ÃÅ¥·¯Æ¼ º¸È£°¡ ½Ç½ÃµË´Ï´Ù.
»ç¿ëµÇ´Â encode ¹æ½ÄÀº ¡¸ÇÚµå ½¦ÀÌÅ©¡¹¶ó°í ºÒ¸®´Â ³×°í½Ã¿¡ÀÌ¼Ç ÇÁ·Î¼¼½º¿¡ ÀÇÇØ È®¸³µË´Ï´Ù. ÇÚµå ½¦ÀÌÅ©¿¡¼´Â ¼¼¼ÇÀÇ ÀÛ¼º ¶Ç´Â Âü°¡¸¦ ÇÕ´Ï´Ù. ÀÛ¼º ¶Ç´Â Âü°¡ÇÑ ¼¼¼ÇÀº ¹«È¿°¡ µÉ ¶§±îÁö ´Ù¾çÇÑ Á¢¼ÓÀ» º¸È£ÇÕ´Ï´Ù. ÇÚµå ½¦ÀÌÅ©°¡ ¿Ï·áÇϸé, getSession()
¸Þ¼µå¸¦ »ç¿ëÇØ ¼¼¼Ç ¼Ó¼º¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù.
SSLSocket
Ŭ·¡½ºµµ °ÅÀÇ °°Àº ½ÃÅ¥·¯Æ¼ ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù¸¸, ¸ðµç Âø½Å ¹× ¹ß½Å µ¥ÀÌÅÍ´Â
µµÀûÀ¸·Î ºí·Ï ¸ðµ¨À» »ç¿ëÇÏ´Â ºÎÇÏ Socket
¿¡ ÀÇÇØ ÀÚµ¿ÀûÀ¸·Î ¼Û½ÅµË´Ï´Ù. ÀÌ Ã³¸®´Â ¸¹Àº ¾îÇø®ÄÉÀ̼ǿ¡ ´ëÇØ¼ ÀûÀýÇÕ´Ï´Ù¸¸, ÀÌ ¸ðµ¨Àº ´ë±Ô¸ð ¼¹ö¿¡ ÇÊ¿äÇÑ È®À强À» °¡Á®¿ÀÁö ¾Ê½À´Ï´Ù.
SSLEngine
ÁÖµÈ Æ¯ÀåÀ¸·Î¼ Àü¼Û µµ±¸¿¡
ÀÇÁ¸µÈ ÀÏ ¾øÀÌ Âø½Å/¼Û½Å ¹ÙÀÌÆ® ½ºÆ®¸²À» Á¶ÀÛÇÒ ¼ö ÀÖ´Â Á¡À» µé ¼ö ÀÖ½À´Ï´Ù. SSLEngine
»ç¿ëÀÚ´Â ÇǾ ÀÖ¾î¼ÀÇ ÀÔÃâ·Â Àü¼ÛÀÇ ½Å·Ú¼ºÀ» È®º¸ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. SSL/TLS Ãß»óÈ °´Ã¼¸¦ ÀÔÃâ·Â Àü¼Û µµ±¸
·ÎºÎÅÍ ¶¼¾î³»´Â °ÍÀ¸·ÎSSLEngine
¸¦ ´Ù¾çÇÑ ÀÔÃâ·ÂÀ¸·Î ±¤¹üÀ§ÇÏ°Ô ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù
. ¿¹¸¦ µé¾î, ºñºí·Ï ÀÔÃâ·Â (Æú¸µ)
,
¼±ÅÃÇüºñºí·Ï ÀÔÃâ·Â
¿Ü, Socket
¹× Á¾·¡ÀÇ Input/OutputStream, ·ÎÄà ByteBuffers
,
¹ÙÀÌÆ® ¹è¿, future asynchronous ÀÔÃâ·Â ¸ðµ¨µîÀÇ ÀÔÃâ·ÂÀ¸·Î ÀÌ¿ë °¡´ÉÇÕ´Ï´Ù.
»óÃþºÎ¿¡¼´Â SSLEngine
´Â ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³»Áý´Ï´Ù.
app data | ^ | | | v | | +----+-----|-----+----+ | | | | SSL|Engine | wrap() | | | unwrap() | OUTBOUND | INBOUND | | | | +----+-----|-----+----+ | | ^ | | | v | net data¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ (º°¸í ¡¸plaintext¡¹¶Ç´Â ¡¸clear text¡¹)´Â ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇØ »ý¼º ¶Ç´Â ¼ÒºñµÇ´Â µ¥ÀÌÅÍÀÔ´Ï´Ù. ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ¿Í ´ë°¡ µÇ´Â °ÍÀ¸·Î¼ ³×Æ®¿öÅ© µ¥ÀÌÅͰ¡ ÀÖ½À´Ï´Ù. ³×Æ®¿öÅ© µ¥ÀÌÅÍ´Â ÇÚµå ½¦ÀÌÅ©³ª ¾ÏÈ£È µ¥ÀÌÅÍ·Î ±¸¼ºµÇ¾î ÀÔÃâ·Â µµ±¸¸¦ °³ÀÔ½ÃÄÑ Àü¼Û µÇ´Â µ¥ÀÌÅÍÀÔ´Ï´Ù. Âø½Å µ¥ÀÌÅÍ´Â ÇǾî·ÎºÎÅÍ ¼ö½ÅµÇ´Â µ¥ÀÌÅÍ, ¼Û½Å µ¥ÀÌÅÍ´Â ÇǾ ¼Û½ÅµÇ´Â µ¥ÀÌÅÍÀÔ´Ï´Ù.
SSLEngine
ÄÁÅØ½ºÆ®¿¡ ¼´Â ½ÃÅ¥¾î Á¢¼ÓÀÇ È®¸³ ¹× Á¦¾î ¸ñÀûÀ¸·Î ±³È¯µÇ´Â µ¥ÀÌÅ͸¦ ¡¸ÇÚµå ½¦ÀÌÅ© µ¥ÀÌÅÍ¡¹¶ó°í ÃÑĪÇÕ´Ï´Ù. ÇÚµå ½¦ÀÌÅ© µ¥ÀÌÅÍ¿¡´Â SSL/TLS ¸Þ¼¼Áö alert, change_cipher_spec, handshake µîÀÌ ÀÖ½À´Ï´Ù.
SSLEngine
´Â
´ÙÀ½ÀÇ 5°³ÀÇ ´Ü°è¸¦ ´õµë½À´Ï´Ù.
SSLEngine
ÀÛ¼º°ú ÃʱâÈ´Â ¿Ï·áÇß½À´Ï´Ù¸¸, ¾ÆÁ÷ »ç¿ëµÇ°í´Â ÀÖÁö ¾Ê½À´Ï´Ù. ÀÌ ´Ü°è¿¡¼´Â ¾îÇø®ÄÉÀ̼ǿ¡ÀÇÇØ SSLEngine
°íÀ¯ÀÇ ¸ðµç ¼³Á¤ (¾ÏÈ£±ºÀÇ À¯È¿È, SSLEngine
°¡ Ŭ¶óÀÌ¾ðÆ® ¸ðµå¿Í ¼¹ö ¸ðµåÀÇ ¾îµð¿¡¼ ÇÚµå ½¦ÀÌÅ©¸¦ ½Ç½ÃÇÒ±î µî)À» ½Ç½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù
. ÇÚµå ½¦ÀÌÅ©°¡ ½ÃÀ۵Ǹé, ´ÙÀ½ÀÇ ÇÚµå ½¦ÀÌÅ©·ÎºÎÅÍ Å¬¶óÀ̾ðÆ®/¼¹ö ¸ðµåÀÇ ¼³Á¤À» Á¦¿ÜÇÑ (¾Æ·¡¿Í °°ÀÌ ÂüÁ¶) »õ·Î¿î ¼³Á¤ÀÌ »ç¿ëµË´Ï´Ù.
SSLEngine
·Î
ºÎÅÍ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅͰ¡ ¼Û½ÅµË´Ï´Ù. ¼Û½Å ¾îÇø®ÄÉÀÌ¼Ç ¸Þ¼¼Áö´Â ¾ÏÈ£ÈµÇ¾î µ¥ÀÌÅÍÀÇ Á¤ÇÕ¼ºÀÌ È®º¸µË´Ï´Ù. Âø½Å ¸Þ¼¼Áö¿¡¼´Â ÀÌ ¹Ý´ëÀÇ ¼ö¼ÓÀ» ÇÕ´Ï´Ù.
SSLEngine
¼³Á¤Àº »ç¿ëµÇÁö ¾Ê½À´Ï´Ù.
SSLEngine
¸¦ Á¾·áÇØ, ÇǾî¿Í ¼Û¼ö½Å ÇÏ´Â ¸Þ¼¼Áö°¡ ³²¾Æ ÀÖ´Â °æ¿ì´Â ¼Û¼ö½ÅÀ» ¿Ï·áÇÏ°í ³ª¼, ºÎÇÏÀÇ Àü¼Û µµ±¸¸¦ Á¾·áÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. Á¾·áµÈ ¿£ÁøÀº ÀçÀÌ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. »õ·Î¿î SSLEngine
¸¦ ÀÛ¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. SSLEngine
¸¦ ÀÛ¼ºÇÏ·Á¸é,
ÃʱâÈµÈ SSLContext
·Î
ºÎÅÍ SSLContext.createSSLEngine()
¸¦
È£ÃâÇÕ´Ï´Ù. ¸ðµç ¼³Á¤ ÆÄ¶ó¹ÌÅÍÀÇ ¼³Á¤À» ¿Ï·áÇÏ°í ³ª¼, wrap()
, unwrap()
, ¶Ç´Â beginHandshake()
ÃÖÃÊÀÇ È£ÃâÀ» ½Ç½ÃÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼µå´Â ¸ðµÎ, Ãʱâ ÇÚµå ½¦ÀÌÅ©¸¦ Æ®¸®°Å ÇÕ´Ï´Ù.
µ¥ÀÌÅÍ´Â ¼Û½Å µ¥ÀÌÅÍ¿¡ ´ëÇØ¼ wrap()
¸¦
È£ÃâÇϰųª Âø½Å µ¥ÀÌÅÍ¿¡ ´ëÇØ¼ unwrap()
¸¦
È£ÃâÇÏ´Â °Í¿¡ÀÇÇØ ¿£ÁøÀ¸·ÎºÎÅÍ Àü¼Û µË´Ï´Ù. SSLEngine
»óÅ¿¡ µû¶ó¼´Â wrap()
È£Ãâ¿¡ ÀÇÇØ ¼Ò½º ¹öÆÛÀÇ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅͰ¡ »ç¿ëµÇ¾î Ç༱Áö ¹öÆÛ¿¡ ³×Æ®¿öÅ© µ¥ÀÌÅͰ¡ ½á³»Áö´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ¼Û½Å µ¥ÀÌÅÍ¿¡´Â ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅͳª ÇÚµå ½¦ÀÌÅ© µ¥ÀÌÅͰ¡ Æ÷ÇԵ˴ϴÙ. unwrap()
¸¦ È£ÃâÇϸé, ¼Ò½º ¹öÆÛ°¡ üũµÇ¾î ±× ÁßÀÇ µ¥ÀÌÅͰ¡ ÇÚµå ½¦ÀÌÅ© Á¤º¸À̸é ÇÚµå ½¦ÀÌÅ©°¡ ½Ç½ÃµË´Ï´Ù. ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍÀ̸é, Ç༱Áö ¹öÆÛ¿¡ Æ÷ÇԵ˴ϴÙ. ºÎÇÏÀÇ SSL/TLS ¾Ë°í¸®Áò »óÅ·κÎÅÍ, µ¥ÀÌÅÍÀÇ »ç¿ëÀ̳ª »ý¼ºÀÇ Å¸À̹ÖÀ» ÆÇ´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù.
wrap()
³ª unwrap()
¸¦ È£ÃâÇϸé, ¿ÀÆÛ·¹ÀÌ¼Ç »óÅÂ¿Í Ã³¸®¸¦ ¼ÓÇàÇÏ´Â °æ¿ìÀÇ ¿£Áø°úÀÇ ±³È¯ÀÇ ³»¿ë (¿É¼Ç)À» ³ªÅ¸³»´Â SSLEngineResult
ÀÌ ¸®Åϵ˴ϴÙ
.
SSLEngine
´Â
¿ÏÀüÇÑ SSL/TLS ÆÐŶ ¹Û¿¡ »ç¿ë ¶Ç´Â »ý¼ºÇÏÁö ¾Ê½À´Ï´Ù. ´ÙÀ½ÀÇ wrap()
¶Ç´Â unwrap()
È£Ãâ±îÁöÀÇ »çÀÌ¿¡
¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ ³»ºÎ¿¡ Æ÷ÇÔÇÒ °ÍÀº ¾ø½À´Ï´Ù. µû¶ó¼, »ý¼ºµÇ´Â ·¹ÄÚµåÁß Á¦ÀÏ »çÀÌÁî°¡ Å« °ÍÀ» Æ÷ÇÔÇÒ ¼ö ÀÖµµ·Ï, ÀÔÃâ·Â ByteBuffer
»çÀÌÁ °áÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀûÀýÇÑ ¹öÆÛ »çÀÌÁ ÆÇÁ¤ÇÏ·Á¸é,
SSLSession.getPacketBufferSize()
¹× SSLSession.getApplicationBufferSize()
È£ÃâÀ» »ç¿ëÇÕ´Ï´Ù. ¼Û½Å ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ ¹öÆÛÀÇ »çÀÌÁî´Â º¸Åë, °í·ÁÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. µ¥ÀÌÅÍÀÇ »ç¿ë ¹× »ý¼º¿¡ ÀûÀýÇÑ ¹öÆÛ Á¶°ÇÀÌ ¾Æ´Ñ °æ¿ì, ¾îÇø®ÄÉÀ̼ÇÀº SSLEngineResult
¿¡ ÀÇÇØ ¹®Á¦¸¦ ƯÁ¤ÇØ, ¼öÁ¤ÇÑµÚ ÀçÂ÷ È£ÃâÀ» ½ÃÇàÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
SSLSocket
°ú´Â ´Þ¸®, SSLEngine
¸ðµç ¸Þ¼µå´Â ºñºí·Ï ¸Þ¼µåÀÔ´Ï´Ù. SSLEngine
±¸ÇöÀ» À§Çؼ ÇÊ¿äÇÑ Å½ºÅ©´Â ¿Ï·á±îÁö ²Ï ½Ã°£ÀÌ °É¸®°Å³ª ¿Ï·áÀü¿¡ ºí·Ï µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î
TrustManager´Â
¸®¸ðÆ® ÀÎÁõ¼
È®ÀÎ ¼ºñ½º¿¡ÀÇ Á¢¼ÓÀÌ ¿ä±¸µÇ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ¶Ç, KeyManager´Â
Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀÇ ÀÏȯÀ¸·Î¼ »ç¿ëÇØ¾ß ÇÒ ÀÎÁõ¼¸¦ °áÁ¤Çϵµ·Ï »ç¿ëÀÚ¿¡ °Ô ¿ä±¸ÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. °Ô´Ù°¡ ¾ÏÈ£È ¼¸íÀ» ÀÛ¼ºÇØ, À̰͵éÀ» °ËÁõÇÏ´Â °æ¿ì, ó¸® ½Ã°£ÀÌ ²Ï ±æ¾îÁ®, 󸮰¡ ºí·Ï µÈ °Íó·³ º¸ÀÌ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù.
SSLEngine
´Â
ºí·Ï µÉ °¡´É¼ºÀÌ ÀÖ´Â ¸ðµç ¿ÀÆÛ·¹À̼ǿ¡ ´ëÇØ¼
Runnable
À§¾ç ŽºÅ©¸¦ »ý¼ºÇÕ´Ï´Ù. SSLEngineResult
¿¡
ÀÇÇØ À§¾ç ŽºÅ©ÀÇ °á°úÀÇ Çʿ伺ÀÌ ³ªÅ¸³µÀ» °æ¿ì, ¾îÇø®ÄÉÀ̼ÇÀº getDelegatedTask()
¸¦
È£ÃâÇØ ¹Ì½ÇÇàÀÇ À§¾ç ŽºÅ©¸¦ ÃëµæÇØ, ±× run()
¸Þ¼µå¸¦ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. È£Ãâ¿¡ »ç¿ëµÇ´Â thread´Â °è»ê¹æ¹ý¿¡ µû¶ó¼ ´Ù¸¨´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀº ¸ðµç À§¾ç ŽºÅ©¸¦ ÃëµæÇϸé, ÃÖÃÊÀÇ ¿ÀÆÛ·¹À̼ÇÀ» Àç½ÃÇàÇÕ´Ï´Ù.
¾îÇø®ÄÉÀ̼ÇÀº Åë½Å ¼¼¼ÇÀÇ Á¾·á½Ã¿¡ SSL/TLS ¸µÅ©¸¦ Á¤»óÀûÀ¸·Î Á¾·áÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. SSL/TLS ÇÁ·ÎÅäÄÝÀº ÇÚµå ½¦ÀÌÅ© Á¾·á ¸Þ¼¼Áö¸¦ °¡Áö°í ÀÖ¾î ÀÌ·¯ÇÑ ¸Þ¼¼Áö´Â SSLEngine
°¡ ÇØ¹æµÇ¾î ºÎÇÏÀÇ Àü¼Û µµ±¸°¡ Á¾·áÇϱâ Àü¿¡ ÇǾ ¼Û½ÅµÇ°Ô µÇ¾î ÀÖ½À´Ï´Ù. Åë½Å ¼¼¼ÇÀÇ Á¾·á´Â SSLException, ÇÚµå ½¦ÀÌÅ© Á¾·á ¸Þ¼¼ÁöÀÇ Âø½Å, ¶Ç´Â ÀÓÀÇÀÇ Á¾·á ¸Þ¼µå¿¡ ÀÇÇØ °³½ÃµË´Ï´Ù. ¾î´À °æ¿ì¿¡¼µµ, ¿£ÁøÀ¸·ÎºÎÅÍ ÇÚµå ½¦ÀÌÅ© Á¾·á ¸Þ¼¼Áö°¡ »ý¼ºµÇ¾îSSLEngineResult
»óŰ¡ CLOSED°¡ µÇ´ÂÁö, isOutboundDone()
¹Ýȯ°ªÀÌ true°¡ µÉ ¶§±îÁö, wrap()
°¡ ¹Ýº¹ÇØ È£ÃâÇÕ´Ï´Ù. wrap()
¸Þ¼µå¿¡ ÀÇÇØ ÃëµæµÈ µ¥ÀÌÅÍ´Â ¸ðµÎ ÇǾ ¼Û½ÅµË´Ï´Ù.
¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍ ¼Û½ÅµÇ´Â µ¥ÀÌÅͰ¡ ÀÌÁ¦ ¾ø´Â °ÍÀ» ¿£Áø¿¡ ÅëÁöÇÏ·Á¸é,
closeOutbound()
¸¦
»ç¿ëÇÕ´Ï´Ù.
ÇǾî´Â °íÀ¯ÀÇ ÇÚµå ½¦ÀÌÅ© Á¾·á ¸Þ¼¼Áö¸¦ ¼Û½ÅÇÏ´Â °ÍÀ¸·Î Á¾·áÀÇ µµ¸¦ ÅëÁöÇÕ´Ï´Ù. ÀÌ ¸Þ¼¼Áö°¡ ·ÎÄÃÀÇ SSLEngine
unwrap()
È£Ãâ¿¡ ÀÇÇØ ¼ö½Å ¹× 󸮵Ǹé, ¾îÇø®ÄÉÀ̼ÇÀº, unwrap()
¸¦ È£ÃâÇØ, »óŰ¡ CLOSED
SSLEngineResult
¸¦ °Ë»öÇÕ´Ï´Ù. Á¶°Ç¿¡ ¸Â´Â °ÍÀÌ ¹ß°ßµÇ´ÂÁö, isInboundDone()
¹Ýȯ°ªÀÌ true À̸é, Á¾·á°¡ È®Àε˴ϴÙ. ÇǾ Åë½Å ¸µÅ©¸¦ Á¾·áÇÒ ¶§, ¾î¶°ÇÑ ÀÌÀ¯·Î½á Á¤»óÀûÀÎ SSL/TLS Á¾·á ¸Þ¼¼Áö°¡ ¼Û½ÅµÇÁö ¾Ê¾Ò´ø °æ¿ì, ¾îÇø®ÄÉÀ̼ÇÀº ½ºÆ®¸²ÀÇ Á¾·á À§Ä¡¸¦ °ËÃâÇØ, ´õ ÀÌ»ó ó¸®ÇØ¾ß ÇÒ Âø½Å ¸Þ¼¼Áö°¡ ¾ø´Â °ÍÀ» closeInbound()
¸¦
°³ÀÔ½ÃÄÑ ¿£Áø¿¡ ÅëÁöÇÕ´Ï´Ù. ¾îÇø®ÄÉÀ̼ǿ¡ µû¶ó¼´Â ÇǾî·ÎºÎÅÍÀÇ ¼Ë´Ù¿î ¸Þ¼¼Áö¸¦ º¸Åë
´ë·Î ¹Þ´Â ¼³Á¤ÀÌ µÇ¾î ÀÖ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¾îÇø®ÄÉÀ̼ÇÀº ½ºÆ®¸²ÀÇ Á¾·á À§°ªÀÌ ¾Æ´Ï°í, ÇÚµå ½¦ÀÌÅ© ¸Þ¼¼Áö¿¡ ÀÇÇØ Á¾·á¸¦ üũÇÕ´Ï´Ù.
encode ¹æ½ÄÀ» »ç¿ëÇÒ ¶§´Â 2°³ÀÇ ±×·ì¿¡ ´ëÇØ ÀÌÇØÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
getSupportedCipherSuites()
¸¦
»ç¿ëÇØ º¸°íµÈ´Ù
setEnabledCipherSuites(String [])
¸Þ¼µå¸¦ »ç¿ëÇØ ¼³Á¤ÇØ, getEnabledCipherSuites()
¸Þ¼µå¸¦ »ç¿ëÇØ Á¶È¸ÇÑ´Ù. »õ·Î¿î ¿£Áø¿¡¼´Â ÃÖ¼ÒÇÑÀÇ Ãßõ ±¸¼ºÀ» ³ªÅ¸³»´Â µðÆúÆ®ÀÇ encode ¹æ½ÄÀÌ »ç¿ë °¡´ÉÇÏ°Ô µÇ¾î ÀÖ´Ù
°¢ SSL/TLS Á¢¼Ó¿¡´Â Ŭ¶óÀÌ¾ðÆ®¿Í ¼¹ö°¡ 1 ´ë¾¿ ÇÊ¿äÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡
°¢ Á¾´ÜÀ¸·Î ´ã´çÇÏ´Â ·ÑÀ» °áÁ¤ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ ¼±Åà ³»¿ë¿¡ÀÇÇØ ¾î´À ÂÊÃøÀ¸·ÎºÎÅÍ ÇÚµå ½¦ÀÌÅ© 󸮸¦ °³½ÃÇÏ´ÂÁö, ¶Ç, ¼·Î ¾î¶°ÇÑ ¸Þ¼¼Áö¸¦ ¼Û½ÅÇÒÁö°¡ Á¤ÇØÁý´Ï´Ù. ¸ðµåÀÇ ¼³Á¤Àº, setUseClientMode(boolean)
¸Þ¼µå·Î ½Ç½ÃÇÕ´Ï´Ù. ÀÏ´Ü Ãʱâ ÇÚµå ½¦ÀÌÅ©°¡ °³½ÃµÇ°í ³ª¼´Â Àç³×°í½Ã¿¡À̼ÇÀÇ °æ¿ì¿¡¼µµ, SSLEngine
¸ðµå¸¦ Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ ¼¹ö, ¼¹ö·ÎºÎÅÍ Å¬¶óÀÌ¾ðÆ®·Î ÀüȯÇÒ ¼ö ¾ø½À´Ï´Ù.
À§¾ç ŽºÅ©´Â º°thread·Î ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù
. SSLEngine
°¡ ÀÛ¼ºµÇ¸é, ÇöÀç AccessControlContext
°¡ º¸Á¸µË´Ï´Ù. ±× ÈÄ, ¸ðµç À§¾ç ŽºÅ©´Â ÀÌ ÄÁÅØ½ºÆ®
À¸·Î 󸮵˴ϴÙ. Áï, ¾×¼¼½º Á¦¾îÀÇ »ç°áÁ¤Àº ¸ðµÎ, ¿£ÁøÀÇ ÀÛ¼º½ÃÀÇ ÄÁÅØ½ºÆ®
À¸·Î ÇàÇØÁý´Ï´Ù.
wrap()
¸Þ¼µå¿Í unwrap()
¸Þ¼µå´Â º´·Ä ½ÇÇàÀÌ °¡´ÉÇÕ´Ï´Ù.
´ÙÀ½¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
synchronized (outboundLock) { sslEngine.wrap(src, dst); outboundQueue.put(dst); }ÃÖÁ¾ÀûÀÎ ÆÐŶÀÇ ¼ø¼¸¦ º¸ÁõÇÒ ¼ö°¡ ¾ø±â ¶§¹®¿¡ °á°úÀûÀ¸·Î 2°³ÀÇ thread°¡ °°Àº ¸Þ¼µå (
wrap()
¶Ç´Â unwrap()
)¸¦ µ¿½Ã¿¡ È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.
SSLContext
,
SSLSocket
,
SSLServerSocket
,
SSLSession
,
Socket
»ý¼ºÀÚ °³¿ä | |
---|---|
protected |
SSLEngine ()
³»ºÎ ¼¼¼ÇÀÇ ÀçÀ̿뿡 °üÇÑ ÈùÆ®¸¦ Á¦°øÇÏÁö ¾Ê´Â SSLEngine
»ý¼ºÀÚ
ÀÔ´Ï´Ù. |
protected |
SSLEngine (String peerHost,
int peerPort)
SSLEngine ¿ë »ý¼ºÀÚ
ÀÔ´Ï´Ù. |
¸Þ¼µå °³¿ä | |
---|---|
abstract void |
beginHandshake ()
ÀÌ SSLEngine Ãʱâ ÇÚµå ½¦ÀÌÅ© ¶Ç´Â Àç³×°í½Ã¿¡À̼ÇÀÇ ÇÚµå ½¦ÀÌÅ©¸¦ °³½ÃÇÕ´Ï´Ù. |
abstract void |
closeInbound ()
´õ ÀÌ»ó ÀÌ SSLEngine ¿¡ ¼Û½ÅµÇ´Â Âø½Å ³×Æ®¿öÅ© µ¥ÀÌÅͰ¡ ¾ø´Â °ÍÀ» ³ªÅ¸³»´Â ½ÅÈ£ÀÔ´Ï´Ù. |
abstract void |
closeOutbound ()
´õ ÀÌ»ó ÀÌ SSLEngine ¿¡ ¼Û½ÅµÇ´Â ¼Û½Å ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅͰ¡ ¾ø´Â °ÍÀ» ³ªÅ¸³»´Â ½ÅÈ£ÀÔ´Ï´Ù. |
abstract Runnable |
getDelegatedTask ()
ÀÌ SSLEngine ¸¦ À§Çؼ À§¾ç µÈ Runnable ŽºÅ©¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
abstract String [] |
getEnabledCipherSuites ()
ÀÌ ¿£ÁøÀ¸·Î ÇöÀç »ç¿ë °¡´ÉÇÏ°Ô µÇ¾î ÀÖ´Â SSL encode ¹æ½ÄÀÇ À̸§À» ¸®ÅÏÇÕ´Ï´Ù. |
abstract String [] |
getEnabledProtocols ()
ÀÌ SSLEngine ·Î
ÇöÀç »ç¿ë °¡´ÉÇÏ°Ô µÇ¾î ÀÖ´Â ÇÁ·ÎÅäÄÝÀÇ ¹öÀüÀ» ¸®ÅÏÇÕ´Ï´Ù. |
abstract boolean |
getEnableSessionCreation ()
ÀÌ ¿£ÁøÀ¸·Î »õ·Î¿î SSL ¼¼¼ÇÀ» È®¸³ÇÒ ¼ö ÀÖ´Â °æ¿ì´Â true¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
abstract SSLEngineResult.HandshakeStatus |
getHandshakeStatus ()
ÀÌ SSLEngine
ÇöÀçÀÇ ÇÚµå ½¦ÀÌÅ© »óŸ¦ ¸®ÅÏÇÕ´Ï´Ù. |
abstract boolean |
getNeedClientAuth ()
ÀÌ ¿£Áø¿¡ Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀÌ ÇʼöÀΰæ¿ì´Â true¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
String |
getPeerHost ()
ÇǾîÀÇ È£½ºÆ®¸íÀ» ¸®ÅÏÇÕ´Ï´Ù. |
int |
getPeerPort ()
ÇǾîÀÇ Æ÷Æ® ¹øÈ£¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
abstract SSLSession |
getSession ()
ÀÌ SSLEngine ·Î
»ç¿ëÁßÀÇ SSLSession À»
¸®ÅÏÇÕ´Ï´Ù. |
abstract String [] |
getSupportedCipherSuites ()
ÀÌ ¿£ÁøÀ¸·Î »ç¿ë °¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ´Â encode ¹æ½ÄÀÇ À̸§À» ¸®ÅÏÇÕ´Ï´Ù. |
abstract String [] |
getSupportedProtocols ()
ÀÌ SSLEngine ·Î
»ç¿ëÇÒ ¼ö ÀÖ´Â ÇÁ·ÎÅäÄÝÀÇ À̸§À» ¸®ÅÏÇÕ´Ï´Ù. |
abstract boolean |
getUseClientMode ()
ÇÚµå ½¦ÀÌÅ©½Ã¿¡ Ŭ¶óÀÌ¾ðÆ® ¸ðµå¸¦ »ç¿ëÇϵµ·Ï ¿£ÁøÀÌ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì´Â true |
abstract boolean |
getWantClientAuth ()
ÀÌ ¿£ÁøÀÌ Å¬¶óÀÌ¾ðÆ® ÀÎÁõÀ» ¿ä±¸Çϴ°æ¿ì´Â true¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
abstract boolean |
isInboundDone ()
unwrap(ByteBuffer, ByteBuffer) °¡ ¹Þ¾ÆµéÀÌ´Â Âø½Å µ¥ÀÌÅÍ ¸Þ¼¼Áö°¡ ¾ÆÁ÷ ÀÖÀ»Áö ¾î¶³Áö¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
abstract boolean |
isOutboundDone ()
wrap(ByteBuffer, ByteBuffer) °¡ »ý¼ºÇÏ´Â ¼Û½Å µ¥ÀÌÅÍ ¸Þ¼¼Áö°¡ ¾ÆÁ÷ ÀÖÀ»Áö ¾î¶³Áö¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
abstract void |
setEnabledCipherSuites (String [] suites)
ÀÌ ¿£ÁøÀ¸·Î »ç¿ë °¡´ÉÇÑ encode ¹æ½ÄÀ» ¼³Á¤ÇÕ´Ï´Ù. |
abstract void |
setEnabledProtocols (String [] protocols)
ÀÌ ¿£ÁøÀ¸·Î »ç¿ë °¡´ÉÇÑ ÇÁ·ÎÅäÄÝÀÇ ¹öÀüÀ» ¼³Á¤ÇÕ´Ï´Ù. |
abstract void |
setEnableSessionCreation (boolean flag)
ÀÌ ¿£ÁøÀ¸·Î »õ·Î¿î SSL ¼¼¼ÇÀ» È®¸³ÇÒ ¼ö ÀÖÀ»Áö ¾î¶³Áö¸¦ Á¦¾îÇÕ´Ï´Ù. |
abstract void |
setNeedClientAuth (boolean need)
Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀÌ Çʼö°¡ µÇ´Â °Í°°°Ô ¿£ÁøÀ» ¼³Á¤ÇÕ´Ï´Ù. |
abstract void |
setUseClientMode (boolean mode)
ÇÚµå ½¦ÀÌÅ©½Ã, ¿£ÁøÀÌ Å¬¶óÀÌ¾ðÆ® (¶Ç´Â ¼¹ö) ¸ðµå¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤ÇÕ´Ï´Ù. |
abstract void |
setWantClientAuth (boolean want)
Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀ» ¿ä±¸Çϵµ·Ï ¿£ÁøÀ» ¼³Á¤ÇÕ´Ï´Ù. |
SSLEngineResult |
unwrap (ByteBuffer src,
ByteBuffer dst)
SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ plaintextÀÇ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ ¹öÆÛ¿¡ º¹È£È ÇÏ·Á°í ÇÕ´Ï´Ù. |
SSLEngineResult |
unwrap (ByteBuffer src,
ByteBuffer [] dsts)
SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ plaintextÀÇ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ ¹öÆÛÀÇ ¼ø¼¿¡ º¹È£È ÇÏ·Á°í ÇÕ´Ï´Ù. |
abstract SSLEngineResult |
unwrap (ByteBuffer src,
ByteBuffer [] dsts,
int offset,
int length)
SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ plaintextÀÇ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ ¹öÆÛÀÇ ¼ºê ¼ø¼¿¡ º¹È£È ÇÏ·Á°í ÇÕ´Ï´Ù. |
SSLEngineResult |
wrap (ByteBuffer [] srcs,
ByteBuffer dst)
plaintext ¹ÙÀÌÆ®¸¦ µ¥ÀÌÅÍ ¹öÆÛ ¼ø¼·ÎºÎÅÍ SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅÍ¿¡ encode ÇÏ·Á°í ÇÕ´Ï´Ù. |
abstract SSLEngineResult |
wrap (ByteBuffer [] srcs,
int offset,
int length,
ByteBuffer dst)
plaintext ¹ÙÀÌÆ®¸¦ µ¥ÀÌÅÍ ¹öÆÛÀÇ ¼ºê ¼ø¼·ÎºÎÅÍ SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅÍ¿¡ encode ÇÏ·Á°í ÇÕ´Ï´Ù. |
SSLEngineResult |
wrap (ByteBuffer src,
ByteBuffer dst)
plaintextÀÇ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍÀÇ ¹öÆÛ¸¦ SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅÍ¿¡ encode ÇÏ·Á°í ÇÕ´Ï´Ù. |
Ŭ·¡½º java.lang. Object ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼µå |
---|
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
»ý¼ºÀÚ »ó¼¼ |
---|
protected SSLEngine()
SSLEngine
»ý¼ºÀÚ
ÀÔ´Ï´Ù.
SSLContext.createSSLEngine()
,
SSLSessionContext
protected SSLEngine(String peerHost, int peerPort)
SSLEngine
¿ë »ý¼ºÀÚ
ÀÔ´Ï´Ù.
SSLEngine
±¸ÇöÀº ³»ºÎ ¼¼¼ÇÀ» ÀçÀÌ¿ëÇϱâ À§ÇÑ ÈùÆ®·Î¼peerHost
ÆÄ¶ó¹ÌÅÍ¿Í peerPort
ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Kerberos µî, ¸®¸ðÆ® È£½ºÆ®¸íÀÇ Á¤º¸¸¦ ÇÊ¿ä·Î ÇÏ´Â ¾ÏÈ£±ºµµ ÀÖ½À´Ï´Ù. ÀÌ Å¬·¡½ºÀÇ ±¸ÇöÀº ÀÌ »ý¼ºÀÚ¸¦ »ç¿ëÇØ Kerberos¸¦ »ç¿ëÇÕ´Ï´Ù.
ÆÄ¶ó¹ÌÅÍ´Â SSLEngine
¿¡
ÇÑ ÀÎÁõÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.
peerHost
- ÇǾîÀÇ È£½ºÆ®¸ípeerPort
- ÇǾîÀÇ Æ÷Æ® ¹øÈ£SSLContext.createSSLEngine(String, int)
,
SSLSessionContext
¸Þ¼µåÀÇ »ó¼¼ |
---|
public String getPeerHost()
ÀÌ °ªÀº ÀÎÁõµÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡ ½ÇÁ¦·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
public int getPeerPort()
ÀÌ °ªÀº ÀÎÁõµÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡ ½ÇÁ¦·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
public SSLEngineResult wrap(ByteBuffer src, ByteBuffer dst) throws SSLException
ÀÌ ¸Þ¼µå È£ÃâÀÇ µ¿ÀÛÀº ´ÙÀ½ÀÇ È£ÃâÀÇ µ¿ÀÛ°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù.
engine.wrap(new ByteBuffer [] { src }, 0, 1, dst);
- ÆÄ¶ó¹ÌÅÍ:
src
- ¼Û½Å ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´ÂByteBuffer
dst
- ¼Û½Å ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´ÂByteBuffer
- ¹Ýȯ°ª:
- ÀÌ ¿ÀÆÛ·¹À̼ÇÀÇ °á°ú¸¦ ¼³¸íÇÏ´Â
SSLEngineResult
- ¿¹¿Ü:
SSLException
- µ¥ÀÌÅÍ Ã³¸®Áß¿¡ ¹ß»ýÇØ,SSLEngine
ÀÌ»óÁ¾·á(ABEND)ÀÇ ¿øÀÎÀÌ µÈ ¹®Á¦. ¿£ÁøÀÇ Á¾·áÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½ºÀÇ ¼³¸íÀ» ÂüÁ¶ReadOnlyBufferException
-dst
¹öÆÛ°¡ Àбâ Àü¿ë ÀÇ °æ¿ìIllegalArgumentException
-src
¶Ç´Âdst
ÀÌ nullÀÎ °æ¿ìIllegalStateException
- Ŭ¶óÀ̾ðÆ®/¼¹ö ¸ðµå°¡ ¹Ì¼³Á¤ÀÇ °æ¿ì- °ü·Ã Ç׸ñ:
wrap(ByteBuffer [], int, int, ByteBuffer)
public SSLEngineResult wrap(ByteBuffer [] srcs, ByteBuffer dst) throws SSLException
ÀÌ ¸Þ¼µå È£ÃâÀÇ µ¿ÀÛÀº ´ÙÀ½ÀÇ È£ÃâÀÇ µ¿ÀÛ°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù.
engine.wrap(srcs, 0, srcs.length, dst);
- ÆÄ¶ó¹ÌÅÍ:
srcs
- ¼Û½Å ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´ÂByteBuffer
¹è¿dst
- ¼Û½Å ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´ÂByteBuffer
- ¹Ýȯ°ª:
- ÀÌ ¿ÀÆÛ·¹À̼ÇÀÇ °á°ú¸¦ ¼³¸íÇÏ´Â
SSLEngineResult
- ¿¹¿Ü:
SSLException
- µ¥ÀÌÅÍ Ã³¸®Áß¿¡ ¹ß»ýÇØ,SSLEngine
ÀÌ»óÁ¾·á(ABEND)ÀÇ ¿øÀÎÀÌ µÈ ¹®Á¦. ¿£ÁøÀÇ Á¾·áÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½ºÀÇ ¼³¸íÀ» ÂüÁ¶ReadOnlyBufferException
-dst
¹öÆÛ°¡ Àбâ Àü¿ë ÀÇ °æ¿ìIllegalArgumentException
-src
¿Ídsts
¾î´À ÂÊÀÎÁö ÇÑÆíÀÌ nullÀÎ °æ¿ì, ¶Ç´Âsrcs
¿¡ null ¿ä¼Ò°¡ Æ÷ÇԵǴ °æ¿ìIllegalStateException
- Ŭ¶óÀ̾ðÆ®/¼¹ö ¸ðµå°¡ ¹Ì¼³Á¤ÀÇ °æ¿ì- °ü·Ã Ç׸ñ:
wrap(ByteBuffer [], int, int, ByteBuffer)
public abstract SSLEngineResult wrap(ByteBuffer [] srcs, int offset, int length, ByteBuffer dst) throws SSLException
GatheringByteChannel
,
¼öÁý ÈÄÀÇ µ¿ÀÛÀÇ ÀÚ¼¼ÇÑ °ÍÀº GatheringByteChannel.write(ByteBuffer[], int, int)
¸¦
ÂüÁ¶ÇϽʽÿÀ.
SSLEngine »óÅ¿¡ µû¶ó¼´Â ÀÌ ¸Þ¼µå´Â ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ ÀÏÀý »ç¿ëÇÏÁö ¾Ê°í ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ »ý¼ºÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÇÚµå ½¦ÀÌÅ© µ¥ÀÌÅͰ¡ À̰Ϳ¡ ÇØ´çÇÕ´Ï´Ù.
¾îÇø®ÄÉÀ̼ÇÀº ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ ÇǾ ¾ÈÀüÇÏ°Ô Àü¼Û ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¶Ç, ¸îȸÀΰ¡ÀÇ wrap()ÀÇ È£Ãâ¿¡ ÀÇÇØ »ý¼ºµÈ µ¥ÀÌÅ͸¦ »ý¼º¼ø¼¿¡ Àü¼Û ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. °Ô´Ù°¡ ÀÌ ¸Þ¼µåÀÇ º¹¼öÀÇ È£ÃâÀ» ¿Ã¹Ù¸£°í µ¿±âÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌ SSLEngine
°¡ ¾ÆÁ÷ Ãʱâ ÇÚµå ½¦ÀÌÅ©¸¦ °³½ÃÇϰí ÀÖÁö ¾Ê´Â °æ¿ì, ÀÌ ¸Þ¼µå¿¡ ÀÇÇØ Ãʱâ ÇÚµå ½¦ÀÌÅ©°¡ ÀÚµ¿ÀûÀ¸·Î °³½ÃµË´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ´ÜÀÏÀÇ SSL/TLS ÆÐŶÀ» »ý¼ºÇÏ·Á°í ÇØ, °¡´ÉÇÑ ÇÑ ¸¹Àº ¼Ò½º µ¥ÀÌÅ͸¦ ¼ÒºñÇÕ´Ï´Ù. ±×·¯³ª, °¢ ¹öÆÛ¿¡ ³²¾Æ ÀÖ´Â ÇÕ°è ¹ÙÀÌÆ®¼öÀÌ»óÀ» ¼ÒºñÇÒ °ÍÀº ¾ø½À´Ï´Ù. °¢ ByteBuffer
À§Ä¡´Â ¼Òºñ ¶Ç´Â »ý¼ºµÈ µ¥ÀÌÅÍ·®¿¡ ¸ÂÃß¾î °»½ÅµË´Ï´Ù. »óÇÑ/ÇÏÇÑÄ¡´Â ¹Ù²îÁö ¾Ê½À´Ï´Ù.
srcs
¹× dst
ByteBuffer´Â
ºÎÇÏ¿¡°Ô ÀÖ´Â °¢°¢ ´Ù¸¥ ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
¿£ÁøÀÇ Á¾·áÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½ºÀÇ ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.
srcs
- ¼Û½Å ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â ByteBuffer
¹è¿offset
- ÃÖÃÊÀÇ ¹ÙÀÌÆ®ÀÇ ÃëµæÃ³°¡ µÇ´Â ¹öÆÛ ¹è¿³»ÀÇ ¿ÀÇÁ¼Â(offset). srcs.length
¾Æ·¡ÀÇ Á¦·Î ¶Ç´Â Á¤ÀÇ ¼ölength
- ¾×¼¼½º °¡´ÉÇÑ ÃÖ´ë ¹öÆÛ¼ö. srcs.length
- offset
¾Æ·¡ÀÇ Á¦·Î ¶Ç´Â Á¤ÀÇ ¼ödst
- ¼Û½Å ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â ByteBuffer
SSLEngineResult
SSLException
- µ¥ÀÌÅÍ Ã³¸®Áß¿¡ ¹ß»ýÇØ, SSLEngine
ÀÌ»óÁ¾·á(ABEND)ÀÇ ¿øÀÎÀÌ µÈ ¹®Á¦. ¿£ÁøÀÇ Á¾·áÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½ºÀÇ ¼³¸íÀ» ÂüÁ¶
IndexOutOfBoundsException
- offset
ÆÄ¶ó¹ÌÅÍ¿Í length
ÆÄ¶ó¹ÌÅÍÀÇ ÀüÁ¦ Á¶°ÇÀÌ Ã¤¿öÁöÁö ¾ÊÀº °æ¿ì
ReadOnlyBufferException
- dst
¹öÆÛ°¡ Àбâ Àü¿ë
ÀÇ °æ¿ì
IllegalArgumentException
- srcs
¿Í
dst
¾î´À ÂÊÀÎÁö ÇÑÆíÀÌ nullÀÎ °æ¿ì, ¶Ç´Â ÁöÁ¤µÈ srcs
¼ºê ¼ø¼¿¡ null
¿ä¼Ò°¡ Æ÷ÇԵǴ °æ¿ì
IllegalStateException
- Ŭ¶óÀ̾ðÆ®/¼¹ö ¸ðµå°¡ ¹Ì¼³Á¤ÀÇ °æ¿ìGatheringByteChannel
,
GatheringByteChannel.write( ByteBuffer[], int, int)
public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer dst) throws SSLException
ÀÌ ¸Þ¼µå È£ÃâÀÇ µ¿ÀÛÀº ´ÙÀ½ÀÇ È£ÃâÀÇ µ¿ÀÛ°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù.
engine.unwrap(src, new ByteBuffer [] { dst }, 0, 1);
- ÆÄ¶ó¹ÌÅÍ:
src
- Âø½Å ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´ÂByteBuffer
dst
- Âø½Å ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´ÂByteBuffer
- ¹Ýȯ°ª:
- ÀÌ ¿ÀÆÛ·¹À̼ÇÀÇ °á°ú¸¦ ¼³¸íÇÏ´Â
SSLEngineResult
- ¿¹¿Ü:
SSLException
- µ¥ÀÌÅÍ Ã³¸®Áß¿¡ ¹ß»ýÇØ,SSLEngine
ÀÌ»óÁ¾·á(ABEND)ÀÇ ¿øÀÎÀÌ µÈ ¹®Á¦. ¿£ÁøÀÇ Á¾·áÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½ºÀÇ ¼³¸íÀ» ÂüÁ¶ReadOnlyBufferException
-dst
¹öÆÛ°¡ Àбâ Àü¿ë ÀÇ °æ¿ìIllegalArgumentException
-src
¶Ç´Âdst
ÀÌ nullÀÎ °æ¿ìIllegalStateException
- Ŭ¶óÀ̾ðÆ®/¼¹ö ¸ðµå°¡ ¹Ì¼³Á¤ÀÇ °æ¿ì- °ü·Ã Ç׸ñ:
unwrap(ByteBuffer, ByteBuffer [], int, int)
public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer [] dsts) throws SSLException
ÀÌ ¸Þ¼µå È£ÃâÀÇ µ¿ÀÛÀº ´ÙÀ½ÀÇ È£ÃâÀÇ µ¿ÀÛ°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù.
engine.unwrap(src, dsts, 0, dsts.length);
- ÆÄ¶ó¹ÌÅÍ:
src
- Âø½Å ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´ÂByteBuffer
dsts
- Âø½Å ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´ÂByteBuffer
¹è¿- ¹Ýȯ°ª:
- ÀÌ ¿ÀÆÛ·¹À̼ÇÀÇ °á°ú¸¦ ¼³¸íÇÏ´Â
SSLEngineResult
- ¿¹¿Ü:
SSLException
- µ¥ÀÌÅÍ Ã³¸®Áß¿¡ ¹ß»ýÇØ,SSLEngine
ÀÌ»óÁ¾·á(ABEND)ÀÇ ¿øÀÎÀÌ µÈ ¹®Á¦. ¿£ÁøÀÇ Á¾·áÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½ºÀÇ ¼³¸íÀ» ÂüÁ¶ReadOnlyBufferException
- Àбâ Àü¿ë ÀÇdst
¹öÆÛ°¡ Á¸ÀçÇÏ´Â °æ¿ìIllegalArgumentException
-srcs
¿Ídst
¾î´À ÂÊÀÎÁö ÇÑÆíÀÌ nullÀÎ °æ¿ì, ¶Ç´Âdsts
¿¡ null ¿ä¼Ò°¡ Æ÷ÇԵǴ °æ¿ìIllegalStateException
- Ŭ¶óÀ̾ðÆ®/¼¹ö ¸ðµå°¡ ¹Ì¼³Á¤ÀÇ °æ¿ì- °ü·Ã Ç׸ñ:
unwrap(ByteBuffer, ByteBuffer [], int, int)
public abstract SSLEngineResult unwrap(ByteBuffer src, ByteBuffer [] dsts, int offset, int length) throws SSLException
ScatteringByteChannel
,
»ìÆ÷ ÈÄÀÇ µ¿ÀÛÀÇ ÀÚ¼¼ÇÑ °ÍÀº ScatteringByteChannel.read(ByteBuffer[], int, int)
¸¦
ÂüÁ¶ÇϽʽÿÀ.
SSLEngine »óÅ¿¡ µû¶ó¼´Â ÀÌ ¸Þ¼µå´Â ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ ÀÏÀý »ý¼ºÇÏÁö ¾Ê°í ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ »ç¿ëÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÇÚµå ½¦ÀÌÅ© µ¥ÀÌÅͰ¡ À̰Ϳ¡ ÇØ´çÇÕ´Ï´Ù.
¾îÇø®ÄÉÀ̼ÇÀº ÇǾî·ÎºÎÅÍ ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ ¾ÈÀüÇÏ°Ô ÃëµæÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¶Ç, ¼ö½ÅÇÑ ¼ø¼¿¡ µ¥ÀÌÅÍÀÇ ·¦À» ÇØÁ¦ (unwrap() È£Ãâ) ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀº ÀÌ ¸Þ¼µåÀÇ º¹¼öÀÇ È£ÃâÀ» ¿Ã¹Ù¸£°í µ¿±âÈÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌ SSLEngine
°¡ ¾ÆÁ÷ Ãʱâ ÇÚµå ½¦ÀÌÅ©¸¦ °³½ÃÇϰí ÀÖÁö ¾Ê´Â °æ¿ì, ÀÌ ¸Þ¼µå¿¡ ÀÇÇØ Ãʱâ ÇÚµå ½¦ÀÌÅ©°¡ ÀÚµ¿ÀûÀ¸·Î °³½ÃµË´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ´ÜÀÏÀÇ ¿ÏÀüÇÑ SSL/TLS ³×Æ®¿öÅ© ÆÐŶÀ» ¼ÒºñÇÏ·Á°í ÇÕ´Ï´Ù¸¸, ¹öÆÛ¿¡ ³²¾Æ ÀÖ´Â ÇÕ°è ¹ÙÀÌÆ®¼öÀÌ»óÀ» ¼ÒºñÇÒ °ÍÀº ¾ø½À´Ï´Ù. °¢ ByteBuffer
À§Ä¡´Â ¼Òºñ ¶Ç´Â »ý¼ºµÈ µ¥ÀÌÅÍ·®¿¡ ¸ÂÃß¾î °»½ÅµË´Ï´Ù. »óÇÑ/ÇÏÇÑÄ¡´Â ¹Ù²îÁö ¾Ê½À´Ï´Ù.
src
¹× dsts
ByteBuffer´Â
ºÎÇÏ¿¡°Ô ÀÖ´Â °¢°¢ ´Ù¸¥ ¸Þ¸ð¸®¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
ÀÌ È£ÃâÀÇ °á°ú, Âø½Å ³×Æ®¿öÅ©¹öÆÛ°¡ º¯°æµÇ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¶§¹®¿¡ ÀÌÂ÷ÀûÀÎ ¸ñÀûÀ¸·Î ³×Æ®¿öÅ© µ¥ÀÌÅÍ ÆÐŶÀÌ ÇÊ¿äÇÑ °æ¿ì´Â ÀÌ ¸Þ¼µåÀÇ È£ÃâÀü¿¡ µ¥ÀÌÅ͸¦ º¹Á¦ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÁÖ: ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ 2¹øÂ°ÀÇ SSLEngine ·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. °¢ SSLEngine °¡ SSL/TLS ¸Þ¼¼Áö¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ÀÏÀÇÀÇ ·£´ýÀÎ »óŸ¦ °¡Áö°í Àֱ⠶§¹®ÀÔ´Ï´Ù.
¿£ÁøÀÇ Á¾·áÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½ºÀÇ ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.
src
- Âø½Å ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â ByteBuffer
dsts
- Âø½Å ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ Æ÷ÇÔÇÏ´Â ByteBuffer
¹è¿offset
- ÃÖÃÊÀÇ ¹ÙÀÌÆ®ÀÇ Àü¼Ûó°¡ µÇ´Â ¹öÆÛ ¹è¿³»ÀÇ ¿ÀÇÁ¼Â(offset). dsts.length
¾Æ·¡ÀÇ Á¦·Î ¶Ç´Â Á¤ÀÇ ¼ölength
- ¾×¼¼½º °¡´ÉÇÑ ÃÖ´ë ¹öÆÛ¼ö. dsts.length
- offset
¾Æ·¡ÀÇ Á¦·Î ¶Ç´Â Á¤ÀÇ ¼ö
SSLEngineResult
SSLException
- µ¥ÀÌÅÍ Ã³¸®Áß¿¡ ¹ß»ýÇØ, SSLEngine
ÀÌ»óÁ¾·á(ABEND)ÀÇ ¿øÀÎÀÌ µÈ ¹®Á¦. ¿£ÁøÀÇ Á¾·áÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½ºÀÇ ¼³¸íÀ» ÂüÁ¶
IndexOutOfBoundsException
- offset
ÆÄ¶ó¹ÌÅÍ¿Í length
ÆÄ¶ó¹ÌÅÍÀÇ ÀüÁ¦ Á¶°ÇÀÌ Ã¤¿öÁöÁö ¾ÊÀº °æ¿ì
ReadOnlyBufferException
- Àбâ Àü¿ë
ÀÇ dst
¹öÆÛ°¡ Á¸ÀçÇÏ´Â °æ¿ì
IllegalArgumentException
- src
¿Í
dsts
¾î´À ÂÊÀÎÁö ÇÑÆíÀÌ nullÀÎ °æ¿ì, ¶Ç´Â ÁöÁ¤µÈ dsts
¼ºê ¼ø¼¿¡ null
¿ä¼Ò°¡ Æ÷ÇԵǴ °æ¿ì
IllegalStateException
- Ŭ¶óÀ̾ðÆ®/¼¹ö ¸ðµå°¡ ¹Ì¼³Á¤ÀÇ °æ¿ìScatteringByteChannel
,
ScatteringByteChannel.read( ByteBuffer[], int, int)
public abstract Runnable getDelegatedTask()
SSLEngine
¸¦ À§Çؼ À§¾ç µÈ Runnable
ŽºÅ©¸¦ ¸®ÅÏÇÕ´Ï´Ù.
SSLEngine
¿ÀÆÛ·¹À̼ǿ¡ ÇÊ¿äÇÑ ¿ÀÆÛ·¹À̼ÇÀÇ °á°ú°¡ ºí·Ï µÇ°Å³ª ¿Ï·á±îÁö »ó´çÇÑ ½Ã°£ÀÌ °É¸®´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼µå´Â ¹Ìó¸® Runnable
¿ÀÆÛ·¹ÀÌ¼Ç (ŽºÅ©)À» ÃëµæÇϱâ À§Çؼ »ç¿ëµË´Ï´Ù. °¢ ŽºÅ©¿¡´Â run
¿ÀÆÛ·¹À̼ÇÀ» ½ÇÇàÇÏ´Â thread (ÇöÀçÀÇ threadµµ °¡´É)¸¦ ÇÒ´çÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. run
¸Þ¼µå°¡ Á¾·áÇÑµÚ ºÒÇÊ¿äÇÏ°Ô µÈ Runnable
°´Ã¼´Â Æó±â °¡´ÉÇÕ´Ï´Ù.
À§¾ç µÈ ŽºÅ©´Â AccessControlContext
³»¿¡¼
ÀÌ °´Ã¼°¡ ÀÛ¼ºµÇ¾úÀ» ¶§¿¡ ½ÇÇàµË´Ï´Ù.
ÀÌ ¸Þ¼µåÀÇ È£ÃâÀº ¹Ìó¸®ÀÇ Å½ºÅ©¸¦ °¢°¢ 1ȸ ¸¸ ¸®ÅÏÇÕ´Ï´Ù.
À§¾ç µÈ º¹¼öÀÇ Å½ºÅ©¸¦ º´·Ä ½ÇÇàÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
Runnable
ŽºÅ©. »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾ø´Â °æ¿ì´Â nullpublic abstract void closeInbound() throws SSLException
SSLEngine
¿¡ ¼Û½ÅµÇ´Â Âø½Å ³×Æ®¿öÅ© µ¥ÀÌÅͰ¡ ¾ø´Â °ÍÀ» ³ªÅ¸³»´Â ½ÅÈ£ÀÔ´Ï´Ù.
¾îÇø®ÄÉÀ̼ÇÀÌ closeOutbound()
¸¦
È£ÃâÇØ Á¾·á 󸮸¦ °³½ÃÇßÀ» ¶§, ÇǾîÀÇ ´ëÀÀÇÏ´Â Á¾·á ¸Þ¼¼Áö¸¦ ±â´Ù¸± Çʿ䰡 ¾ø´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù (Á¾·áÀÇ °æ°íÀÇ ´ë±â¿¡ °üÇÑÀÚ¼¼ÇÑ ³»¿ëÀº TLS »ç¾çÀÇ ¼½¼Ç 7.2. 1(RFC 2246 )À» ÂüÁ¶). ÀÌ °æ¿ì ÀÌ ¸Þ¼µåÀÇ È£ÃâÀº ºÒÇÊ¿äÇÕ´Ï´Ù.
À̰Ϳ¡ ´ëÇØ¼ ¾îÇø®ÄÉÀ̼ÇÀÌ Á¾·á 󸮸¦ °³½ÃÇÏÁö ¾Ê¾Ò´ø °æ¿ì³ª, »ó±âÀÇ »óȲ¿¡ µé¾î¸ÂÁö ¾Ê´Â °æ¿ì´Â SSL/TLS µ¥ÀÌÅÍ ½ºÆ®¸²ÀÇ Á¾·á ºÎºÐÀÌ Âø½ÅÇÒ ¶§¸¶´Ù ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. À̰Ϳ¡ ÀÇÇØ Âø½ÅÃøÀÇ Á¾·á°¡ º¸ÁõµÇ¾î ÇǾ SSL/TLS Á¾·á ¼ö¼ÓÀ» ÀûÀýÈ÷ ½ÇÇàÇÑ °ÍÀ» È®ÀÎÇØ, °ªÀÇ Àý¾àÇØ¿¡ ÇÑ °ø°ÝÀÇ °¡´É¼ºÀ» °ËÃâÇÒ ¼ö ÀÖ½À´Ï´Ù .
ÀÌ ¸Þ¼µå´Â ³ª¹«µîÀÔ´Ï´Ù. Âø½ÅÃøÀÌ ÀÌ¹Ì Á¾·áÇϰí ÀÖ´Â °æ¿ì´Â ¾Æ¹«°Íµµ ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù.
³ª¸ÓÁöÀÇ ÇÚµå ½¦ÀÌÅ© µ¥ÀÌÅ͸¦ Ç÷¡½Ã ÇÏ·Á¸é,
wrap()
¸¦
È£ÃâÇÕ´Ï´Ù.
SSLException
- ÀÌ ¿£ÁøÀÌ ÇǾî·ÎºÎÅÍ ÀûÀýÇÑ SSL/TLS Á¾·á ÅëÁö ¸Þ¼¼Áö¸¦ ¹Þ¾ÆµéÀÌÁö ¾ÊÀº °æ¿ìisInboundDone()
,
isOutboundDone()
public abstract boolean isInboundDone()
unwrap(ByteBuffer, ByteBuffer)
°¡ ¹Þ¾ÆµéÀÌ´Â Âø½Å µ¥ÀÌÅÍ ¸Þ¼¼Áö°¡ ¾ÆÁ÷ ÀÖÀ»Áö ¾î¶³Áö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
SSLEngine
°¡ ´õ ÀÌ»ó ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì (¹Ù²Ù¾î ¸»Çϸé, ´õ ÀÌ»ó ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ »ý¼ºÇÏÁö ¾Ê´Â °æ¿ì)´Â truecloseInbound()
public abstract void closeOutbound()
SSLEngine
¿¡ ¼Û½ÅµÇ´Â ¼Û½Å ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅͰ¡ ¾ø´Â °ÍÀ» ³ªÅ¸³»´Â ½ÅÈ£ÀÔ´Ï´Ù.
ÀÌ ¸Þ¼µå´Â ³ª¹«µîÀÔ´Ï´Ù. ¼Û½ÅÃøÀÌ ÀÌ¹Ì Á¾·áÇϰí ÀÖ´Â °æ¿ì´Â ¾Æ¹«°Íµµ ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù.
³ª¸ÓÁöÀÇ ÇÚµå ½¦ÀÌÅ© µ¥ÀÌÅ͸¦ Ç÷¡½Ã ÇÏ·Á¸é,
wrap(ByteBuffer, ByteBuffer)
¸¦
È£ÃâÇÕ´Ï´Ù.
isOutboundDone()
public abstract boolean isOutboundDone()
wrap(ByteBuffer, ByteBuffer)
°¡ »ý¼ºÇÏ´Â ¼Û½Å µ¥ÀÌÅÍ ¸Þ¼¼Áö°¡ ¾ÆÁ÷ ÀÖÀ»Áö ¾î¶³Áö¸¦ ¸®ÅÏÇÕ´Ï´Ù.
Á¾·á ´Ü°è¿¡¼
SSLEngine
´Â
ÇǾ ¼Û½ÅÇÏ´Â ÇÚµå ½¦ÀÌÅ© Á¾·á µ¥ÀÌÅ͸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ µ¥ÀÌÅ͸¦ »ý¼ºÇÏ·Á¸é,
wrap()
¸¦ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼µåÀÇ ¹Ýȯ°ªÀÌ trueÀÎ °æ¿ì, ´õ ÀÌ»ó ¼Û½Å µ¥ÀÌÅÍ´Â »ý¼ºµÇÁö ¾Ê½À´Ï´Ù.
SSLEngine
°¡ ´õ ÀÌ»ó ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ »ý¼ºÇÏÁö ¾Ê´Â °æ¿ì´Â truecloseOutbound()
,
closeInbound()
public abstract String [] getSupportedCipherSuites()
getEnabledCipherSuites()
,
setEnabledCipherSuites(String [])
public abstract String [] getEnabledCipherSuites()
encode ¹æ½ÄÀº ºñ·Ï À¯È¿Çصµ »ç¿ëµÇÁö ¾Ê´Â °ÍÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÇǾ encode ¹æ½ÄÀ» Áö¿ø ÇÏÁö ¾Ê´Â °æ¿ì, ÀÌ encode¿¡ ÇÊ¿äÇÑ ÀÎÁõ¼ ³ª ºñ°ø°³Å°¸¦ »ç¿ëÇÒ ¼ö°¡ ¾ø´Â °æ¿ì, ¶Ç´Â À͸íÀÇ encode ¹æ½ÄÀÌ ÀÌ¿ë °¡´ÉÇØµµ ÀÎÁõÀÌ ¿ä±¸µÇ´Â °æ¿ì µîÀÔ´Ï´Ù.
getSupportedCipherSuites()
,
setEnabledCipherSuites(String [])
public abstract void setEnabledCipherSuites(String [] suites)
suites
ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤µÈ °¢ encode ¹æ½ÄÀº getSupportedCipherSuites()·Î ¸®½ºÆ®µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì, ¸Þ¼µå´Â ½ÇÆÐÇÕ´Ï´Ù. ÀÌ ¸Þ¼µåÀÇ È£ÃâÀÌ Á¤»óÀûÀ¸·Î ÇàÇØÁ³À» ¶§, suites
ÆÄ¶ó¹ÌÅÍ¿¡ ¸®½ºÆ® µÈ encode ¹æ½Ä¸¸, »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù
.
¿Ö ƯÁ¤ÀÇ encode ¹æ½ÄÀ» ¿£ÁøÀ¸·Î »ç¿ëÇÒ ¼ö°¡ ¾ø´Â °Íó·³ ºÙ¾î¼´Â getEnabledCipherSuites()
¸¦
ÂüÁ¶ÇϽʽÿÀ.
suites
- »ç¿ë °¡´ÉÇÏ°Ô ÇÏ´Â ¸ðµç encode ¹æ½ÄÀÇ À̸§
IllegalArgumentException
- ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤µÈ encode ¹æ½ÄÀÇ ÀϺΰ¡ Áö¿ø
µÇÁö ¾Ê´Â °æ¿ì, ¶Ç´Â ÆÄ¶ó¹ÌÅͰ¡ nullÀÎ °æ¿ìgetSupportedCipherSuites()
,
getEnabledCipherSuites()
public abstract String [] getSupportedProtocols()
SSLEngine
·Î
»ç¿ëÇÒ ¼ö ÀÖ´Â ÇÁ·ÎÅäÄÝÀÇ À̸§À» ¸®ÅÏÇÕ´Ï´Ù.
public abstract String [] getEnabledProtocols()
SSLEngine
·Î
ÇöÀç »ç¿ë °¡´ÉÇÏ°Ô µÇ¾î ÀÖ´Â ÇÁ·ÎÅäÄÝÀÇ ¹öÀüÀ» ¸®ÅÏÇÕ´Ï´Ù.
setEnabledProtocols(String [])
public abstract void setEnabledProtocols(String [] protocols)
ÇÁ·ÎÅäÄÝÀº getSupportedProtocols()¿¡ÀÇÇØ Áö¿ø
´ë»óÀ¸·ÎÀÇÇØ ¸®½ºÆ®µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÀÌ ¸Þ¼µåÀÇ È£ÃâÀÌ Á¤»óÀûÀ¸·Î ÇàÇØÁ³À» ¶§, protocols
ÆÄ¶ó¹ÌÅÍ¿¡ ¸®½ºÆ® µÈ ÇÁ·ÎÅäÄݸ¸, »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù
.
protocols
- »ç¿ë °¡´ÉÇÏ°Ô ÇÏ´Â ¸ðµç ÇÁ·ÎÅäÄÝÀÇ À̸§
IllegalArgumentException
- ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤µÈ ÇÁ·ÎÅäÄÝÀÇ ÀϺΰ¡ Áö¿ø
µÇÁö ¾Ê´Â °æ¿ì, ¶Ç´Â ÆÄ¶ó¹ÌÅͰ¡ nullÀÎ °æ¿ìgetEnabledProtocols()
public abstract SSLSession getSession()
SSLEngine
·Î
»ç¿ëÁßÀÇ SSLSession
À»
¸®ÅÏÇÕ´Ï´Ù.
SSL ¼¼¼ÇÀº À¯È¿±â°£ÀÌ ±æ°í, »ç¿ëÀÚ¿¡ µû¶ó¼´Â ·Î±×ÀÎ ¼¼¼Ç Àüü¿¡ ´ëÀÀÇÏ´Â Àϵµ ÀÖ½À´Ï´Ù. ¼¼¼Ç¿¡´Â ¼¼¼Ç³»ÀÇ ¸ðµç Á¢¼ÓÀ¸·Î »ç¿ëµÇ´Â encode ¹æ½Ä°ú ¼¼¼ÇÀÇ Å¬¶óÀÌ¾ðÆ®¿Í ¼¹öÀÇ ½Äº° Á¤º¸°¡ ÁöÁ¤µÇ°í ÀÖ½À´Ï´Ù.
ÀÌ ¸Þ¼µå´Â SSLSocket.getSession()
°ú´Â ´Þ¸®, ÇÚµå ½¦ÀÌÅ©°¡ ¿Ï·áÇÒ ¶§±îÁö ºí·Ï µÇÁö ¾Ê½À´Ï´Ù.
Ãʱâ ÇÚµå ½¦ÀÌÅ©°¡ ¿Ï·áÇϸé, ¹«È¿ÀÎ ¾ÏÈ£±º SSL_NULL_WITH_NULL_NULL¸¦ º¸°íÇÏ´Â ¼¼¼Ç °´Ã¼¸¦ ¸®ÅÏÇÕ´Ï´Ù.
SSLEngine
SSLSession
SSLSession
public abstract void beginHandshake() throws SSLException
ÀÌ ¸Þ¼µå´Â Ãʱâ ÇÚµå ½¦ÀÌÅ©½Ã¿¡´Â ÇÊ¿ä ¾ø½À´Ï´Ù. ÇÚµå ½¦ÀÌÅ©°¡ ¾ÆÁ÷ ½ÃÀ۵Ǿî
ÀÖÁö ¾ÊÀº °æ¿ì´Â wrap()
¸Þ¼µå¿Í unwrap()
¸Þ¼µå¿¡ ÀÇÇØ ¾Ï¹¬ÀûÀ¸·Î ÀÌ ¸Þ¼µå°¡ ºÒ·Á°¡±â ¶§¹®ÀÔ´Ï´Ù.
ÇǾ, ÀûÀýÇÑ ¼¼¼ÇÀç³×°í½Ã¿¡À̼ÇÀÇ ÇÚµå ½¦ÀÌÅ© ¸Þ¼¼Áö¸¦ ¼Û½ÅÇÏ´Â °ÍÀ¸·Î½á, ÀÌ SSLEngine
¿Í
ÀÇ ¼¼¼ÇÀÇ Àç³×°í½Ã¿¡À̼ÇÀ» ¿ä±¸ÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù.
ÀÌ ¸Þ¼µå´Â SSLSocket#startHandshake()
¸Þ¼µå¿Í´Â ´Þ¶ó, ÇÚµå ½¦ÀÌÅ©°¡ ¿Ï·áÇÒ ¶§±îÁö ºí·Ï µÇÁö ¾Ê½À´Ï´Ù.
°Á¦ÀûÀ¸·Î SSL/TLS ¼¼¼ÇÀÇ Àç³×°í½Ã¿¡À̼ÇÀ» ½Ç½ÃÇÏ´Â °æ¿ì´Â ÇöÀçÀÇ ¼¼¼ÇÀ» ¹«È¿·Î ÇÏ°í ³ª¼ ÀÌ ¸Þ¼µå¸¦ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.
±âÁ¸ÀÇ ¿£Áø»ó¿¡¼ º¹¼öÀÇ ÇÚµå ½¦ÀÌÅ©¸¦ Áö¿ø
ÇÏÁö ¾Ê°í, SSLException
À»
Throw ÇÏ´Â ÇÁ·ÎÅäÄݵµ ÀÖ½À´Ï´Ù.
SSLException
- SSLEngine
¿¡ »õ·Ó°í ÇÚµå ½¦ÀÌÅ©¸¦ °³½ÃÇϵµ·Ï ÅëÁöÇϰí ÀÖÀ» ¶§, ¹®Á¦°¡ ¹ß»ýÇßÀ» °æ¿ì. ¿£ÁøÀÇ Á¾·áÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½ºÀÇ ¼³¸íÀ» ÂüÁ¶
IllegalStateException
- Ŭ¶óÀ̾ðÆ®/¼¹ö ¸ðµå°¡ ¹Ì¼³Á¤ÀÇ °æ¿ìSSLSession.invalidate()
public abstract SSLEngineResult.HandshakeStatus getHandshakeStatus()
SSLEngine
ÇöÀçÀÇ ÇÚµå ½¦ÀÌÅ© »óŸ¦ ¸®ÅÏÇÕ´Ï´Ù.
SSLEngineResult.HandshakeStatus
public abstract void setUseClientMode(boolean mode)
ÀÌ ¸Þ¼µå´Â ¸ðµç ÇÚµå ½¦ÀÌÅ©ÀÇ Àü¿¡ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÏ´Ü ÇÚµå ½¦ÀÌÅ©°¡ °³½ÃµÇ¸é, ÀÌ ¿£ÁøÀÇ ¼ö¸íÀÌ ´ÙÇÒ ¶§±îÁö, ÇöÀçÀÇ ¸ðµå¸¦ ¸®¼Â ÇÒ ¼ö ¾ø½À´Ï´Ù.
º¸Åë, ¼¹ö´Â ÀÚ½ÅÀ» ÀÎÁõÇÕ´Ï´Ù¸¸, Ŭ¶óÀÌ¾ðÆ®´Â ¹Ýµå½Ã ±×·¸´Ù°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù.
mode
- ÇÚµå ½¦ÀÌÅ©¸¦ Ŭ¶óÀÌ¾ðÆ® ¸ðµå·Î °³½ÃÇÏ´Â °æ¿ì´Â true
IllegalArgumentException
- ÃÖÃÊÀÇ ÇÚµå ½¦ÀÌÅ©°¡ °³½ÃµÇ°í ³ª¼ ¸ðµå¸¦ º¯°æÇÏ·Á°í ÇßÀ» °æ¿ìgetUseClientMode()
public abstract boolean getUseClientMode()
setUseClientMode(boolean)
public abstract void setNeedClientAuth(boolean need)
¿£ÁøÀÇ Å¬¶óÀÌ¾ðÆ® ÀÎÁõ ¼³Á¤Àº ´ÙÀ½ÀÇ ¾î´À ÂÊÀΰ¡¿¡ µË´Ï´Ù.
setWantClientAuth(boolean)
ÀÎ °æ¿ì¿Í´Â ´Þ¶ó, ÀÌ ¿É¼ÇÀÌ ¼³Á¤µÇ¾î ÀÖ¾î, ÇÑÆí Ŭ¶óÀÌ¾ðÆ® ÀÎÁõ Á¤º¸°¡ Á¦°øµÇÁö ¾Ê´Â °æ¿ì´Â ³×°í½Ã¿¡À̼ÇÀÌ Á¤ÁöÇØ, ¿£ÁøÀº Á¾·á ÇÁ·Î½ÃÀú¸¦ °³½ÃÇÕ´Ï´Ù.
ÀÌ ¸Þ¼µå¸¦ È£ÃâÇϸé, Áö±Ý±îÁö ÀÌ ¸Þ¼µå ¶Ç´Â setWantClientAuth(boolean)
¿¡ ÀÇÇØ ¼³Á¤µÈ ³»¿ëÀÌ ¿À¹ö¶óÀ̵å(override) µË´Ï´Ù.
need
- Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀÌ ÇʼöÀÇ °æ¿ì´Â true, Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀÌ ºÒÇÊ¿äÇÑ °æ¿ì´Â falsegetNeedClientAuth()
,
setWantClientAuth(boolean)
,
getWantClientAuth()
,
setUseClientMode(boolean)
public abstract boolean getNeedClientAuth()
setNeedClientAuth(boolean)
,
setWantClientAuth(boolean)
,
getWantClientAuth()
,
setUseClientMode(boolean)
public abstract void setWantClientAuth(boolean want)
¿£ÁøÀÇ Å¬¶óÀÌ¾ðÆ® ÀÎÁõ ¼³Á¤Àº ´ÙÀ½ÀÇ ¾î´À ÂÊÀΰ¡¿¡ µË´Ï´Ù.
setNeedClientAuth(boolean)
¿Í
´Þ¸®, ÀÌ ¿É¼ÇÀÌ ¼³Á¤µÇ¾î ÀÖ¾î, ÇÑÆí Ŭ¶óÀÌ¾ðÆ® ÀÎÁõ Á¤º¸°¡ Á¦°øµÇÁö ¾Ê´Â °æ¿ì¿¡¼µµ, ³×°í½Ã¿¡À̼ÇÀº ¼ÓÇàµË´Ï´Ù.
ÀÌ ¸Þ¼µå¸¦ È£ÃâÇϸé, Áö±Ý±îÁö ÀÌ ¸Þ¼µå ¶Ç´Â setNeedClientAuth(boolean)
¿¡ ÀÇÇØ ¼³Á¤µÈ ³»¿ëÀÌ ¿À¹ö¶óÀ̵å(override) µË´Ï´Ù.
want
- Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀÌ ¿ä±¸µÇ¾úÀ» °æ¿ì´Â true, Ŭ¶óÀÌ¾ðÆ® ÀÎÁõÀÌ ºÒÇÊ¿äÇÑ °æ¿ì´Â falsegetWantClientAuth()
,
setNeedClientAuth(boolean)
,
getNeedClientAuth()
,
setUseClientMode(boolean)
public abstract boolean getWantClientAuth()
setNeedClientAuth(boolean)
,
getNeedClientAuth()
,
setWantClientAuth(boolean)
,
setUseClientMode(boolean)
public abstract void setEnableSessionCreation(boolean flag)
flag
- ¼¼¼ÇÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Â °æ¿ì´Â true (µðÆúÆ®). ±âÁ¸ÀÇ ¼¼¼ÇÀ» Àç°³ÇÏ´Â °æ¿ì´Â falsegetEnableSessionCreation()
public abstract boolean getEnableSessionCreation()
setEnableSessionCreation(boolean)
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | constructor | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.