Ê×Ò³
ѧϰ
»î¶¯
רÇø
¹¤¾ß
TVP
·¢²¼
¾«Ñ¡ÄÚÈÝ/¼¼ÊõÉçȺ/ÓŻݲúÆ·,¾¡ÔÚС³ÌÐò
Á¢¼´Ç°Íù

ÓÅ»¯ÄãµÄ HTTPS£¬ÄãÐèÒªÕâô×ö

HTTP/2

HTTP 2.0¼´³¬Îı¾´«ÊäЭÒé 2.0£¬ÊÇÏÂÒ»´úHTTPЭÒé¡£ÊÇÓÉ»¥ÁªÍø¹¤³ÌÈÎÎñ×飨IETF£©µÄHypertext Transfer Protocol Bis (httpbis)¹¤×÷С×é½øÐпª·¢¡£ÊÇ×Ô1999Äêhttp1.1·¢²¼ºóµÄÊ׸ö¸üУ¬HTTP/2 ЭÒéÊÇ´Ó SPDY Ñݱä¶øÀ´£¬SPDY ÒѾ­Íê³ÉÁËʹÃü²¢ºÜ¿ì¾Í»áÍ˳öÀúÊ·Îę̀£¨ÀýÈç Chrome ÔÚ¡¸2016 Äê³õ½áÊø¶Ô SPDY µÄÖ§³Ö¡¹£»NginxÔÚ°æ±¾1.9.5+£¬ApacheÔÚ°æ±¾2.4.16+¶¼ÒѾ­È«ÃæÖ§³ÖHTTP/2¡£

ÉÏͼÊÇAkamaiµÄHTTP/2 DEMO£¬Í¨¹ý¼ÓÔØ300ÕÅͼƬ£¬¶Ô±ÈHTTP/1.1ºÍHTTP/2£¬Ê×ÏÈÖ±¹ÛµØ¸ÐÊÜÒ»ÏÂHTTP/2£¬ÏÂÀ´½âÊÍÒ»ÏÂÕâ¸ö¸ÐÊܵÄÔ­Òò£¬¼´HTTP/2ÐÂÌØÐÔ£º

  • ¶þ½øÖÆ·ÖÖ¡
  • Êײ¿Ñ¹Ëõ
  • Á÷Á¿¿ØÖÆ
  • ¶à·¸´ÓÃ
  • ÇëÇóÓÅÏȼ¶
  • ·þÎñÆ÷ÍÆËÍ

¶þ½øÖÆ·ÖÖ¡

¶þ½øÖÆ·ÖÖ¡²ã£¬ÊÇHTTP2.0ÐÔÄÜÔöÇ¿µÄºËÐÄ

HTTP 1.xÔÚÓ¦ÓòãÒÔ´¿Îı¾µÄÐÎʽ½øÐÐͨÐÅ£¬HTTP2.0ÔÚ²»¸Ä±äHTTP1.xµÄÓïÒå¡¢·½·¨¡¢×´Ì¬Âë¡¢URLÒÔ¼°Êײ¿×ֶεÄÇé¿öÏ£¬ÎªÁËÍ»ÆÆÔ­ÓÐÐÔÄÜÏÞÖÆ£¬ÔÚÓ¦Óòã(HTTP)ºÍ´«Êä²ã(TCP)Ö®¼äÔö¼ÓÁËÒ»¸ö¶þ½øÖÆ·ÖÖ¡²ã¡£HTTP2.0½«ËùÓеĴ«ÊäÐÅÏ¢·Ö¸îΪ¸üСµÄÏûÏ¢ºÍÖ¡£¬²¢¶ÔËüÃDzÉÓöþ½øÖƸñʽ±àÂ룬ÈçÏÂͼËùʾ

ÕâÀïÒýÈëÒ»¸öеÄͨÐŵ¥Î»£ºÖ¡

Ö¡ÊÇHTTP 2.0ͨÐŵÄ×îСµ¥Î»£¬°üÀ¨Ö¡Êײ¿¡¢Á÷±êʶ·û¡¢ÓÅÏÈÖµºÍÖ¡¾»ºÉµÈ

ÆäÖУ¬Ö¡ÀàÐÍ¿ÉÒÔ·ÖΪ£º

  • DATA£ºÓÃÓÚ´«ÊäHTTPÏûÏ¢Ìå
  • HEADERS£ºÓÃÓÚ´«ÊäÊײ¿×Ö¶Î
  • SETTINGS£ºÓÃÓÚÔ¼¶¨¿Í»§¶ËºÍ·þÎñ¶ËµÄÅäÖÃÊý¾Ý¡£±ÈÈçÉèÖóõʶµÄË«ÏòÁ÷Á¿¿ØÖÆ´°¿Ú´óС
  • WINDOW_UPDATE£ºÓÃÓÚµ÷Õû¸ö±ðÁ÷»ò¸ö±ðÁ¬½ÓµÄÁ÷Á¿
  • PRIORITY£ºÓÃÓÚÖ¸¶¨»òÖØÐÂÖ¸¶¨ÒýÓÃ×ÊÔ´µÄÓÅÏȼ¶
  • RST_STREAM£ºÓÃÓÚ֪ͨÁ÷µÄ·ÇÕý³£ÖÕÖ¹
  • PUSH_ PROMISE£º·þÎñ¶ËÍÆËÍÐí¿É
  • PING£ºÓÃÓÚ¼ÆËãÍù·µÊ±¼ä£¬Ö´ÐС° »îÐÔ¡± ¼ì»î
  • GOAWAY£ºÓÃÓÚ֪ͨ¶Ô¶ËÍ£Ö¹ÔÚµ±Ç°Á¬½ÓÖд´½¨Á÷

±ê־룬ÓÃÓÚ²»Í¬µÄÖ¡ÀàÐͶ¨ÒåÌض¨µÄÏûÏ¢±êÖ¾¡£±ÈÈçDATAÖ¡¾Í¿ÉÒÔʹÓÃEnd Stream: true±íʾ¸ÃÌõÏûϢͨÐÅÍê±Ï£»Á÷±êʶλ±íʾ֡ËùÊôµÄÁ÷ID£»ÓÅÏÈÖµÓÃÓÚHEADERSÖ¡£¬±íʾÇëÇóÓÅÏȼ¶£»R±íʾ±£Áô¡£

ÏÂÃæÊÇ×¥°üµÄÒ»¸öHEADERSÖ¡£º

ÁíÍâÒ»¸öÁ½¸öҪ˵һϵĸÅÄÏûÏ¢ºÍÁ÷

ÏûÏ¢ÊÇÖ¸Âß¼­ÉϵÄHTTPÏûÏ¢(ÇëÇó/ÏìÓ¦)£¬Ò»ÏµÁÐÊý¾ÝÖ¡×é³ÉÒ»¸öÍêÕûµÄÏûÏ¢£¬±ÈÈçһϵÁÐDATAÖ¡ºÍÒ»¸öHEADERSÖ¡×é³ÉÁËÇëÇóÏûÏ¢¡£

Á÷ÊÇÁ´½ÓÖеÄÒ»¸öÐéÄâÐŵÀ£¬¿ÉÒÔ³ÐÔØË«ÏòÏûÏ¢´«Ê䣬ÿ¸öÁ÷ÓÐΨһ֤Êé±êʶ·û£¬ÎªÁË·ÀÖ¹Á½¶ËÁ÷ID³åÍ»£¬¿Í»§¶Ë·¢ÆðµÄÁ÷¾ßÓÐÆæÊýID£¬·þÎñ¶Ë·¢ÆðµÄÁ÷¾ßÓÐżÊýID¡£

ËùÓÐHTTP 2.0ͨÐŶ¼ÔÚÒ»¸öTCPÁ´½ÓÉÏÍê³É£¬Õâ¸öÁ´½Ó¿ÉÒÔ³ÐÔØÈÎÒâÊýÁ¿µÄË«ÏòÊý¾ÝÁ÷Stream¡£ÏàÓ¦µØ£¬Ã¿¸öÊý¾ÝÁ÷ÒÔÏûÏ¢µÄÐÎʽ·¢ËÍ£¬¶øÏûÏ¢ÓÉÒ»¸ö»ò¶à¸öÖ¡×é³É£¬ÕâЩ֡¿ÉÒÔÂÒÐò·¢ËÍ£¬È»ºó¸ù¾Ýÿ¸öÖ¡Êײ¿µÄÁ÷±êʶ·ûÖØÐÂ×é×°¡£

¶þ½øÖÆ·ÖÖ¡Ö÷ÒªÊÇΪHTTP2.0ÆäËûÌØÐÔÌṩ»ù´¡¡£ËüÄÜ°ÑÒ»¸öÊý¾Ý»®·Ö·âװΪ¸üС¸ü±ã½ÝµÄÊý¾Ý¡£Ê×ÏÈÊÇÔÚµ¥Á´¶à×ÊÔ´·½Ê½ÖУ¬¼õÉÙ·þÎñ¶ËµÄÁ´½ÓѹÁ¦£¬ÄÚ´æÕ¼ÓøüÉÙ£¬Á´½ÓÍÌÍÂÁ¿¸ü´ó£»ÁíÒ»·½Ã棬ÓÉÓÚTCPÁ´½ÓµÄ¼õÉÙ¶øʹÍøÂçÓµÈû״̬µÃÒÔ¸ÄÉÆ£¬Í¬Ê±ÂýÆô¶¯Ê±¼ä¼õÉÙ£¬Ê¹ÓµÈûºÍ¶ª°ü»Ö¸´µÄËٶȸü¿ì¡£

Êײ¿Ñ¹Ëõ

HTTP1.xÿ´ÎͨÐÅ(ÇëÇó»òÏìÓ¦)¶¼»áЯ´øÊײ¿ÐÅÏ¢ÓÃÓÚÃèÊö×ÊÔ´ÊôÐÔ¡£¶øHTTP2.0ÔÚ¿Í»§¶ËºÍ·þÎñ¶ËÖ®¼äʹÓÃÊײ¿±íÀ´¸ú×ٺʹ洢֮ǰ·¢Ë͵ļüÖµ¶Ô£¬Êײ¿±íÔÚÁ¬½Ó¹ý³ÌÖÐʼÖÕ´æÔÚ£¬ÐÂÔöµÄ¼üÖµ¶Ô»á¸üе½±í⣬Òò´Ë²»ÐèҪÿ´ÎͨÐŶ¼Ð¯´øÊײ¿£¬ÇëÇóÓëÏìÓ¦Êײ¿µÄ¶¨ÒåÔÚHTTP2.0Öлù±¾Ã»Óб䡣

ÁíÍâHTTP2.0ʹÓÃÁËÊײ¿Ñ¹Ëõ¼¼Êõ£¬Ñ¹ËõËã·¨²ÉÓÃHPACK£¬Èñ¨Í·¸ü½ô´Õ¡¢¸ü¿ìËÙ´«Ê䣬ÓÐÀûÓÚÒƶ¯ÍøÂç»·¾³¡£ÐèҪעÒâµÄÊÇ£¬HTTP2.0µÄÊײ¿Ñ¹Ëõ£¬ÓëÎÒÃdz£ÓõÄgzipµÈ±¨ÎÄÄÚÈÝѹËõ²»³åÍ»¡£

Á÷Á¿¿ØÖÆ

HTTP/2.0 ¡°Á÷¡±µÄÁ÷Á¿¿ØÖƵÄÄ¿±êÊÇ£ºÔÚ²»¸Ä±äЭÒéµÄÇé¿öÏÂÔÊÐíʹÓöàÖÖÁ÷Á¿¿ØÖÆËã·¨

Á÷Á¿¿ØÖÆÊÇÌض¨ÓÚÒ»¸öÁ¬½ÓµÄ¡£Ã¿ÖÖÀàÐ͵ÄÁ÷Á¿¿ØÖƶ¼ÊÇÔÚµ¥¶ÀµÄÒ»ÌøµÄÁ½¸ö¶ËµãÖ®¼äµÄ£¬²¢²»ÊÇÔÚÕû¸ö¶Ëµ½¶ËµÄ·¾¶Éϵġ££¨ÕâÀïµÄÒ»ÌøÖ¸µÄÊÇHTTPÁ¬½ÓµÄÒ»Ìø£¬¶ø²»ÊÇIP·ÓɵÄÒ»Ìø£©

Á÷Á¿¿ØÖÆÊÇ»ùÓÚWINDOW_UPDATEÖ¡µÄ¡£½ÓÊÕ·½¹«²¼×Ô¼º´òËãÔÚÿ¸öÁ÷ÒÔ¼°Õû¸öÁ¬½ÓÉÏ·Ö±ð½ÓÊÕ¶àÉÙ×Ö½Ú¡£ÕâÊÇÒ»¸öÒÔÐÅÓÃΪ»ù´¡µÄ·½°¸¡£

Á÷Á¿¿ØÖÆÊÇÓз½ÏòµÄ£¬ÓɽÓÊÕÕßÈ«Ãæ¿ØÖÆ¡£½ÓÊÕ·½¿ÉÒÔΪÿ¸öÁ÷ºÍÕû¸öÁ¬½ÓÉèÖÃÈÎÒâµÄ´°¿Ú´óС¡£·¢ËÍ·½±ØÐë×ðÖؽÓÊÕ·½ÉèÖõÄÁ÷Á¿¿ØÖÆÏÞÖÆ¡£¿Í»§·½¡¢·þÎñ¶ËºÍÖмä´úÀí×÷Ϊ½ÓÊÕ·½Ê±¶¼¶ÀÁ¢µØ¹«²¼¸÷×ÔµÄÁ÷Á¿¿ØÖÆ´°¿Ú£¬×÷Ϊ·¢ËÍ·½Ê±¶¼×ñÊضԶ˵ÄÁ÷Á¿¿ØÖÆÉèÖá£

ÎÞÂÛÊÇÐÂÁ÷»¹ÊÇÕû¸öÁ¬½Ó£¬Á÷Á¿¿ØÖÆ´°¿ÚµÄ³õʼֵÊÇ65535×Ö½Ú¡£

Ö¡µÄÀàÐ;ö¶¨ÁËÁ÷Á¿¿ØÖÆÊÇ·ñÊÊÓÃÓÚÖ¡¡£Ä¿Ç°£¬Ö»ÓÐDATAÖ¡·þ´ÓÁ÷Á¿¿ØÖÆ£¬ËùÓÐÆäËüÀàÐ͵ÄÖ¡²¢²»ÏûºÄÁ÷Á¿¿ØÖÆ´°¿ÚµÄ¿Õ¼ä¡£Õâ±£Ö¤ÁËÖØÒªµÄ¿ØÖÆÖ¡²»»á±»Á÷Á¿¿ØÖÆ×èÈû¡£

Á÷Á¿¿ØÖƲ»Äܱ»½ûÓá£

HTTP/2Ö»¶¨ÒåÁËWINDOW_UPDATEÖ¡µÄ¸ñʽºÍÓïÒ壬²¢Ã»Óй涨½ÓÊÕ·½ÈçºÎ¾ö¶¨ºÎʱ·¢ËÍÖ¡¡¢·¢ËÍʲôÑùµÄÖµ£¬Ò²Ã»Óй涨·¢ËÍ·½ÈçºÎÑ¡Ôñ·¢ËÍ°ü¡£¾ßÌåʵÏÖ¿ÉÒÔÑ¡ÔñÈκÎÂú×ãÐèÇóµÄËã·¨¡£

¶à·¸´ÓÃ

ÔÚHTTP1.1ÖУ¬ä¯ÀÀÆ÷¿Í»§¶ËÔÚͬһʱ¼ä£¬Õë¶ÔͬһÓòÃûϵÄÇëÇóÓÐÒ»¶¨ÊýÁ¿µÄÏÞÖÆ¡£³¬¹ýÏÞÖÆÊýÄ¿µÄÇëÇó»á±»×èÈû£¬¶øHTTP2.0ÖеĶà·¸´ÓÃÓÅ»¯ÁËÕâÒ»ÐÔÄÜ¡£

»ùÓÚ¶þ½øÖÆ·ÖÖ¡²ã£¬HTTP2.0¿ÉÒÔÔÚ¹²ÏíTCPÁ¬½ÓµÄ»ù´¡ÉÏ£¬Í¬Ê±·¢ËÍÇëÇóºÍÏìÓ¦¡£HTTPÏûÏ¢±»·Ö½âΪ¶ÀÁ¢µÄÖ¡£¬¶ø²»ÆÆ»µÏûÏ¢±¾ÉíµÄÓïÒ壬½»´í·¢ËͳöÈ¥£¬×îºóÔÚÁíÒ»¶Ë¸ù¾ÝÁ÷IDºÍÊײ¿½«ËûÃÇÖØÐÂ×éºÏ¡£¶Ô±È¿´Ò»ÏÂHTTP1.xºÍHTTP2.0£¬ÕâÀï²»¿¼ÂÇHTTP1.xµÄpipeline»úÖÆ¡£

HTTP2.0³É¹¦½â¾öÁËHTTP1.xµÄ¶ÓÊ××èÈûÎÊÌâ(TCP²ãµÄ×èÈûÈÔÎÞ·¨½â¾ö)£¬Í¬Ê±£¬Ò²²»ÐèҪͨ¹ýpipeline»úÖƶàÌõTCPÁ¬½ÓÀ´ÊµÏÖ²¢ÐÐÇëÇóÓëÏìÓ¦¡£¼õÉÙÁËTCPÁ¬½ÓÊý¶Ô·þÎñÆ÷ÐÔÄÜÓкܴóÌáÉý£¬Í¬Ê±Ò²Ïû³ý²»±ØÒªµÄÑÓ³Ù£¬´Ó¶ø¼õÉÙÒ³Ãæ¼ÓÔصÄʱ¼ä¡£

ÇëÇóÓÅÏȼ¶

°ÑHTTPÏûÏ¢·ÖΪºÜ¶à¶ÀÁ¢Ö¡Ö®ºó£¬¾Í¿ÉÒÔͨ¹ýÓÅ»¯ÕâЩ֡µÄ½»´íºÍ´«Êä˳Ðò½øÒ»²½ÓÅ»¯ÐÔÄÜ¡£

ÿ¸öÁ÷¶¼¿ÉÒÔ´øÓÐÒ»¸ö31bitµÄÓÅÏÈÖµ£º0±íʾ×î¸ßÓÅÏȼ¶£»2µÄ31´Î·½-1±íʾ×îµÍÓÅÏȼ¶¡£

¿Í»§¶ËÃ÷È·Ö¸¶¨ÓÅÏȼ¶£¬·þÎñ¶Ë¿ÉÒÔ¸ù¾ÝÕâ¸öÓÅÏȼ¶×÷Ϊ½»»¥Êý¾ÝµÄÒÀ¾Ý£¬±ÈÈç¿Í»§¶ËÓÅÏÈÉèÖÃΪ.css>.js>.jpg¡£·þÎñ¶Ë°´´Ë˳Ðò·µ»Ø½á¹û¸ü¼ÓÓÐÀûÓÚ¸ßЧÀûÓõײãÁ¬½Ó£¬Ìá¸ßÓû§ÌåÑ顣Ȼ¶ø£¬ÔÚʹÓÃÇëÇóÓÅÏȼ¶Ê±Ó¦×¢Òâ·þÎñ¶ËÊÇ·ñÖ§³ÖÇëÇóÓÅÏȼ¶£¬ÊÇ·ñ»áÒýÆð¶ÓÊ××èÈûÎÊÌ⣬±ÈÈç¸ßÓÅÏȼ¶µÄ ÂýÏìÓ¦ÇëÇó»á×èÈûÆäËû×ÊÔ´µÄ½»»¥¡£

·þÎñÆ÷ÍÆËÍ

HTTP2.0Ôö¼ÓÁË·þÎñ¶ËÍÆË͹¦ÄÜ£¬·þÎñ¶Ë¿ÉÒÔ¸ù¾Ý¿Í»§¶ËµÄÇëÇó£¬ÌáÇ°·µ»Ø¶à¸öÏìÓ¦£¬ÍÆËͶîÍâµÄ×ÊÔ´¸ø¿Í»§¶Ë

ÈçÏÂͼ£¬¿Í»§¶ËÇëÇóstream 1(/page.html)¡£·þÎñÆ÷ÔÚ·µ»Østream 1µÄÏûÏ¢µÄͬʱÍÆËÍÁËstream 2(/script.js)ºÍstream4(/style.css)

  • PUSH_PROMISEÖ¡ÊÇ·þÎñ¶ËÏò¿Í»§¶ËÓÐÒâÍÆËÍ×ÊÔ´µÄÐźš£
  • PUSH_PROMISEÖ¡ÖÐÖ»°üº¬Ô¤ÍÆËÍ×ÊÔ´µÄÊײ¿¡£Èç¹û¿Í»§¶Ë¶ÔPUSH_PROMISE֡ûÓÐÒâ¼û£¬·þÎñ¶ËÔÚPUSH_PROMISEÖ¡ºó·¢ËÍÏìÓ¦µÄDATAÖ¡¡£Èç¹û¿Í»§¶ËÒѾ­»º´æÁ˸Ã×ÊÔ´£¬²»ÐèÒªÍÆËÍ£¬¿ÉÒԾܾøPUSH_PROMISEÖ¡¡£
  • PUSH-PROMISE±ØÐë×ñÑ­ÇëÇó-ÏìÓ¦Ô­Ôò£¬Ö»Äܽè×ŶÔÇëÇóµÄÏìÓ¦ÍÆËÍ×ÊÔ´¡£
  • PUSH_PROMISEÖ¡±ØÐëÔÚ·µ»ØÏìӦ֮ǰ·¢ËÍ£¬ÒÔÃâ¿Í»§¶Ë³öÏÖ¾ºÌ¬Ìõ¼þ£¨¾ºÌ¬Ìõ¼þÊÇÖ¸ÔÚ¶àÏ̵߳ÄÇé¿öϲ»Í¬µÄÖ´ÐÐ˳Ðò»áµ¼Ö¼ÆËã»úÖ´Ðгö²»Í¬µÄ½á¹ûÕýÈ·ÐÔ²»Í¬£©
  • HTTP2.0Á¬½Óºó£¬¿Í»§¶ËÓë·þÎñ¶Ë½»»»SETTINGSÖ¡£¬½è´ËÏÞ¶¨Ë«Ïò²¢·¢µÄ×î´óÊýÁ¿¡£Òò´Ë£¬¿Í»§¶Ë¿ÉÒÔÏÞ¶¨ÍÆËÍÁ÷µÄÊýÁ¿£¬»òÕßͨ¹ý°ÑÕâ¸öÖ»ÉèÖÃΪ0À´ÍêÈ«½ûÖ¹·þÎñÆ÷ÍÆËÍ¡£
  • ËùÓÐÍÆË͵Ä×ÊÔ´¶¼±ØÐë×ñÊØͬԴ²ßÂÔ¡£»»¾ä»°Ëµ£¬·þÎñÆ÷²»ÄÜËæ±ã½«µÚÈý·½×ÊÔ´ÍÆË͸ø¿Í»§¶Ë£¬¶ø±ØÐëÊǾ­¹ýË«·½µÄÈ·ÈϲÅÐС£

HTTP/2ÏÖÔÚÒѾ­»ñµÃ¾ø´ó¶àÊýä¯ÀÀÆ÷µÄÖ§³Ö£¬²»¹ýÔÚʹÓùý³ÌÖÐHTTP/2ÐèҪʹÓÃ1.0.1eÖ®ºóµÄopenssl°æ±¾£¬Í¨¹ýnginx -V£¬¿ÉÒԲ鿴nginxµÄopenssl°æ±¾£¬Èç¹û°æ±¾µÍ£¬ÖØбàÒënginx¼´¿É¡£

ÄÇôÔÚnginxÖÐÈçºÎÅäÖÃÖ§³ÖHTTP/2£¿ºÜ¼òµ¥£¬Ö»ÐèÒªÔÚserverÖеÄlisten²¿·ÖÌí¼Óhttp2¼´¿É¡£

Ôõô²âÊÔhttp2ÊÇ·ñÒÑ¿ªÆô£¬·½·¨ºÜ¶à£¬ÕâÀï½éÉÜÈýÖÖ·½·¨£º

1¡¢ä¯ÀÀÆ÷¿ª·¢Õß¹¤¾ß

2¡¢ChromeÀ©Õ¹HTTP/2 and SPDY indicator

3¡¢ÃüÁîÐпͻ§¶Ënghttp

ÁíÍâHTTP/2µÄ·þÎñÆ÷ÍÆËÍ£¬ÐèÒªnginxÅäÖòÅÄÜÓÐЧÀûÓá£

ͨ¹ýhttp2_pushÖ¸ÁîÅäÖÃ

ÕâÖÖÇé¿öÏ£¬demo.htmlÐèÒªÓõ½µÄ×ÊÔ´style.css¡¢image1.jpgºÍimage2.jpg±»ÍÆË͵½¿Í»§¶Ë¡£×ÊÔ´ÉÙµÄÇé¿öÏ£¬ÎÒÃÇ¿ÉÒÔÕâôʹÓ㬵«ÊÇ×ÊÔ´¶àµÄÇé¿öÏÂÕâÖÖ·½Ê½¾Í²»Ì«ÏÖʵ¡£

×Ô¶¯½«×ÊÔ´ÍÆË͸ø¿Í»§¶Ë

nginxÖ§³ÖÀ¹½ØlinkÔ¤¼ÓÔØÍ·µÄÔ¼¶¨£¬ÍÆËÍÕâдͷÖбêʶµÄ×ÊÔ´£¬ÐèÒªÔÚÅäÖÃÖÐÆô¶¯Ô¤¼ÓÔØ£¬ÅäÖÃhttp2_push_preload on

ÕâÀïÒ²ÓÐÒ»¸öÎÊÌ⣬һ°ãµÄ¾²Ì¬×ÊÔ´£¬ÎÒÃǶ¼»áÉèÖûº´æÓÐЧÆÚ¡£µ±¿Í»§¶Ë×ÊÔ´ÔÚ»º´æÓÐЧÆÚÄÚµÄʱºò£¬ÎÒÃÇÇ¿ÖÆÍÆË;²Ì¬×ÊÔ´£¬Ö»»áÔö¼Ó·þÎñÆ÷´ø¿íµÄѹÁ¦£¬ËùÒÔÎÒÃÇÐèÒªÖ¸¶¨¿Í»§¶ËÊÇ·ñÐèÒªÕâЩ×ÊÔ´£¬²¢ÇÒ²»Ì«¿ÉÄÜÒѾ­»º´æ¹ý£¬¿ÉÄܵķ½·¨£¬¾ÍÊÇ¿Í»§¶ËÔÚÊ״ηÃÎÊʱ·þÎñ¶ËÍÆËÍ£¬²¢ÔÚËæºóµÄ·ÃÎÊÇëÇóÖаüº¬cookie£¬·þÎñ¶Ëͨ¹ýcookieÈ¥ÅжÏÊÇ·ñ½øÐÐÍÆËÍ£¬¾ÍÊÇÓÐÑ¡ÔñµÄÏò¿Í»§¶ËÍÆËÍ×ÊÔ´£¬ÅäÖ÷½·¨ÈçÏ£º

²âÊÔÈçÏ£º

TLS 1.3

TLS(Transport Layer Security Protocol£¬´«Êä²ã°²È«Ð­Òé)Ö÷ҪĿµÄÊÇÌṩÒþ˽ºÍÊý¾ÝÁÁ¸çͨÐÅÓ¦ÓÃÖ®¼äµÄÍêÕûÐÔ¡£¸ÃЭÒéÓÉÁ½²ã×é³É£ºTLS¼Ç¼ЭÒé(TLS Record)ºÍTLSÎÕÊÖЭÒé(TLS Handshake)¡£

TLSЭÒé¾­¹ýºÜ¶à´Î°æ±¾µÄ¸üУ¬Ä¿Ç°µÍ°æ±¾µÄTLS£¬ÈçSSL 3.0/TLS 1.0µÈ£¬´æÔÚÐí¶àÑÏÖØ©¶´£¬Ä¿Ç°Êܵ½Ö÷Á÷Ö§³ÖµÄTLSЭÒé°æ±¾ÊÇ1.1ºÍ1.2£¬µ«Ò²¶¼ÒѾ­ÂäºóÓÚʱ´úµÄÐèÇó¡£ÔÚ2018Äê8Ô·ݣ¬IETFÖÕÓÚÐû²¼TLS 1.3¹æ·¶Õýʽ·¢²¼ÁË£¬±ê×¼¹æ·¶¶¨ÒåÔÚrfc8446¡£

Ïà½ÏÓÚ֮ǰµÄ°æ±¾TLSÓÅ»¯ÄÚÈÝÓУº

  • Ïà±È¹ýÈ¥µÄµÄ°æ±¾£¬ÒýÈëÁËеÄÃÜԿЭÉÌ»úÖÆ ¡ª PSK
  • Ö§³Ö 0-RTT Êý¾Ý´«Ê䣬ÔÚ½¨Á¢Á¬½Óʱ½ÚÊ¡ÁËÍù·µÊ±¼ä
  • ·ÏÆúÁË 3DES¡¢RC4¡¢AES-CBC µÈ¼ÓÃÜ×é¼þ£¬·ÏÆúÁË SHA1¡¢MD5 µÈ¹þÏ£Ëã·¨
  • ServerHello Ö®ºóµÄËùÓÐÎÕÊÖÏûÏ¢²ÉÈ¡Á˼ÓÃܲÙ×÷£¬¿É¼ûÃ÷ÎÄ´ó´ó¼õÉÙ
  • ²»ÔÙÔÊÐí¶Ô¼ÓÃܱ¨ÎĽøÐÐѹËõ¡¢²»ÔÙÔÊÐíË«·½·¢ÆðÖØЭÉÌ
  • DSA Ö¤Êé²»ÔÙÔÊÐíÔÚ TLS 1.3 ÖÐʹÓÃ

ÔÚhttpsÖУ¬Ã¿¸öÁ¬½ÓµÄTLSµÄÎÕÊÖÊǺÜÏûºÄ×ÊÔ´¼°Ê±¼äµÄ£¬ËùÒÔTLS 1.3µÄÓÅ»¯£¬±È֮ǰµÄ°æ±¾½¨Á¢Á¬½ÓµÄʱ¼äÉÙÁËÒ»¸öRTT£¬Í¬µÈÇé¿öÏ£¬½ÚÊ¡Á˺ܶàʱ¼ä£¬Ìá¸ßÁËÏìÓ¦Ëٶȡ£

TLS 1.3ÐèÒªopenssl 1.1.1Ö§³Ö£¬ÔÚnginxÉÏ£¬ÐèÒªnginx 1.13+Ö§³Ö¡£

ÔÚ±àÒënginxµÄʱºò£¬ÐèÒªÌí¼Ó±àÒë²ÎÊý--with-openssl-opt=enable-tls1_3À´¿ªÆôTLS 1.3Ö§³Ö£¬²¢ÔÚÅäÖÃÖÐssl_protocolsÖÐÌí¼ÓTLSv1.3£¬¶ÔÓ¦µÄTLS1.3ÒýÈëÁËеÄËã·¨£¬ËùÒÔssl_ciphersÒ²ÐèÒªÌí¼ÓÐÂËã·¨

ĬÈÏÇé¿öÏÂnginxÒòΪ°²È«Ô­Òò£¬Ã»ÓпªÆôTLS 1.3µÄ 0-RTT£¬¿ÉÒÔͨ¹ýÖ¸Áîssl_early_data onÀ´¿ªÆô¡£

ECC

ECC(Elliptic curve cryptography£¬ÍÖÔ²ÇúÏßÃÜÂëѧ)£¬Ò»ÖÖ½¨Á¢¹«¿ªÃÜÔ¿µÄËã·¨£¬»ùÓÚÍÖÔ²ÇúÏßÊýѧ¡£

ÄÚÖÃECDSA¹«Ô¿µÄÖ¤ÊéÒ»°ã³ÆΪECCÖ¤Ê飬ÄÚÖÃRSA¹«Ô¿µÄÖ¤ÊéÒ»°ã³ÆΪRSAÖ¤Êé¡£

ECCËã·¨µÄÊýѧÀíÂ۷dz£Éî°ÂºÍ¸´ÔÓ£¬ÔÚ¹¤³ÌÓ¦ÓÃÖбȽÏÄÑÓÚʵÏÖ£¬µ«ËüµÄµ¥Î»°²È«Ç¿¶ÈÏà¶Ô½Ï¸ß£¬ËüµÄÆÆÒë»òÇó½âÄѶȻù±¾ÉÏÊÇÖ¸Êý¼¶µÄ£¬ºÚ¿ÍºÜÄÑÓÃͨ³£Ê¹Óõı©Á¦ÆƽâµÄ·½·¨À´Æƽ⡣RSAËã·¨µÄÌصãÖ®Ò»ÊÇÊýѧԭÀíÏà¶Ô¼òµ¥£¬ÔÚ¹¤³ÌÓ¦ÓÃÖбȽÏÒ×ÓÚʵÏÖ£¬µ«ËüµÄµ¥Î»°²È«Ç¿¶ÈÏà¶Ô½ÏµÍ¡£Òò´Ë£¬ECCËã·¨µÄ¿ÉÒÔÓýÏÉٵļÆËãÄÜÁ¦Ìṩ±ÈRSA¼ÓÃÜËã·¨¸ü¸ßµÄ°²È«Ç¿¶È£¬ÓÐЧµØ½â¾öÁË¡°Ìá¸ß°²È«Ç¿¶È±ØÐëÔö¼ÓÃÜÔ¿³¤¶È¡±µÄ¹¤³ÌʵÏÖÎÊÌâ¡£

ÓëRSAËã·¨Ïà±È£¬ECCËã·¨ÓµÓÐÒ»ÏÂÓÅÊÆ£º

  • ¸üÊʺÏÓÚÒƶ¯»¥ÁªÍø£ºECC¼ÓÃÜËã·¨µÄÃÜÔ¿³¤¶ÈºÜ¶Ì(256λ)£¬Òâζ×ÅÕ¼ÓøüÉٵĴ洢¿Õ¼ä£¬¸üµÍµÄCPU¿ªÏúºÍÕ¼ÓøüÉٵĴø¿í¡£Ëæ×ÅÔ½À´Ô½¶àµÄÓû§Ê¹ÓÃÒƶ¯É豸À´Íê³É¸÷ÖÖÍøÉϻ£¬ECC¼ÓÃÜË㷨ΪÒƶ¯»¥ÁªÍø°²È«Ìṩ¸üºÃµÄ¿Í»§ÌåÑé¡£
  • ¸üºÃµÄ°²È«ÐÔ£ºECC¼ÓÃÜËã·¨Ìṩ¸üÇ¿µÄ±£»¤£¬±ÈÄ¿Ç°µÄÆäËû¼ÓÃÜËã·¨ÄܸüºÃµÄ·ÀÖ¹¹¥»÷£¬Ê¹ÄãµÄÍøÕ¾ºÍ»ù´¡ÉèÊ©±ÈÓô«Í³µÄ¼ÓÃÜ·½·¨¸ü°²È«£¬ÎªÒƶ¯»¥ÁªÍø°²È«Ìṩ¸üºÃµÄ±£ÕÏ¡£
  • ¸üºÃµÄÐÔÄÜ£ºECC¼ÓÃÜËã·¨ÐèÒª½Ï¶ÌµÄÃÜÔ¿³¤¶ÈÀ´Ìṩ¸üºÃµÄ°²È«£¬ÀýÈ磬256λµÄECCÃÜÔ¿¼ÓÃÜÇ¿¶ÈµÈͬÓÚ3072λRSAÃÜÔ¿µÄˮƽ(Ä¿Ç°ÆÕͨʹÓõÄRSAÃÜÔ¿³¤¶ÈÊÇ2048λ)¡£Æä½á¹ûÊÇÄãÒÔ¸üµÍµÄ¼ÆËãÄÜÁ¦´ú¼ÛµÃµ½Á˸ü¸ßµÄ°²È«ÐÔ¡£¾­¹úÍâÓйØȨÍþ»ú¹¹²âÊÔ£¬ÔÚApacheºÍIIS·þÎñÆ÷²ÉÓÃECCËã·¨£¬Web·þÎñÆ÷ÏìӦʱ¼ä±ÈRSA¿ìÊ®¼¸±¶¡£
  • ¸ü´óµÄITͶ×ʻر¨£ºECC¿É°ïÖú±£»¤ÄúµÄ»ù´¡ÉèÊ©µÄͶ×Ê£¬Ìṩ¸ü¸ßµÄ°²È«ÐÔ£¬²¢¿ìËÙ´¦Àí±¬Õ¨Ôö³¤µÄÒƶ¯É豸µÄ°²È«Á¬½Ó¡£ECCµÄÃÜÔ¿³¤¶ÈÔö¼ÓËٶȱÈÆäËûµÄ¼ÓÃÜ·½·¨¶¼Âý(Ò»°ã°´128λÔö³¤£¬¶ø RSAÔòÊDZ¶ÊýÔö³¤£¬È磺1024 ¨C2048--4096)£¬½«ÑÓ³¤ÄúÏÖÓÐÓ²¼þµÄʹÓÃÊÙÃü£¬ÈÃÄúµÄͶ×Ê´øÀ´¸ü´óµÄ»Ø±¨¡£

²»¹ýʹÓÃECCÖ¤ÊéÓÐÁ½¸öÎÊÌâÐèҪעÒ⣺

1¡¢²»ÊÇËùÓÐÀàÐÍÖ¤Ê鶼֧³ÖECC£¬Ò»°ãÐèÒªÉÌÒµÖ¤ÊéµÄÔöÇ¿°æ±¾ÖвÅÖ§³Ö

2¡¢Ò»Ð©¾ÉµÄÉ豸»òä¯ÀÀÆ÷²»Ö§³ÖECC£¬¿ÉÄÜÐèÒªECC+RSAË«Ö¤ÊéµÄģʽÀ´Ê¹ÓÃ

Brotli

BrotliÊÇGoogleÓÚ2015Äê9ÔÂÍƳöµÄÎÞËðѹËõËã·¨£¬Brotliͨ¹ý±äÖÖµÄLZ77Ëã·¨¡¢Huffman±àÂëÒÔ¼°¶þ½×Îı¾½¨Ä£µÈ·½Ê½½øÐÐÊý¾ÝѹËõ£¬ÓëÆäËûѹËõËã·¨Ïà±È£¬ËüÓÐÕ߸ü¸ßµÄѹËõЧÂÊ¡£

¸ü¾ßGoogle·¢²¼µÄ±¨¸æÖ¸³ö£¬BrotliÓÐÒ»ÏÂÌص㣺

  • Õë¶Ô³£¼ûµÄ Web ×ÊÔ´ÄÚÈÝ£¬Brotli µÄÐÔÄÜÏà±È Gzip Ìá¸ßÁË 17-25%£»
  • µ± Brotli ѹËõ¼¶±ðΪ 1 ʱ£¬Ñ¹ËõÂÊ±È Gzip ѹËõµÈ¼¶Îª 9£¨×î¸ß£©Ê±»¹Òª¸ß£»
  • ÔÚ´¦Àí²»Í¬ HTML ÎĵµÊ±£¬Brotli ÒÀÈ»Äܹ»Ìṩ·Ç³£¸ßµÄѹËõÂÊ¡£

BrotliµÄÖ§³Ö±ØÐëÒÀÀµHTTPS£¬nginxÖ§³ÖBrotli±ØÐë±à¼­Ìí¼ÓbrotliÄ£¿é

brotliÄ£¿éÔ´ÂëµØÖ·https://github.com/eustas/ngx_brotli.git£¬ÏÂÔØÖ®ºó£¬ÔÚnginx±àÒëµÄʱºòͨ¹ý±àÒë²ÎÊý--add-module=/path/to/ngx_brotli½øÐбàÒëÌí¼Ó¡£Ìí¼ÓÖ®ºóͨ¹ýÅäÖÃÎļþÖÐÌí¼ÓÅäÖÃÆôÓÃbrotli¡£

ÔÚ¿ª·¢Õß¹¤¾ßÖв鿴headers£º

¸Ï¿ìÓÅ»¯Ò»ÏÂÄãµÄHTTPS°É£¡

  • ·¢±íÓÚ:
  • Ô­ÎÄÁ´½Ó£ºhttp://news.51cto.com/art/201910/603851.htm
  • ÈçÓÐÇÖȨ£¬ÇëÁªÏµ cloudcommunity@tencent.com ɾ³ý¡£

ɨÂë

Ìí¼ÓÕ¾³¤ ½ø½»Á÷Ⱥ

ÁìȡרÊô 10ÔªÎÞÃż÷ȯ

˽Ïí×îР¼¼Êõ¸É»õ

ɨÂë¼ÓÈ뿪·¢ÕßÉçȺ
Áìȯ
http://www.vxiaotou.com