### é¿éå·´å·´ ä½ å¯¹HTTPSåçæ¯æä¹çè§£ç > æ¬ä¸æ 䏿³¨å享大åBaté¢è¯ç¥è¯ï¼åç»ä¼æç»æ´æ°ï¼å欢çè¯éº»ç¦ç¹å»ä¸ä¸ªstar HTTPSï¼å ¨ç§°ï¼HyperText Transfer Protocol over Secure Socket Layerï¼ï¼å ¶å® HTTPS 并䏿¯ä¸ä¸ªæ°é²åè®®ï¼Google 徿©å°±å¼å§å¯ç¨äºï¼åè¡·æ¯ä¸ºäºä¿è¯æ°æ®å®å ¨ã è¿ä¸¤å¹´ï¼GoogleãBaiduãFacebook çè¿æ ·çäºèç½å·¨å¤´ï¼ä¸è°èåå°å¼å§å¤§åæ¨è¡ HTTPSï¼ å½å å¤ç大åäºèç½å ¬å¸å¾å¤ä¹é½å·²ç»å¯ç¨äºå ¨ç« HTTPSï¼è¿ä¹æ¯æªæ¥äºèç½åå±çè¶å¿ã 为é¼å±å ¨çç½ç«ç HTTPS å®ç°ï¼ä¸äºäºèç½å ¬å¸é½æåºäºèªå·±çè¦æ±ï¼ 1ï¼Google å·²è°æ´æç´¢å¼æ[ç®æ³](http://lib.csdn.net/base/datastructure)ï¼è®©éç¨ HTTPS çç½ç«å¨æç´¢ä¸æåæ´é åï¼ 2ï¼ä» 2017 å¹´å¼å§ï¼Chrome æµè§å¨å·²æéç¨ HTTP åè®®çç½ç«æ 记为ä¸å®å ¨ç½ç«ï¼ 3ï¼è¹æè¦æ± 2017 å¹´ App Store ä¸çææåºç¨é½å¿ é¡»ä½¿ç¨ HTTPS å å¯è¿æ¥ï¼ 4ï¼å½åå½å ççå¾ç«çç[微信](http://lib.csdn.net/base/wechat)å°ç¨åºä¹è¦æ±å¿ é¡»ä½¿ç¨ HTTPS åè®®ï¼ 5ï¼æ°ä¸ä»£ç HTTP/2 åè®®çæ¯æé以 HTTPS 为åºç¡ã ççï¼å æ¤æ³å¿ å¨ä¸ä¹ çå°æ¥ï¼å ¨ç½ HTTPS å¿å¨å¿ è¡ã ### **æ¦å¿µ** ------ #### **åè®®** 1ãHTTP åè®®ï¼HyperText Transfer Protocolï¼è¶ ææ¬ä¼ è¾åè®®ï¼ï¼æ¯å®¢æ·ç«¯æµè§å¨æå ¶ä»ç¨åºä¸Webæå¡å¨ä¹é´çåºç¨å±éä¿¡åè®® ã 2ãHTTPS åè®®ï¼HyperText Transfer Protocol over Secure Socket Layerï¼ï¼å¯ä»¥ç解为HTTP+SSL/TLSï¼ å³ HTTP ä¸å å ¥ SSL å±ï¼HTTPS çå®å ¨åºç¡æ¯ SSLï¼å æ¤å å¯ç详ç»å 容就éè¦ SSLï¼ç¨äºå®å ¨ç HTTP æ°æ®ä¼ è¾ã  å¦ä¸å¾æç¤º HTTPS ç¸æ¯ HTTP å¤äºä¸å± SSL/TLS SSLï¼Secure Socket Layerï¼å®å ¨å¥æ¥åå±ï¼ï¼1994年为 Netscape æç åï¼SSL åè®®ä½äº TCP/IP åè®®ä¸åç§åºç¨å±åè®®ä¹é´ï¼ä¸ºæ°æ®é讯æä¾å®å ¨æ¯æã TLSï¼Transport Layer Securityï¼ä¼ è¾å±å®å ¨ï¼ï¼å ¶åèº«æ¯ SSLï¼å®æåçå ä¸ªçæ¬ï¼SSL 1.0ãSSL 2.0ãSSL 3.0ï¼ç±ç½æ¯å ¬å¸å¼åï¼1999å¹´ä» 3.1 å¼å§è¢« IETF æ ååå¹¶æ¹åï¼åå±è³ä»å·²ç»æ TLS 1.0ãTLS 1.1ãTLS 1.2 ä¸ä¸ªçæ¬ãSSL3.0åTLS1.0ç±äºåå¨å®å ¨æ¼æ´ï¼å·²ç»å¾å°è¢«ä½¿ç¨å°ãTLS 1.3 æ¹å¨ä¼æ¯è¾å¤§ï¼ç®åè¿å¨èæ¡é¶æ®µï¼ç®åä½¿ç¨æå¹¿æ³çæ¯TLS 1.1ãTLS 1.2ã #### **å å¯ç®æ³ï¼** æ®è®°è½½ï¼å ¬å å400å¹´ï¼å¤å¸è 人就åæäºç½®æ¢å¯ç ï¼å¨ç¬¬äºæ¬¡ä¸ç大ææé´ï¼å¾·å½åæ¹å¯ç¨äºâæ©å°¼æ ¼çâå¯ç æºï¼æä»¥å¯ç å¦å¨ç¤¾ä¼åå±ä¸æç广æ³çç¨éã 1ã对称å å¯ ææµå¼ãåç»ä¸¤ç§ï¼å å¯åè§£å¯é½æ¯ä½¿ç¨çåä¸ä¸ªå¯é¥ã ä¾å¦ï¼DESãAES-GCMãChaCha20-Poly1305ç 2ãé对称å å¯ å å¯ä½¿ç¨çå¯é¥åè§£å¯ä½¿ç¨çå¯é¥æ¯ä¸ç¸åçï¼åå«ç§°ä¸ºï¼å ¬é¥ãç§é¥ï¼å ¬é¥åç®æ³é½æ¯å ¬å¼çï¼ç§é¥æ¯ä¿å¯çãé对称å å¯ç®æ³æ§è½è¾ä½ï¼ä½æ¯å®å ¨æ§è¶ 强ï¼ç±äºå ¶å å¯ç¹æ§ï¼é对称å å¯ç®æ³è½å å¯çæ°æ®é¿åº¦ä¹æ¯æéçã ä¾å¦ï¼RSAãDSAãECDSAã DHãECDHE 3ãåå¸ç®æ³ å°ä»»æé¿åº¦çä¿¡æ¯è½¬æ¢ä¸ºè¾ççåºå®é¿åº¦çå¼ï¼éå¸¸å ¶é¿åº¦è¦æ¯ä¿¡æ¯å°å¾å¤ï¼ä¸ç®æ³ä¸å¯éã ä¾å¦ï¼MD5ãSHA-1ãSHA-2ãSHA-256 ç 4ãæ°åç¾å ç¾åå°±æ¯å¨ä¿¡æ¯çåé¢åå ä¸ä¸æ®µå 容ï¼ä¿¡æ¯ç»è¿hashåçå¼ï¼ï¼å¯ä»¥è¯æä¿¡æ¯æ²¡æè¢«ä¿®æ¹è¿ãhashå¼ä¸è¬é½ä¼å å¯åï¼ä¹å°±æ¯ç¾åï¼ååä¿¡æ¯ä¸èµ·åéï¼ä»¥ä¿è¯è¿ä¸ªhashå¼ä¸è¢«ä¿®æ¹ã ### **详解** ------ ä¸ãHTTP 访é®è¿ç¨ æå å¦ä¸ï¼  å¦ä¸å¾æç¤ºï¼HTTP请æ±è¿ç¨ä¸ï¼å®¢æ·ç«¯ä¸æå¡å¨ä¹é´æ²¡æä»»ä½èº«ä»½ç¡®è®¤çè¿ç¨ï¼æ°æ®å ¨é¨ææä¼ è¾ï¼â裸å¥âå¨äºèç½ä¸ï¼æä»¥å¾å®¹æéå°é»å®¢çæ»å»ï¼å¦ä¸ï¼  å¯ä»¥çå°ï¼å®¢æ·ç«¯ååºç请æ±å¾å®¹æè¢«é»å®¢æªè·ï¼å¦ææ¤æ¶é»å®¢åå æå¡å¨ï¼åå ¶å¯è¿åä»»æä¿¡æ¯ç»å®¢æ·ç«¯ï¼èä¸è¢«å®¢æ·ç«¯å¯è§ï¼æä»¥æä»¬ç»å¸¸ä¼å¬å°ä¸è¯â嫿âï¼ç°è±¡å¦ä¸ï¼  ä¸é¢ä¸¤å¾ä¸ï¼æµè§å¨ä¸å¡«å ¥çæ¯ç¸åçURLï¼å·¦è¾¹æ¯æ£ç¡®ååºï¼èå³è¾¹åæ¯è¢«å«æåçååºã  æä»¥ HTTP ä¼ è¾é¢ä¸´çé£é©æï¼ ï¼1ï¼ çªå¬é£é©ï¼é»å®¢å¯ä»¥è·ç¥éä¿¡å 容ã ï¼2ï¼ ç¯¡æ¹é£é©ï¼é»å®¢å¯ä»¥ä¿®æ¹éä¿¡å 容ã ï¼3ï¼ åå é£é©ï¼é»å®¢å¯ä»¥åå ä»äººèº«ä»½åä¸éä¿¡ã äºãHTTP å HTTPS æ¼åçè¿ç¨ ç¬¬ä¸æ¥ï¼ä¸ºäºé²æ¢ä¸è¿°ç°è±¡çåçï¼äººä»¬æ³å°ä¸ä¸ªåæ³ï¼å¯¹ä¼ è¾çä¿¡æ¯å å¯ï¼å³ä½¿é»å®¢æªè·ï¼ä¹æ æ³ç ´è§£ï¼  å¦ä¸å¾æç¤ºï¼æ¤ç§æ¹å¼å±äºå¯¹ç§°å å¯ï¼åæ¹æ¥æç¸åçå¯é¥ï¼ä¿¡æ¯å¾å°å®å ¨ä¼ è¾ï¼ä½æ¤ç§æ¹å¼çç¼ºç¹æ¯ï¼ ï¼1ï¼ä¸åç客æ·ç«¯ãæå¡å¨æ°éåºå¤§ï¼æä»¥åæ¹é½éè¦ç»´æ¤å¤§éçå¯é¥ï¼ç»´æ¤ææ¬å¾é« ï¼2ï¼å æ¯ä¸ªå®¢æ·ç«¯ãæå¡å¨çå®å ¨çº§å«ä¸åï¼å¯é¥æææ³é² ç¬¬äºæ¥ï¼æ¢ç¶ä½¿ç¨å¯¹ç§°å 坿¶ï¼å¯é¥ç»´æ¤è¿ä¹ç¹çï¼é£æä»¬å°±ç¨é对称å å¯è¯è¯  å¦ä¸å¾æç¤ºï¼å®¢æ·ç«¯ç¨å ¬é¥å¯¹è¯·æ±å 容å å¯ï¼æå¡å¨ä½¿ç¨ç§é¥å¯¹å 容解å¯ï¼åä¹äº¦ç¶ï¼ä½ä¸è¿°è¿ç¨ä¹åå¨ç¼ºç¹ï¼ ï¼1ï¼å ¬é¥æ¯å ¬å¼çï¼ä¹å°±æ¯é»å®¢ä¹ä¼æå ¬é¥ï¼ï¼æä»¥ç¬¬ ⣠æ¥ç§é¥å å¯çä¿¡æ¯ï¼å¦æè¢«é»å®¢æªè·ï¼å ¶å¯ä»¥ä½¿ç¨å ¬é¥è¿è¡è§£å¯ï¼è·åå ¶ä¸çå 容 ç¬¬ä¸æ¥ï¼é对称å 坿¢ç¶ä¹æç¼ºé·ï¼é£æä»¬å°±å°å¯¹ç§°å å¯ï¼é对称å å¯ä¸¤è ç»åèµ·æ¥ï¼åå ¶ç²¾åãå»å ¶ç³ç²ï¼åæ¥ä¸¤è çåèªçä¼å¿  å¦ä¸å¾æç¤º ï¼1ï¼ç¬¬ â¢ æ¥æ¶ï¼å®¢æ·ç«¯è¯´ï¼ï¼å±ä»¬åç»åè¯éç¨å¯¹ç§°å å¯å§ï¼è¿æ¯å¯¹ç§°å å¯çç®æ³å对称å¯é¥ï¼è¿æ®µè¯ç¨å ¬é¥è¿è¡å å¯ï¼ç¶åä¼ ç»æå¡å¨ ï¼2ï¼æå¡å¨æ¶å°ä¿¡æ¯åï¼ç¨ç§é¥è§£å¯ï¼æååºå¯¹ç§°å å¯ç®æ³å对称å¯é¥åï¼æå¡å¨è¯´ï¼ï¼å¥½çï¼å¯¹ç§°å¯é¥å å¯ ï¼3ï¼åç»ä¸¤è ä¹é´ä¿¡æ¯çä¼ è¾å°±å¯ä»¥ä½¿ç¨å¯¹ç§°å å¯çæ¹å¼äº éå°çé®é¢ï¼ ï¼1ï¼å®¢æ·ç«¯å¦ä½è·å¾å ¬é¥ ï¼2ï¼å¦ä½ç¡®è®¤æå¡å¨æ¯çå®çè䏿¯é»å®¢ ç¬¬åæ¥ï¼è·åå ¬é¥ä¸ç¡®è®¤æå¡å¨èº«ä»½  1ãè·åå ¬é¥ ï¼1ï¼æä¾ä¸ä¸ªä¸è½½å ¬é¥çå°åï¼åè¯å让客æ·ç«¯å»ä¸è½½ãï¼ç¼ºç¹ï¼ä¸è½½å°åæå¯è½æ¯åçï¼å®¢æ·ç«¯æ¯æ¬¡å¨åè¯åé½å å»ä¸è½½å ¬é¥ä¹å¾éº»ç¦ï¼ ï¼2ï¼åè¯å¼å§æ¶ï¼æå¡å¨æå ¬é¥åç»å®¢æ·ç«¯ï¼ç¼ºç¹ï¼é»å®¢åå æå¡å¨ï¼åéç»å®¢æ·ç«¯åçå ¬é¥ï¼ 2ãé£ææ¨æä¸ç§æ¹å¼æ¢å¯ä»¥å®å ¨çè·åå ¬é¥ï¼åè½é²æ¢é»å®¢åå å¢ï¼ é£å°±éè¦ç¨å°ç»ææ¦å¨äºï¼SSL è¯ä¹¦  å¦ä¸å¾æç¤ºï¼å¨ç¬¬ â¡ æ¥æ¶æå¡å¨åéäºä¸ä¸ªSSLè¯ä¹¦ç»å®¢æ·ç«¯ï¼SSL è¯ä¹¦ä¸å å«çå ·ä½å 容æï¼ ï¼1ï¼è¯ä¹¦çå叿ºæCA ï¼2ï¼è¯ä¹¦çæææ ï¼3ï¼å ¬é¥ ï¼4ï¼è¯ä¹¦ææè ï¼5ï¼ç¾å â¦â¦â¦ 3ã客æ·ç«¯å¨æ¥åå°æå¡ç«¯åæ¥çSSLè¯ä¹¦æ¶ï¼ä¼å¯¹è¯ä¹¦çç伪è¿è¡æ ¡éªï¼ä»¥æµè§å¨ä¸ºä¾è¯´æå¦ä¸ï¼ ï¼1ï¼é¦å æµè§å¨è¯»åè¯ä¹¦ä¸çè¯ä¹¦ææè ãæææçä¿¡æ¯è¿è¡ä¸ä¸æ ¡éª ï¼2ï¼æµè§å¨å¼å§æ¥æ¾[æä½ç³»ç»](http://lib.csdn.net/base/operatingsystem)ä¸å·²å ç½®çåä¿¡ä»»çè¯ä¹¦å叿ºæCAï¼ä¸æå¡å¨åæ¥çè¯ä¹¦ä¸çé¢åè CAæ¯å¯¹ï¼ç¨äºæ ¡éªè¯ä¹¦æ¯å¦ä¸ºåæ³æºæé¢å ï¼3ï¼å¦ææ¾ä¸å°ï¼æµè§å¨å°±ä¼æ¥éï¼è¯´ææå¡å¨åæ¥çè¯ä¹¦æ¯ä¸å¯ä¿¡ä»»çã ï¼4ï¼å¦ææ¾å°ï¼é£ä¹æµè§å¨å°±ä¼ä»æä½ç³»ç»ä¸ååº é¢åè CA çå ¬é¥ï¼ç¶å对æå¡å¨åæ¥çè¯ä¹¦éé¢çç¾åè¿è¡è§£å¯ ï¼5ï¼æµè§å¨ä½¿ç¨ç¸åçhashç®æ³è®¡ç®åºæå¡å¨åæ¥çè¯ä¹¦çhashå¼ï¼å°è¿ä¸ªè®¡ç®çhashå¼ä¸è¯ä¹¦ä¸ç¾ååå¯¹æ¯ ï¼6ï¼å¯¹æ¯ç»æä¸è´ï¼åè¯ææå¡å¨åæ¥çè¯ä¹¦åæ³ï¼æ²¡æè¢«åå ï¼7ï¼æ¤æ¶æµè§å¨å°±å¯ä»¥è¯»åè¯ä¹¦ä¸çå ¬é¥ï¼ç¨äºåç»å å¯äº 4ãæä»¥éè¿åéSSLè¯ä¹¦çå½¢å¼ï¼æ¢è§£å³äºå ¬é¥è·åé®é¢ï¼åè§£å³äºé»å®¢åå é®é¢ï¼ä¸ç®åéï¼HTTPSå å¯è¿ç¨ä¹å°±æ¤å½¢æ æä»¥ç¸æ¯HTTPï¼HTTPS ä¼ è¾æ´å å®å ¨ ï¼1ï¼ ææä¿¡æ¯é½æ¯å å¯ä¼ æï¼é»å®¢æ æ³çªå¬ã ï¼2ï¼ å ·ææ ¡éªæºå¶ï¼ä¸æ¦è¢«ç¯¡æ¹ï¼éä¿¡åæ¹ä¼ç«å»åç°ã ï¼3ï¼ é å¤èº«ä»½è¯ä¹¦ï¼é²æ¢èº«ä»½è¢«åå ã ### **æ»ç»** ------ ç»¼ä¸æè¿°ï¼ç¸æ¯ HTTP åè®®ï¼HTTPS åè®®å¢å äºå¾å¤æ¡æãå å¯è§£å¯çæµç¨ï¼è½ç¶è¿ç¨å¾å¤æï¼ä½å ¶å¯ä»¥ä¿è¯æ°æ®ä¼ è¾çå®å ¨ãæä»¥å¨è¿ä¸ªäºèç½è¨èçæ¶ä»£ï¼å ¶ä¸éèçåç§çä¸è§ç屿ºï¼ä¸ºäºä¿è¯æ°æ®çå®å ¨ï¼ç»´æ¤ç½ç»ç¨³å®ï¼å»ºè®®å¤§å®¶å¤å¤æ¨å¹¿HTTPSã HTTPS 缺ç¹ï¼ ï¼1ï¼SSL è¯ä¹¦è´¹ç¨å¾é«ï¼ä»¥åå ¶å¨æå¡å¨ä¸çé¨ç½²ãæ´æ°ç»´æ¤é常ç¹ç ï¼2ï¼HTTPS éä½ç¨æ·è®¿é®é度ï¼å¤æ¬¡æ¡æï¼ ï¼3ï¼ç½ç«æ¹ç¨HTTPS 以åï¼ç±HTTP è·³è½¬å° HTTPS çæ¹å¼å¢å äºç¨æ·è®¿é®èæ¶ï¼å¤æ°ç½ç«éç¨302è·³è½¬ï¼ ï¼4ï¼HTTPS æ¶åå°çå®å ¨ç®æ³ä¼æ¶è CPU èµæºï¼éè¦å¢å å¤§éæºå¨ï¼https访é®è¿ç¨éè¦å è§£å¯ï¼