JavaTM 2 Platform
Standard Ed. 5.0

javax.net.ssl
Ŭ·¡½º SSLEngine

java.lang.Object 
  »óÀ§¸¦ È®Àå javax.net.ssl.SSLEngine

public abstract class SSLEngine
extends Object

Secure Sockets Layer (SSL)³ª IETF RFC 2246 Transport Layer Security (TLS) ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇØ, Àü¼Û¿¡ ÀÇÁ¸µÈ ÀÏ ¾øÀÌ ½ÃÅ¥¾î Åë½ÅÀ» À¯È¿ÇÏ°Ô Çϴ Ŭ·¡½ºÀÔ´Ï´Ù.

½ÃÅ¥¾î Åë½Å ¸ðµå¿¡¼­´Â ´ÙÀ½ÀÇ ½ÃÅ¥·¯Æ¼ º¸È£°¡ ½Ç½ÃµË´Ï´Ù.

ÀÌ·¯ÇÑ ½ÃÅ¥·¯Æ¼ º¸È£´Â ¡¸encode ¹æ½Ä¡¹À» »ç¿ëÇØ ÁöÁ¤ÇÕ´Ï´Ù. encode ¹æ½ÄÀº ÁöÁ¤µÈ SSL Á¢¼ÓÀ¸·Î »ç¿ëµÇ´Â ¾Ïȣȭ ¾Ë°í¸®ÁòÀÇ Æí¼ºÀÔ´Ï´Ù. ³×°í½Ã¿¡À̼ÇÀ» ½Ç½ÃÇÏ·Á¸é, 2°³ÀÇ Á¾´ÜÀÌ °°Àº encode ¹æ½ÄÀ» ¼±ÅÃÇØ, ±× encode ¹æ½ÄÀÌ ¾çÂÊ ¸ðµÎÀÇ È¯°æ¿¡¼­ »ç¿ë °¡´ÉÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. °øÅëÀÇ encode ¹æ½ÄÀÌ ¾ø´Â °æ¿ì´Â SSL Á¢¼ÓÀ» È®¸³ÇÏÁö ¸øÇÏ°í, µ¥ÀÌÅ͸¦ ±³È¯ÇÒ ¼ö ¾ø½À´Ï´Ù.

»ç¿ëµÇ´Â 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°³ÀÇ ´Ü°è¸¦ ´õµë½À´Ï´Ù.

  1. ÀÛ¼º - SSLEngine ÀÛ¼º°ú ÃʱâÈ­´Â ¿Ï·áÇß½À´Ï´Ù¸¸, ¾ÆÁ÷ »ç¿ëµÇ°í´Â ÀÖÁö ¾Ê½À´Ï´Ù. ÀÌ ´Ü°è¿¡¼­´Â ¾îÇø®ÄÉÀ̼ǿ¡ÀÇÇØ SSLEngine °íÀ¯ÀÇ ¸ðµç ¼³Á¤ (¾ÏÈ£±ºÀÇ À¯È¿È­, SSLEngine°¡ Ŭ¶óÀ̾ðÆ® ¸ðµå¿Í ¼­¹ö ¸ðµåÀÇ ¾îµð¿¡¼­ ÇÚµå ½¦ÀÌÅ©¸¦ ½Ç½ÃÇÒ±î µî)À» ½Ç½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù . ÇÚµå ½¦ÀÌÅ©°¡ ½ÃÀ۵Ǹé, ´ÙÀ½ÀÇ ÇÚµå ½¦ÀÌÅ©·ÎºÎÅÍ Å¬¶óÀ̾ðÆ®/¼­¹ö ¸ðµåÀÇ ¼³Á¤À» Á¦¿ÜÇÑ (¾Æ·¡¿Í °°ÀÌ ÂüÁ¶) »õ·Î¿î ¼³Á¤ÀÌ »ç¿ëµË´Ï´Ù.
  2. Ãʱâ ÇÚµå ½¦ÀÌÅ© - SSLSession°¡ È®¸³µÉ ¶§±îÁö, 2°³ÀÇ ÇǾ Åë½Å ÆĶó¹ÌÅ͸¦ ±³È¯ÇÏ´Â ¼ö¼ÓÀÔ´Ï´Ù. ÀÌ ´Ü°è¿¡¼­´Â ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ´Â ¼Û½ÅÇÒ ¼ö ¾ø½À´Ï´Ù.
  3. ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ - Åë½Å ÆĶó¹ÌÅÍ°¡ È®¸³µÇ¾î ÇÚµå ½¦ÀÌÅ©°¡ ¿Ï·áÇϸé, SSLEngine·Î ºÎÅÍ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ°¡ ¼Û½ÅµË´Ï´Ù. ¼Û½Å ¾îÇø®ÄÉÀÌ¼Ç ¸Þ¼¼Áö´Â ¾ÏȣȭµÇ¾î µ¥ÀÌÅÍÀÇ Á¤ÇÕ¼ºÀÌ È®º¸µË´Ï´Ù. Âø½Å ¸Þ¼¼Áö¿¡¼­´Â ÀÌ ¹Ý´ëÀÇ ¼ö¼ÓÀ» ÇÕ´Ï´Ù.
  4. ÀçÇÚµå ½¦ÀÌÅ© - ¡¸¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ¡¹´Ü°è¿¡¼­´Â ¾î´À ÂÊÃøÀÇ ÇǾî·ÎºÎÅÍ¿¡¼­µµ, ÇÊ¿ä¿¡ µû¶ó¼­ ¼¼¼ÇÀÇ Àç³×°í½Ã¿¡À̼ÇÀ» ¿ä±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ¿¡ »õ·Î¿î ÇÚµå ½¦ÀÌÅ© µ¥ÀÌÅ͸¦ È¥ÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù . ÀçÇÚµå ½¦ÀÌÅ©¸¦ °³½ÃÇϱâ Àü¿¡ ¾îÇø®ÄÉÀ̼ÇÀº SSL/TLS Åë½Å ÆĶó¹ÌÅÍ (¿¹: À¯È¿ÇÑ ¾ÏÈ£±ºÀÇ ¸®½ºÆ®)³ª, Ŭ¶óÀ̾ðÆ® ÀÎÁõÀ» »ç¿ëÇÒÁö ¾î¶³ÁöÀÇ ¼³Á¤À» ¸®¼Â ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, Ŭ¶óÀ̾ðÆ® ¸ðµå¿Í ¼­¹ö ¸ðµå¸¦ ¹Ù²Ü ¼ö ¾ø½À´Ï´Ù. Àüȸ¿Í °°°Ô, ÇÚµå ½¦ÀÌÅ©°¡ ½ÃÀÛµÇ°í ³ª¼­ ´ÙÀ½ÀÇ ÇÚµå ½¦ÀÌÅ©±îÁö, »õ·Î¿î SSLEngine ¼³Á¤Àº »ç¿ëµÇÁö ¾Ê½À´Ï´Ù.
  5. Á¾·á - Á¢¼ÓÀÌ ºÒÇÊ¿äÇÏ°Ô µÇ¾úÀ» ¶§, ¾îÇø®ÄÉÀ̼ÇÀº, 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°³ÀÇ ±×·ì¿¡ ´ëÇØ ÀÌÇØÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

µðÆúÆ®ÀÇ ±¸ÇöÀ¸·Î »ç¿ë °¡´ÉÇÏ°Ô ÇÏ´Â encode ¹æ½ÄÀ¸·Î´Â ¼­¹ö¸¦ ÀÎÁõÇØ, ±â¹Ð¼ºÀÌ º¸ÁõµÇÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ¼­¹ö ÀÎÁõÀ» ÇÏÁö ¾Ê°í ±â¹Ð¼ºÀÌ º¸ÁõµÇÁö ¾Ê´Â encode ¹æ½ÄÀ» ¼±ÅÃÇÏ´Â °æ¿ì´Â ¼­¹ö ÀÎÁõÀ» ÇÏÁö ¾Ê°í ºñ°ø°³¼ºÀÌ º¸ÁõµÇÁö ¾Ê´Â (¾ÏȣȭµÇÁö ¾Ê´Â´Ù) Åë½ÅÀÌ »ç¿ëµÇ´Â °Í¿¡ 2°³ÀÇ Á¾´ÜÀÌ ¸í½ÃÀûÀ¸·Î µ¿ÀÇ ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

°¢ SSL/TLS Á¢¼Ó¿¡´Â Ŭ¶óÀ̾ðÆ®¿Í ¼­¹ö°¡ 1 ´ë¾¿ ÇÊ¿äÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ °¢ Á¾´ÜÀ¸·Î ´ã´çÇÏ´Â ·ÑÀ» °áÁ¤ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÀÌ ¼±Åà ³»¿ë¿¡ÀÇÇØ ¾î´À ÂÊÃøÀ¸·ÎºÎÅÍ ÇÚµå ½¦ÀÌÅ© 󸮸¦ °³½ÃÇÏ´ÂÁö, ¶Ç, ¼­·Î ¾î¶°ÇÑ ¸Þ¼¼Áö¸¦ ¼Û½ÅÇÒÁö°¡ Á¤ÇØÁý´Ï´Ù. ¸ðµåÀÇ ¼³Á¤Àº, setUseClientMode(boolean) ¸Þ¼­µå·Î ½Ç½ÃÇÕ´Ï´Ù. ÀÏ´Ü Ãʱâ ÇÚµå ½¦ÀÌÅ©°¡ °³½ÃµÇ°í ³ª¼­´Â Àç³×°í½Ã¿¡À̼ÇÀÇ °æ¿ì¿¡¼­µµ, SSLEngine ¸ðµå¸¦ Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ ¼­¹ö, ¼­¹ö·ÎºÎÅÍ Å¬¶óÀ̾ðÆ®·Î ÀüȯÇÒ ¼ö ¾ø½À´Ï´Ù.

À§¾ç ŽºÅ©´Â º°thread·Î ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù . SSLEngine°¡ ÀÛ¼ºµÇ¸é, ÇöÀç AccessControlContext °¡ º¸Á¸µË´Ï´Ù. ±× ÈÄ, ¸ðµç À§¾ç ŽºÅ©´Â ÀÌ ÄÁÅؽºÆ® À¸·Î 󸮵˴ϴÙ. Áï, ¾×¼¼½º Á¦¾îÀÇ »ç°áÁ¤Àº ¸ðµÎ, ¿£ÁøÀÇ ÀÛ¼º½ÃÀÇ ÄÁÅؽºÆ® À¸·Î ÇàÇØÁý´Ï´Ù.


concurrent processing¿¡ ´ëÇØ: ´ÙÀ½ÀÇ 2 Á¡¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä.
  1. wrap() ¸Þ¼­µå¿Í unwrap() ¸Þ¼­µå´Â º´·Ä ½ÇÇàÀÌ °¡´ÉÇÕ´Ï´Ù.
  2. SSL/TLS ÇÁ·ÎÅäÄÝÀº ÆÐŶÀ» Â÷·Ê·Î ÀÌ¿ëÇÕ´Ï´Ù. ¾îÇø®ÄÉÀ̼ÇÀº »ý¼ºµÈ ÆÐŶÀÌ ¿Ã¹Ù¸¥ Â÷·Ê·Î Àü´ÞÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÆÐŶÀÇ µµÂø ¼ø¼­°¡ ¿Ã¹Ù¸£Áö ¾ÊÀ¸¸é ¿¹±âÄ¡ ¾ÊÀº °á°ú ¶Ç´Â Ä¡¸íÀûÀÎ °á°ú¸¦ ºÎ¸£´Â ÀÏÀÌ ÀÖ½À´Ï´Ù.

    ´ÙÀ½¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.

                    synchronized (outboundLock) {               sslEngine.wrap(src, dst);
                        outboundQueue.put(dst);
                    }       
    ÃÖÁ¾ÀûÀÎ ÆÐŶÀÇ ¼ø¼­¸¦ º¸ÁõÇÒ ¼ö°¡ ¾ø±â ¶§¹®¿¡ °á°úÀûÀ¸·Î 2°³ÀÇ thread°¡ °°Àº ¸Þ¼­µå (wrap() ¶Ç´Â unwrap())¸¦ µ¿½Ã¿¡ È£ÃâÇÒ ¼ö ¾ø½À´Ï´Ù.

µµÀÔµÈ ¹öÀü :
1.5
°ü·Ã Ç׸ñ:
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
 

»ý¼ºÀÚ »ó¼¼

SSLEngine

protected SSLEngine()
³»ºÎ ¼¼¼ÇÀÇ ÀçÀÌ¿ë¿¡ °üÇÑ ÈùÆ®¸¦ Á¦°øÇÏÁö ¾Ê´Â SSLEngine »ý¼ºÀÚ ÀÔ´Ï´Ù.

°ü·Ã Ç׸ñ:
SSLContext.createSSLEngine(), SSLSessionContext

SSLEngine

protected SSLEngine(String  peerHost,
                    int peerPort)
SSLEngine ¿ë »ý¼ºÀÚ ÀÔ´Ï´Ù.

SSLEngine ±¸ÇöÀº ³»ºÎ ¼¼¼ÇÀ» ÀçÀÌ¿ëÇϱâ À§ÇÑ ÈùÆ®·Î¼­peerHost ÆĶó¹ÌÅÍ¿Í peerPort ÆĶó¹ÌÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

Kerberos µî, ¸®¸ðÆ® È£½ºÆ®¸íÀÇ Á¤º¸¸¦ ÇÊ¿ä·Î ÇÏ´Â ¾ÏÈ£±ºµµ ÀÖ½À´Ï´Ù. ÀÌ Å¬·¡½ºÀÇ ±¸ÇöÀº ÀÌ »ý¼ºÀÚ¸¦ »ç¿ëÇØ Kerberos¸¦ »ç¿ëÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ´Â SSLEngine¿¡ ÇÑ ÀÎÁõÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
peerHost - ÇǾîÀÇ È£½ºÆ®¸í
peerPort - ÇǾîÀÇ Æ÷Æ® ¹øÈ£
°ü·Ã Ç׸ñ:
SSLContext.createSSLEngine(String, int), SSLSessionContext
¸Þ¼­µåÀÇ »ó¼¼

getPeerHost

public String  getPeerHost()
ÇǾîÀÇ È£½ºÆ®¸íÀ» ¸®ÅÏÇÕ´Ï´Ù.

ÀÌ °ªÀº ÀÎÁõµÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡ ½ÇÁ¦·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

¹Ýȯ°ª:
ÇǾîÀÇ È£½ºÆ®¸í. »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾ø´Â °æ¿ì´Â null

getPeerPort

public int getPeerPort()
ÇǾîÀÇ Æ÷Æ® ¹øÈ£¸¦ ¸®ÅÏÇÕ´Ï´Ù.

ÀÌ °ªÀº ÀÎÁõµÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡ ½ÇÁ¦·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.

¹Ýȯ°ª:
ÇǾîÀÇ Æ÷Æ® ¹øÈ£. »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾ø´Â °æ¿ì´Â -1

wrap

public SSLEngineResult  wrap(ByteBuffer  src,
                            ByteBuffer  dst)
                     throws SSLException 
plaintextÀÇ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍÀÇ ¹öÆÛ¸¦ SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅÍ¿¡ encode ÇÏ·Á°í ÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå È£ÃâÀÇ µ¿ÀÛÀº ´ÙÀ½ÀÇ È£ÃâÀÇ µ¿ÀÛ°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù.

 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)

wrap

public SSLEngineResult  wrap(ByteBuffer [] srcs,
                            ByteBuffer  dst)
                     throws SSLException 
plaintext ¹ÙÀÌÆ®¸¦ µ¥ÀÌÅÍ ¹öÆÛ ¼ø¼­·ÎºÎÅÍ SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅÍ¿¡ encode ÇÏ·Á°í ÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå È£ÃâÀÇ µ¿ÀÛÀº ´ÙÀ½ÀÇ È£ÃâÀÇ µ¿ÀÛ°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù.

 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)

wrap

public abstract SSLEngineResult  wrap(ByteBuffer [] srcs,
                                     int offset,
                                     int length,
                                     ByteBuffer  dst)
                              throws SSLException 
plaintext ¹ÙÀÌÆ®¸¦ µ¥ÀÌÅÍ ¹öÆÛÀÇ ¼­ºê ¼ø¼­·ÎºÎÅÍ SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅÍ¿¡ encode ÇÏ·Á°í ÇÕ´Ï´Ù. ÀÌ ¡¸¼öÁý¡¹¿ÀÆÛ·¹À̼ÇÀº 1ȸ ÀÇ È£Ãâ·Î ´ÜÀÏÀÇ ¹ÙÀÌÆ® ¼ø¼­¸¦ 1°³ ÀÌ»óÀÇ ÁöÁ¤ÀÇ ¹öÆÛ ¼ø¼­¿¡ encode ÇÒ ¼ö ÀÖ½À´Ï´Ù. ·¦ ¼öÁýÀº º¸Åë, ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝÀ̳ª ÆÄÀÏ Çü½Ä (¿¹¸¦ µé¾î µ¥ÀÌÅ͸¦ 1°³ ÀÌ»óÀÇ °íÁ¤ÀåÀÇ Çì´õ¿Í °¡º¯ÀåÀÇ º»Ã¼·ÎºÎÅÍ ¿Ï¼ºµÇ´Â ¼¼±×¸ÕÆ®(segment)¿¡ ±×·ìÈ­ ÇÏ´Â °Í °°Àº ÆÄÀÏ Çü½Ä)À» ±¸ÇöÇÒ ¶§¿¡ Æí¸®ÇÕ´Ï´Ù. ¼öÁýÀÇ ÀÚ¼¼ÇÑ °ÍÀº 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)

unwrap

public SSLEngineResult  unwrap(ByteBuffer  src,
                              ByteBuffer  dst)
                       throws SSLException 
SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ plaintextÀÇ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ ¹öÆÛ¿¡ º¹È£È­ ÇÏ·Á°í ÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå È£ÃâÀÇ µ¿ÀÛÀº ´ÙÀ½ÀÇ È£ÃâÀÇ µ¿ÀÛ°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù.

 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)

unwrap

public SSLEngineResult  unwrap(ByteBuffer  src,
                              ByteBuffer [] dsts)
                       throws SSLException 
SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ plaintextÀÇ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ ¹öÆÛÀÇ ¼ø¼­¿¡ º¹È£È­ ÇÏ·Á°í ÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå È£ÃâÀÇ µ¿ÀÛÀº ´ÙÀ½ÀÇ È£ÃâÀÇ µ¿ÀÛ°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù.

 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)

unwrap

public abstract SSLEngineResult  unwrap(ByteBuffer  src,
                                       ByteBuffer [] dsts,
                                       int offset,
                                       int length)
                                throws SSLException 
SSL/TLS ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ plaintextÀÇ ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ ¹öÆÛÀÇ ¼­ºê ¼ø¼­¿¡ º¹È£È­ ÇÏ·Á°í ÇÕ´Ï´Ù. ÀÌ ¡¸»ìÆ÷¡¹¿ÀÆÛ·¹À̼ÇÀº 1ȸ ÀÇ È£Ãâ·Î ´ÜÀÏÀÇ ¹ÙÀÌÆ® ¼ø¼­¸¦ 1°³ ÀÌ»óÀÇ ÁöÁ¤ÀÇ ¹öÆÛ ¼ø¼­¿¡ º¹È£È­ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ºÐ»êÇÏ´Â ¾È ·¦Àº º¸Åë, ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝÀ̳ª ÆÄÀÏ Çü½Ä (¿¹¸¦ µé¾î µ¥ÀÌÅ͸¦ 1°³ ÀÌ»óÀÇ °íÁ¤ÀåÀÇ Çì´õ¿Í °¡º¯ÀåÀÇ º»Ã¼·ÎºÎÅÍ ¿Ï¼ºµÇ´Â ¼¼±×¸ÕÆ®(segment)¿¡ ±×·ìÈ­ ÇÏ´Â °Í °°Àº ÆÄÀÏ Çü½Ä)À» ±¸ÇöÇÒ ¶§¿¡ Æí¸®ÇÕ´Ï´Ù. »ìÆ÷ÀÇ ÀÚ¼¼ÇÑ °ÍÀº 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)

getDelegatedTask

public abstract Runnable  getDelegatedTask()
ÀÌ SSLEngine¸¦ À§Çؼ­ À§¾ç µÈ Runnable ŽºÅ©¸¦ ¸®ÅÏÇÕ´Ï´Ù.

SSLEngine ¿ÀÆÛ·¹À̼ǿ¡ ÇÊ¿äÇÑ ¿ÀÆÛ·¹À̼ÇÀÇ °á°ú°¡ ºí·Ï µÇ°Å³ª ¿Ï·á±îÁö »ó´çÇÑ ½Ã°£ÀÌ °É¸®´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼­µå´Â ¹Ìó¸® Runnable ¿ÀÆÛ·¹ÀÌ¼Ç (ŽºÅ©)À» ÃëµæÇϱâ À§Çؼ­ »ç¿ëµË´Ï´Ù. °¢ ŽºÅ©¿¡´Â run ¿ÀÆÛ·¹À̼ÇÀ» ½ÇÇàÇÏ´Â thread (ÇöÀçÀÇ threadµµ °¡´É)¸¦ ÇÒ´çÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. run ¸Þ¼­µå°¡ Á¾·áÇÑµÚ ºÒÇÊ¿äÇÏ°Ô µÈ Runnable°´Ã¼´Â Æó±â °¡´ÉÇÕ´Ï´Ù.

À§¾ç µÈ ŽºÅ©´Â AccessControlContext ³»¿¡¼­ ÀÌ °´Ã¼°¡ ÀÛ¼ºµÇ¾úÀ» ¶§¿¡ ½ÇÇàµË´Ï´Ù.

ÀÌ ¸Þ¼­µåÀÇ È£ÃâÀº ¹Ìó¸®ÀÇ Å½ºÅ©¸¦ °¢°¢ 1ȸ ¸¸ ¸®ÅÏÇÕ´Ï´Ù.

À§¾ç µÈ º¹¼öÀÇ Å½ºÅ©¸¦ º´·Ä ½ÇÇàÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

¹Ýȯ°ª:
À§¾ç µÈ Runnable ŽºÅ©. »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾ø´Â °æ¿ì´Â null

closeInbound

public abstract void closeInbound()
                           throws SSLException 
´õ ÀÌ»ó ÀÌ SSLEngine¿¡ ¼Û½ÅµÇ´Â Âø½Å ³×Æ®¿öÅ© µ¥ÀÌÅÍ°¡ ¾ø´Â °ÍÀ» ³ªÅ¸³»´Â ½ÅÈ£ÀÔ´Ï´Ù.

¾îÇø®ÄÉÀ̼ÇÀÌ closeOutbound()¸¦ È£ÃâÇØ Á¾·á 󸮸¦ °³½ÃÇßÀ» ¶§, ÇǾîÀÇ ´ëÀÀÇÏ´Â Á¾·á ¸Þ¼¼Áö¸¦ ±â´Ù¸± ÇÊ¿ä°¡ ¾ø´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù (Á¾·áÀÇ °æ°íÀÇ ´ë±â¿¡ °üÇÑÀÚ¼¼ÇÑ ³»¿ëÀº TLS »ç¾çÀÇ ¼½¼Ç 7.2. 1(RFC 2246 )À» ÂüÁ¶). ÀÌ °æ¿ì ÀÌ ¸Þ¼­µåÀÇ È£ÃâÀº ºÒÇÊ¿äÇÕ´Ï´Ù.

ÀÌ°Í¿¡ ´ëÇؼ­ ¾îÇø®ÄÉÀ̼ÇÀÌ Á¾·á 󸮸¦ °³½ÃÇÏÁö ¾Ê¾Ò´ø °æ¿ì³ª, »ó±âÀÇ »óȲ¿¡ µé¾î¸ÂÁö ¾Ê´Â °æ¿ì´Â SSL/TLS µ¥ÀÌÅÍ ½ºÆ®¸²ÀÇ Á¾·á ºÎºÐÀÌ Âø½ÅÇÒ ¶§¸¶´Ù ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÀÌ°Í¿¡ ÀÇÇØ Âø½ÅÃøÀÇ Á¾·á°¡ º¸ÁõµÇ¾î ÇǾ SSL/TLS Á¾·á ¼ö¼ÓÀ» ÀûÀýÈ÷ ½ÇÇàÇÑ °ÍÀ» È®ÀÎÇØ, °ªÀÇ Àý¾àÇØ¿¡ ÇÑ °ø°ÝÀÇ °¡´É¼ºÀ» °ËÃâÇÒ ¼ö ÀÖ½À´Ï´Ù .

ÀÌ ¸Þ¼­µå´Â ³ª¹«µîÀÔ´Ï´Ù. Âø½ÅÃøÀÌ ÀÌ¹Ì Á¾·áÇÏ°í ÀÖ´Â °æ¿ì´Â ¾Æ¹«°Íµµ ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù.

³ª¸ÓÁöÀÇ ÇÚµå ½¦ÀÌÅ© µ¥ÀÌÅ͸¦ Ç÷¡½Ã ÇÏ·Á¸é, wrap()¸¦ È£ÃâÇÕ´Ï´Ù.

¿¹¿Ü:
SSLException - ÀÌ ¿£ÁøÀÌ ÇǾî·ÎºÎÅÍ ÀûÀýÇÑ SSL/TLS Á¾·á ÅëÁö ¸Þ¼¼Áö¸¦ ¹Þ¾ÆµéÀÌÁö ¾ÊÀº °æ¿ì
°ü·Ã Ç׸ñ:
isInboundDone(), isOutboundDone()

isInboundDone

public abstract boolean isInboundDone()
unwrap(ByteBuffer, ByteBuffer) °¡ ¹Þ¾ÆµéÀÌ´Â Âø½Å µ¥ÀÌÅÍ ¸Þ¼¼Áö°¡ ¾ÆÁ÷ ÀÖÀ»Áö ¾î¶³Áö¸¦ ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
SSLEngine°¡ ´õ ÀÌ»ó ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì (¹Ù²Ù¾î ¸»Çϸé, ´õ ÀÌ»ó ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅ͸¦ »ý¼ºÇÏÁö ¾Ê´Â °æ¿ì)´Â true
°ü·Ã Ç׸ñ:
closeInbound()

closeOutbound

public abstract void closeOutbound()
´õ ÀÌ»ó ÀÌ SSLEngine¿¡ ¼Û½ÅµÇ´Â ¼Û½Å ¾îÇø®ÄÉÀÌ¼Ç µ¥ÀÌÅÍ°¡ ¾ø´Â °ÍÀ» ³ªÅ¸³»´Â ½ÅÈ£ÀÔ´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â ³ª¹«µîÀÔ´Ï´Ù. ¼Û½ÅÃøÀÌ ÀÌ¹Ì Á¾·áÇÏ°í ÀÖ´Â °æ¿ì´Â ¾Æ¹«°Íµµ ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù.

³ª¸ÓÁöÀÇ ÇÚµå ½¦ÀÌÅ© µ¥ÀÌÅ͸¦ Ç÷¡½Ã ÇÏ·Á¸é, wrap(ByteBuffer, ByteBuffer)¸¦ È£ÃâÇÕ´Ï´Ù.

°ü·Ã Ç׸ñ:
isOutboundDone()

isOutboundDone

public abstract boolean isOutboundDone()
wrap(ByteBuffer, ByteBuffer) °¡ »ý¼ºÇÏ´Â ¼Û½Å µ¥ÀÌÅÍ ¸Þ¼¼Áö°¡ ¾ÆÁ÷ ÀÖÀ»Áö ¾î¶³Áö¸¦ ¸®ÅÏÇÕ´Ï´Ù.

Á¾·á ´Ü°è¿¡¼­ SSLEngine´Â ÇǾ ¼Û½ÅÇÏ´Â ÇÚµå ½¦ÀÌÅ© Á¾·á µ¥ÀÌÅ͸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ µ¥ÀÌÅ͸¦ »ý¼ºÇÏ·Á¸é, wrap()¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼­µåÀÇ ¹Ýȯ°ªÀÌ trueÀÎ °æ¿ì, ´õ ÀÌ»ó ¼Û½Å µ¥ÀÌÅÍ´Â »ý¼ºµÇÁö ¾Ê½À´Ï´Ù.

¹Ýȯ°ª:
SSLEngine°¡ ´õ ÀÌ»ó ³×Æ®¿öÅ© µ¥ÀÌÅ͸¦ »ý¼ºÇÏÁö ¾Ê´Â °æ¿ì´Â true
°ü·Ã Ç׸ñ:
closeOutbound(), closeInbound()

getSupportedCipherSuites

public abstract String [] getSupportedCipherSuites()
ÀÌ ¿£ÁøÀ¸·Î »ç¿ë °¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ´Â encode ¹æ½ÄÀÇ À̸§À» ¸®ÅÏÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î ÀÌ·¯ÇÑ encode ¹æ½ÄÀÇ ÀϺθ¸ÀÌ, µðÆúÆ® ±¸ÇöÀ¸·Î »ç¿ë °¡´ÉÇÏ°Ô µË´Ï´Ù. ÀϺÎÀÇ encode ¹æ½ÄÀº µðÆúÆ® ±¸ÇöÀÇ ¼­ºñ½º Ç°Áú ¿ä°ÇÀ» ä¿ìÁö ¾ÊÀº °ÍÀÌ Àֱ⠶§¹®¿¡ÀÔ´Ï´Ù. ÀÌ·¯ÇÑ encode ¹æ½ÄÀº Ư¼öÇÑ ¾îÇø®ÄÉÀ̼ÇÀ¸·Î »ç¿ëµË´Ï´Ù.

¹Ýȯ°ª:
encode ¹æ½Ä¸íÀÇ ¹è¿­
°ü·Ã Ç׸ñ:
getEnabledCipherSuites(), setEnabledCipherSuites(String [])

getEnabledCipherSuites

public abstract String [] getEnabledCipherSuites()
ÀÌ ¿£ÁøÀ¸·Î ÇöÀç »ç¿ë °¡´ÉÇÏ°Ô µÇ¾î ÀÖ´Â SSL encode ¹æ½ÄÀÇ À̸§À» ¸®ÅÏÇÕ´Ï´Ù. SSL ¿£ÁøÀÌ ÃÖÃÊ·Î ÀÛ¼ºµÇ¾úÀ» ¶§¿¡ »ç¿ë °¡´ÉÇÏ°Ô´Â ¸ðµç encode ¹æ½Ä¿¡¼­ ÃÖ¼ÒÇÑÀÇ ¼­ºñ½º Ç°ÁúÀÌ º¸ÁõµË´Ï´Ù. ȯ°æ¿¡ µû¶ó¼­´Â ÀÌ °ªÀº ºñ¾îÀÖ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù.

encode ¹æ½ÄÀº ºñ·Ï À¯È¿Çصµ »ç¿ëµÇÁö ¾Ê´Â °ÍÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÇǾ encode ¹æ½ÄÀ» Áö¿ø ÇÏÁö ¾Ê´Â °æ¿ì, ÀÌ encode¿¡ ÇÊ¿äÇÑ ÀÎÁõ¼­ ³ª ºñ°ø°³Å°¸¦ »ç¿ëÇÒ ¼ö°¡ ¾ø´Â °æ¿ì, ¶Ç´Â À͸íÀÇ encode ¹æ½ÄÀÌ ÀÌ¿ë °¡´ÉÇصµ ÀÎÁõÀÌ ¿ä±¸µÇ´Â °æ¿ì µîÀÔ´Ï´Ù.

¹Ýȯ°ª:
encode ¹æ½Ä¸íÀÇ ¹è¿­
°ü·Ã Ç׸ñ:
getSupportedCipherSuites(), setEnabledCipherSuites(String [])

setEnabledCipherSuites

public abstract void setEnabledCipherSuites(String [] suites)
ÀÌ ¿£ÁøÀ¸·Î »ç¿ë °¡´ÉÇÑ encode ¹æ½ÄÀ» ¼³Á¤ÇÕ´Ï´Ù.

suites ÆĶó¹ÌÅÍ·Î ÁöÁ¤µÈ °¢ encode ¹æ½ÄÀº getSupportedCipherSuites()·Î ¸®½ºÆ®µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì, ¸Þ¼­µå´Â ½ÇÆÐÇÕ´Ï´Ù. ÀÌ ¸Þ¼­µåÀÇ È£ÃâÀÌ Á¤»óÀûÀ¸·Î ÇàÇØÁ³À» ¶§, suites ÆĶó¹ÌÅÍ¿¡ ¸®½ºÆ® µÈ encode ¹æ½Ä¸¸, »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù .

¿Ö ƯÁ¤ÀÇ encode ¹æ½ÄÀ» ¿£ÁøÀ¸·Î »ç¿ëÇÒ ¼ö°¡ ¾ø´Â °Íó·³ ºÙ¾î¼­´Â getEnabledCipherSuites()¸¦ ÂüÁ¶ÇϽʽÿÀ.

ÆĶó¹ÌÅÍ:
suites - »ç¿ë °¡´ÉÇÏ°Ô ÇÏ´Â ¸ðµç encode ¹æ½ÄÀÇ À̸§
¿¹¿Ü:
IllegalArgumentException - ÆĶó¹ÌÅÍ·Î ÁöÁ¤µÈ encode ¹æ½ÄÀÇ ÀϺΰ¡ Áö¿ø µÇÁö ¾Ê´Â °æ¿ì, ¶Ç´Â ÆĶó¹ÌÅÍ°¡ nullÀÎ °æ¿ì
°ü·Ã Ç׸ñ:
getSupportedCipherSuites(), getEnabledCipherSuites()

getSupportedProtocols

public abstract String [] getSupportedProtocols()
ÀÌ SSLEngine·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÁ·ÎÅäÄÝÀÇ À̸§À» ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
Áö¿ø µÇ°í ÀÖ´Â ÇÁ·ÎÅäÄÝÀÇ ¹è¿­

getEnabledProtocols

public abstract String [] getEnabledProtocols()
ÀÌ SSLEngine·Î ÇöÀç »ç¿ë °¡´ÉÇÏ°Ô µÇ¾î ÀÖ´Â ÇÁ·ÎÅäÄÝÀÇ ¹öÀüÀ» ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
ÇÁ·ÎÅäÄÝÀÇ ¹è¿­
°ü·Ã Ç׸ñ:
setEnabledProtocols(String [])

setEnabledProtocols

public abstract void setEnabledProtocols(String [] protocols)
ÀÌ ¿£ÁøÀ¸·Î »ç¿ë °¡´ÉÇÑ ÇÁ·ÎÅäÄÝÀÇ ¹öÀüÀ» ¼³Á¤ÇÕ´Ï´Ù.

ÇÁ·ÎÅäÄÝÀº getSupportedProtocols()¿¡ÀÇÇØ Áö¿ø ´ë»óÀ¸·ÎÀÇÇØ ¸®½ºÆ®µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÀÌ ¸Þ¼­µåÀÇ È£ÃâÀÌ Á¤»óÀûÀ¸·Î ÇàÇØÁ³À» ¶§, protocols ÆĶó¹ÌÅÍ¿¡ ¸®½ºÆ® µÈ ÇÁ·ÎÅäÄݸ¸, »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù .

ÆĶó¹ÌÅÍ:
protocols - »ç¿ë °¡´ÉÇÏ°Ô ÇÏ´Â ¸ðµç ÇÁ·ÎÅäÄÝÀÇ À̸§
¿¹¿Ü:
IllegalArgumentException - ÆĶó¹ÌÅÍ·Î ÁöÁ¤µÈ ÇÁ·ÎÅäÄÝÀÇ ÀϺΰ¡ Áö¿ø µÇÁö ¾Ê´Â °æ¿ì, ¶Ç´Â ÆĶó¹ÌÅÍ°¡ nullÀÎ °æ¿ì
°ü·Ã Ç׸ñ:
getEnabledProtocols()

getSession

public abstract SSLSession  getSession()
ÀÌ SSLEngine·Î »ç¿ëÁßÀÇ SSLSessionÀ» ¸®ÅÏÇÕ´Ï´Ù.

SSL ¼¼¼ÇÀº À¯È¿±â°£ÀÌ ±æ°í, »ç¿ëÀÚ¿¡ µû¶ó¼­´Â ·Î±×ÀÎ ¼¼¼Ç Àüü¿¡ ´ëÀÀÇÏ´Â Àϵµ ÀÖ½À´Ï´Ù. ¼¼¼Ç¿¡´Â ¼¼¼Ç³»ÀÇ ¸ðµç Á¢¼ÓÀ¸·Î »ç¿ëµÇ´Â encode ¹æ½Ä°ú ¼¼¼ÇÀÇ Å¬¶óÀ̾ðÆ®¿Í ¼­¹öÀÇ ½Äº° Á¤º¸°¡ ÁöÁ¤µÇ°í ÀÖ½À´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â SSLSocket.getSession() °ú´Â ´Þ¸®, ÇÚµå ½¦ÀÌÅ©°¡ ¿Ï·áÇÒ ¶§±îÁö ºí·Ï µÇÁö ¾Ê½À´Ï´Ù.

Ãʱâ ÇÚµå ½¦ÀÌÅ©°¡ ¿Ï·áÇϸé, ¹«È¿ÀÎ ¾ÏÈ£±º SSL_NULL_WITH_NULL_NULL¸¦ º¸°íÇÏ´Â ¼¼¼Ç °´Ã¼¸¦ ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
ÀÌ SSLEngine SSLSession
°ü·Ã Ç׸ñ:
SSLSession

beginHandshake

public abstract void beginHandshake()
                             throws SSLException 
ÀÌ SSLEngine Ãʱâ ÇÚµå ½¦ÀÌÅ© ¶Ç´Â Àç³×°í½Ã¿¡À̼ÇÀÇ ÇÚµå ½¦ÀÌÅ©¸¦ °³½ÃÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â Ãʱâ ÇÚµå ½¦ÀÌÅ©½Ã¿¡´Â ÇÊ¿ä ¾ø½À´Ï´Ù. ÇÚµå ½¦ÀÌÅ©°¡ ¾ÆÁ÷ ½ÃÀ۵Ǿî ÀÖÁö ¾ÊÀº °æ¿ì´Â wrap() ¸Þ¼­µå¿Í unwrap() ¸Þ¼­µå¿¡ ÀÇÇØ ¾Ï¹¬ÀûÀ¸·Î ÀÌ ¸Þ¼­µå°¡ ºÒ·Á°¡±â ¶§¹®ÀÔ´Ï´Ù.

ÇǾ, ÀûÀýÇÑ ¼¼¼ÇÀç³×°í½Ã¿¡À̼ÇÀÇ ÇÚµå ½¦ÀÌÅ© ¸Þ¼¼Áö¸¦ ¼Û½ÅÇÏ´Â °ÍÀ¸·Î½á, ÀÌ SSLEngine¿Í ÀÇ ¼¼¼ÇÀÇ Àç³×°í½Ã¿¡À̼ÇÀ» ¿ä±¸ÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â SSLSocket#startHandshake() ¸Þ¼­µå¿Í´Â ´Þ¶ó, ÇÚµå ½¦ÀÌÅ©°¡ ¿Ï·áÇÒ ¶§±îÁö ºí·Ï µÇÁö ¾Ê½À´Ï´Ù.

°­Á¦ÀûÀ¸·Î SSL/TLS ¼¼¼ÇÀÇ Àç³×°í½Ã¿¡À̼ÇÀ» ½Ç½ÃÇÏ´Â °æ¿ì´Â ÇöÀçÀÇ ¼¼¼ÇÀ» ¹«È¿·Î ÇÏ°í ³ª¼­ ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

±âÁ¸ÀÇ ¿£Áø»ó¿¡¼­ º¹¼öÀÇ ÇÚµå ½¦ÀÌÅ©¸¦ Áö¿ø ÇÏÁö ¾Ê°í, SSLExceptionÀ» Throw ÇÏ´Â ÇÁ·ÎÅäÄݵµ ÀÖ½À´Ï´Ù.

¿¹¿Ü:
SSLException - SSLEngine¿¡ »õ·Ó°í ÇÚµå ½¦ÀÌÅ©¸¦ °³½ÃÇϵµ·Ï ÅëÁöÇÏ°í ÀÖÀ» ¶§, ¹®Á¦°¡ ¹ß»ýÇßÀ» °æ¿ì. ¿£ÁøÀÇ Á¾·áÀÇÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ·¡½ºÀÇ ¼³¸íÀ» ÂüÁ¶
IllegalStateException - Ŭ¶óÀ̾ðÆ®/¼­¹ö ¸ðµå°¡ ¹Ì¼³Á¤ÀÇ °æ¿ì
°ü·Ã Ç׸ñ:
SSLSession.invalidate()

getHandshakeStatus

public abstract SSLEngineResult.HandshakeStatus  getHandshakeStatus()
ÀÌ SSLEngine ÇöÀçÀÇ ÇÚµå ½¦ÀÌÅ© »óŸ¦ ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
ÇöÀçÀÇ SSLEngineResult.HandshakeStatus

setUseClientMode

public abstract void setUseClientMode(boolean mode)
ÇÚµå ½¦ÀÌÅ©½Ã, ¿£ÁøÀÌ Å¬¶óÀ̾ðÆ® (¶Ç´Â ¼­¹ö) ¸ðµå¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤ÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â ¸ðµç ÇÚµå ½¦ÀÌÅ©ÀÇ Àü¿¡ È£ÃâÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÀÏ´Ü ÇÚµå ½¦ÀÌÅ©°¡ °³½ÃµÇ¸é, ÀÌ ¿£ÁøÀÇ ¼ö¸íÀÌ ´ÙÇÒ ¶§±îÁö, ÇöÀçÀÇ ¸ðµå¸¦ ¸®¼Â ÇÒ ¼ö ¾ø½À´Ï´Ù.

º¸Åë, ¼­¹ö´Â ÀÚ½ÅÀ» ÀÎÁõÇÕ´Ï´Ù¸¸, Ŭ¶óÀ̾ðÆ®´Â ¹Ýµå½Ã ±×·¸´Ù°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
mode - ÇÚµå ½¦ÀÌÅ©¸¦ Ŭ¶óÀ̾ðÆ® ¸ðµå·Î °³½ÃÇÏ´Â °æ¿ì´Â true
¿¹¿Ü:
IllegalArgumentException - ÃÖÃÊÀÇ ÇÚµå ½¦ÀÌÅ©°¡ °³½ÃµÇ°í ³ª¼­ ¸ðµå¸¦ º¯°æÇÏ·Á°í ÇßÀ» °æ¿ì
°ü·Ã Ç׸ñ:
getUseClientMode()

getUseClientMode

public abstract boolean getUseClientMode()
ÇÚµå ½¦ÀÌÅ©½Ã¿¡ Ŭ¶óÀ̾ðÆ® ¸ðµå¸¦ »ç¿ëÇϵµ·Ï ¿£ÁøÀÌ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì´Â true

¹Ýȯ°ª:
Ŭ¶óÀ̾ðÆ® ¸ðµå·Î ÇÚµå ½¦ÀÌÅ©¸¦ ½Ç½ÃÇÏ´Â °æ¿ì´Â true
°ü·Ã Ç׸ñ:
setUseClientMode(boolean)

setNeedClientAuth

public abstract void setNeedClientAuth(boolean need)
Ŭ¶óÀ̾ðÆ® ÀÎÁõÀÌ Çʼö°¡ µÇ´Â °Í°°°Ô ¿£ÁøÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº ¼­¹ö ¸ðµåÀÇ ¿£Áø¸¸À¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿£ÁøÀÇ Å¬¶óÀ̾ðÆ® ÀÎÁõ ¼³Á¤Àº ´ÙÀ½ÀÇ ¾î´À ÂÊÀΰ¡¿¡ µË´Ï´Ù.

setWantClientAuth(boolean) ÀÎ °æ¿ì¿Í´Â ´Þ¶ó, ÀÌ ¿É¼ÇÀÌ ¼³Á¤µÇ¾î ÀÖ¾î, ÇÑÆí Ŭ¶óÀ̾ðÆ® ÀÎÁõ Á¤º¸°¡ Á¦°øµÇÁö ¾Ê´Â °æ¿ì´Â ³×°í½Ã¿¡À̼ÇÀÌ Á¤ÁöÇØ, ¿£ÁøÀº Á¾·á ÇÁ·Î½ÃÀú¸¦ °³½ÃÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇϸé, Áö±Ý±îÁö ÀÌ ¸Þ¼­µå ¶Ç´Â setWantClientAuth(boolean) ¿¡ ÀÇÇØ ¼³Á¤µÈ ³»¿ëÀÌ ¿À¹ö¶óÀ̵å(override) µË´Ï´Ù.

ÆĶó¹ÌÅÍ:
need - Ŭ¶óÀ̾ðÆ® ÀÎÁõÀÌ ÇʼöÀÇ °æ¿ì´Â true, Ŭ¶óÀ̾ðÆ® ÀÎÁõÀÌ ºÒÇÊ¿äÇÑ °æ¿ì´Â false
°ü·Ã Ç׸ñ:
getNeedClientAuth(), setWantClientAuth(boolean), getWantClientAuth(), setUseClientMode(boolean)

getNeedClientAuth

public abstract boolean getNeedClientAuth()
ÀÌ ¿£Áø¿¡ Ŭ¶óÀ̾ðÆ® ÀÎÁõÀÌ ÇʼöÀΰæ¿ì´Â true¸¦ ¸®ÅÏÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº ¼­¹ö ¸ðµåÀÇ ¿£Áø¸¸À¸·Î »ç¿ëÇÕ´Ï´Ù.

¹Ýȯ°ª:
Ŭ¶óÀ̾ðÆ® ÀÎÁõÀÌ ÇʼöÀÇ °æ¿ì´Â true, Ŭ¶óÀ̾ðÆ® ÀÎÁõÀÌ ºÒÇÊ¿äÇÑ °æ¿ì´Â false
°ü·Ã Ç׸ñ:
setNeedClientAuth(boolean), setWantClientAuth(boolean), getWantClientAuth(), setUseClientMode(boolean)

setWantClientAuth

public abstract void setWantClientAuth(boolean want)
Ŭ¶óÀ̾ðÆ® ÀÎÁõÀ» ¿ä±¸Çϵµ·Ï ¿£ÁøÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº ¼­¹ö ¸ðµåÀÇ ¿£Áø¸¸À¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿£ÁøÀÇ Å¬¶óÀ̾ðÆ® ÀÎÁõ ¼³Á¤Àº ´ÙÀ½ÀÇ ¾î´À ÂÊÀΰ¡¿¡ µË´Ï´Ù.

setNeedClientAuth(boolean) ¿Í ´Þ¸®, ÀÌ ¿É¼ÇÀÌ ¼³Á¤µÇ¾î ÀÖ¾î, ÇÑÆí Ŭ¶óÀ̾ðÆ® ÀÎÁõ Á¤º¸°¡ Á¦°øµÇÁö ¾Ê´Â °æ¿ì¿¡¼­µµ, ³×°í½Ã¿¡À̼ÇÀº ¼ÓÇàµË´Ï´Ù.

ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇϸé, Áö±Ý±îÁö ÀÌ ¸Þ¼­µå ¶Ç´Â setNeedClientAuth(boolean) ¿¡ ÀÇÇØ ¼³Á¤µÈ ³»¿ëÀÌ ¿À¹ö¶óÀ̵å(override) µË´Ï´Ù.

ÆĶó¹ÌÅÍ:
want - Ŭ¶óÀ̾ðÆ® ÀÎÁõÀÌ ¿ä±¸µÇ¾úÀ» °æ¿ì´Â true, Ŭ¶óÀ̾ðÆ® ÀÎÁõÀÌ ºÒÇÊ¿äÇÑ °æ¿ì´Â false
°ü·Ã Ç׸ñ:
getWantClientAuth(), setNeedClientAuth(boolean), getNeedClientAuth(), setUseClientMode(boolean)

getWantClientAuth

public abstract boolean getWantClientAuth()
ÀÌ ¿£ÁøÀÌ Å¬¶óÀ̾ðÆ® ÀÎÁõÀ» ¿ä±¸Çϴ°æ¿ì´Â true¸¦ ¸®ÅÏÇÕ´Ï´Ù. ÀÌ ¿É¼ÇÀº ¼­¹ö ¸ðµåÀÇ ¿£Áø¸¸À¸·Î »ç¿ëÇÕ´Ï´Ù.

¹Ýȯ°ª:
Ŭ¶óÀ̾ðÆ® ÀÎÁõÀÌ ¿ä±¸µÇ¾úÀ» °æ¿ì´Â true, Ŭ¶óÀ̾ðÆ® ÀÎÁõÀÌ ºÒÇÊ¿äÇÑ °æ¿ì´Â false
°ü·Ã Ç׸ñ:
setNeedClientAuth(boolean), getNeedClientAuth(), setWantClientAuth(boolean), setUseClientMode(boolean)

setEnableSessionCreation

public abstract void setEnableSessionCreation(boolean flag)
ÀÌ ¿£ÁøÀ¸·Î »õ·Î¿î SSL ¼¼¼ÇÀ» È®¸³ÇÒ ¼ö ÀÖÀ»Áö ¾î¶³Áö¸¦ Á¦¾îÇÕ´Ï´Ù. ¼¼¼ÇÀ» ÀÛ¼ºÇÏÁö ¸øÇÏ°í, Àç°³ÇÒ ¼ö ÀÖ´Â ±âÁ¸ÀÇ ¼¼¼ÇÀÌ ¾ø´Â °æ¿ì, ÇÚµå ½¦ÀÌÅ©´Â ¼º°øÇÏÁö ¾Ê½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
flag - ¼¼¼ÇÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Â °æ¿ì´Â true (µðÆúÆ®). ±âÁ¸ÀÇ ¼¼¼ÇÀ» Àç°³ÇÏ´Â °æ¿ì´Â false
°ü·Ã Ç׸ñ:
getEnableSessionCreation()

getEnableSessionCreation

public abstract boolean getEnableSessionCreation()
ÀÌ ¿£ÁøÀ¸·Î »õ·Î¿î SSL ¼¼¼ÇÀ» È®¸³ÇÒ ¼ö ÀÖ´Â °æ¿ì´Â true¸¦ ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
¼¼¼ÇÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ´Â °æ¿ì´Â true (µðÆúÆ®). ±âÁ¸ÀÇ ¼¼¼ÇÀ» Àç°³ÇÏ´Â °æ¿ì´Â false
°ü·Ã Ç׸ñ:
setEnableSessionCreation(boolean)

JavaTM 2 Platform
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.