# 3.3 HTTPS RSA æ¡æè§£æ
æåé¢è®²ï¼ç®åç»å¤§å®¶ä»ç»äºç HTTPS æ¡æè¿ç¨ï¼ä½æ¯è¿ä¸å¤ç»ï¼
åªè®²äºæ¯è¾åºç¡çé¨åï¼æä»¥è¿æ¬¡æä»¬åæ¥æ·±å ¥ä¸ä¸ HTTPSï¼ç¨å®ææå çæ¹å¼ï¼å¸¦å¤§å®¶åæ¥çª¥æ¢ä¸æ¬¡ HTTPSã

对äºè¿ä¸ç¥é对称å å¯åé对称å å¯çåå¦ï¼ä½ å å¤ä¹ æä»¥åçè¿ç¯æç« ãç¡¬æ ¸ï¼30 å¼ å¾è§£ HTTP 常è§çé¢è¯é¢ãï¼ (opens new window)æ¬ç¯æç« é»è®¤å¤§å®¶å·²ç»å ·å¤äºè¿äºç¥è¯ã
# TLS æ¡æè¿ç¨
HTTP ç±äºæ¯ææä¼ è¾ï¼æè°çææï¼å°±æ¯è¯´å®¢æ·ç«¯ä¸æå¡ç«¯éä¿¡çä¿¡æ¯é½æ¯èç¼å¯è§çï¼éæä½¿ç¨ä¸ä¸ªæå å·¥å ·é½å¯ä»¥æªè·éä¿¡çå 容ã
æä»¥å®å ¨ä¸åå¨ä»¥ä¸ä¸ä¸ªé£é©ï¼
- çªå¬é£é©ï¼æ¯å¦éä¿¡é¾è·¯ä¸å¯ä»¥è·åéä¿¡å 容ï¼ç¨æ·å·å®¹ææ²¡ã
- 篡æ¹é£é©ï¼æ¯å¦å¼ºå¶æ¤å ¥åå¾å¹¿åï¼è§è§æ±¡æï¼ç¨æ·ç¼å®¹æçã
- åå é£é©ï¼æ¯å¦åå æ·å®ç½ç«ï¼ç¨æ·é±å®¹ææ²¡ã
HTTPS å¨ HTTP ä¸ TCP å±ä¹é´å å ¥äº TLS åè®®ï¼æ¥è§£å³ä¸è¿°çé£é©ã

TLS åè®®æ¯å¦ä½è§£å³ HTTP çé£é©çå¢ï¼
- ä¿¡æ¯å å¯ï¼ HTTP 交äºä¿¡æ¯æ¯è¢«å å¯çï¼ç¬¬ä¸æ¹å°±æ æ³è¢«çªåï¼
- æ ¡éªæºå¶ï¼æ ¡éªä¿¡æ¯ä¼ è¾è¿ç¨ä¸æ¯å¦æè¢«ç¬¬ä¸æ¹ç¯¡æ¹è¿ï¼å¦æè¢«ç¯¡æ¹è¿ï¼å伿è¦åæç¤ºï¼
- 身份è¯ä¹¦ï¼è¯ææ·å®æ¯ççæ·å®ç½ï¼
å¯è§ï¼æäº TLS åè®®ï¼è½ä¿è¯ HTTP éä¿¡æ¯å®å ¨çäºï¼é£ä¹å¨è¿è¡ HTTP éä¿¡åï¼éè¦å è¿è¡ TLS æ¡æãTLS çæ¡æè¿ç¨ï¼å¦ä¸å¾ï¼

ä¸å¾ç®è¦æ¦è¿°äº TLS çæ¡æè¿ç¨ï¼å ¶ä¸æ¯ä¸ä¸ªãæ¡ã齿¯ä¸ä¸ªè®°å½ï¼recordï¼ï¼è®°å½æ¯ TLS æ¶åæ°æ®çåºæ¬åä½ï¼ç±»ä¼¼äº TCP éç segmentãå¤ä¸ªè®°å½å¯ä»¥ç»åæä¸ä¸ª TCP å åéï¼æä»¥é常ç»è¿ãåä¸ªæ¶æ¯ãå°±å¯ä»¥å®æ TLS æ¡æï¼ä¹å°±æ¯éè¦ 2个 RTT çæ¶å»¶ï¼ç¶åå°±å¯ä»¥å¨å®å ¨çéä¿¡ç¯å¢éåé HTTP æ¥æï¼å®ç° HTTPS åè®®ã
æä»¥å¯ä»¥åç°ï¼HTTPS æ¯åºç¨å±åè®®ï¼éè¦å 宿 TCP è¿æ¥å»ºç«ï¼ç¶åèµ° TLS æ¡æè¿ç¨åï¼æè½å»ºç«éä¿¡å®å ¨çè¿æ¥ã
äºå®ä¸ï¼ä¸åçå¯é¥äº¤æ¢ç®æ³ï¼TLS çæ¡æè¿ç¨å¯è½ä¼æä¸äºåºå«ã
è¿éå ç®åä»ç»ä¸å¯é¥äº¤æ¢ç®æ³ï¼å 为èèå°æ§è½çé®é¢ï¼æä»¥åæ¹å¨å å¯åºç¨ä¿¡æ¯æ¶ä½¿ç¨çæ¯å¯¹ç§°å å¯å¯é¥ï¼è对称å å¯å¯é¥æ¯ä¸è½è¢«æ³æ¼çï¼ä¸ºäºä¿è¯å¯¹ç§°å å¯å¯é¥çå®å ¨æ§ï¼æä»¥ä½¿ç¨é对称å å¯çæ¹å¼æ¥ä¿æ¤å¯¹ç§°å å¯å¯é¥çååï¼è¿ä¸ªå·¥ä½å°±æ¯å¯é¥äº¤æ¢ç®æ³è´è´£çã
æ¥ä¸æ¥ï¼æä»¬å°±ä»¥æç®åç RSA å¯é¥äº¤æ¢ç®æ³ï¼æ¥ççå®ç TLS æ¡æè¿ç¨ã
# RSA æ¡æè¿ç¨
ä¼ ç»ç TLS æ¡æåºæ¬é½æ¯ä½¿ç¨ RSA ç®æ³æ¥å®ç°å¯é¥äº¤æ¢çï¼å¨å° TLS è¯ä¹¦é¨ç½²æå¡ç«¯æ¶ï¼è¯ä¹¦æä»¶å ¶å®å°±æ¯æå¡ç«¯çå ¬é¥ï¼ä¼å¨ TLS æ¡æé¶æ®µä¼ éç»å®¢æ·ç«¯ï¼èæå¡ç«¯çç§é¥åä¸ç´ç卿å¡ç«¯ï¼ä¸å®è¦ç¡®ä¿ç§é¥ä¸è½è¢«çªåã
å¨ RSA å¯é¥ååç®æ³ä¸ï¼å®¢æ·ç«¯ä¼çæéæºå¯é¥ï¼å¹¶ä½¿ç¨æå¡ç«¯çå ¬é¥å å¯ååä¼ ç»æå¡ç«¯ãæ ¹æ®é对称å å¯ç®æ³ï¼å ¬é¥å å¯çæ¶æ¯ä» è½éè¿ç§é¥è§£å¯ï¼è¿æ ·æå¡ç«¯è§£å¯åï¼åæ¹å°±å¾å°äºç¸åçå¯é¥ï¼åç¨å®å å¯åºç¨æ¶æ¯ã
æç¨ Wireshark å·¥å ·æäºç¨ RSA å¯é¥äº¤æ¢ç TLS æ¡æè¿ç¨ï¼ä½ å¯ä»¥ä»ä¸é¢çå°ï¼ä¸å ±ç»åäºåæ¬¡æ¡æï¼

å¯¹åº Wireshark çæå ï¼æä¹ç»äºä¸å¹ å¾ï¼ä½ å¯ä»¥ä»ä¸å¾å¾æ¸ æ°å°çå°è¯¥è¿ç¨ï¼

é£ä¹ï¼æ¥ä¸æ¥é对æ¯ä¸ä¸ª TLS æ¡æåè¿ä¸æ¥çä»ç»ã
# TLS ç¬¬ä¸æ¬¡æ¡æ
客æ·ç«¯é¦å ä¼åä¸ä¸ªãClient Helloãæ¶æ¯ï¼å颿ææä»¬ä¹è½çè§£å°ï¼è¿æ¯è·æå¡å¨ãææå¼ãã

æ¶æ¯é颿客æ·ç«¯ä½¿ç¨ç TLS çæ¬å·ãæ¯æçå¯ç å¥ä»¶å表ï¼ä»¥åçæçéæºæ°ï¼Client Randomï¼ï¼è¿ä¸ªéæºæ°ä¼è¢«æå¡ç«¯ä¿çï¼å®æ¯çæå¯¹ç§°å å¯å¯é¥çææä¹ä¸ã
# TLS ç¬¬äºæ¬¡æ¡æ
彿å¡ç«¯æ¶å°å®¢æ·ç«¯çãClient Helloãæ¶æ¯åï¼ä¼ç¡®è®¤ TLS çæ¬å·æ¯å¦æ¯æï¼åä»å¯ç å¥ä»¶å表ä¸éæ©ä¸ä¸ªå¯ç å¥ä»¶ï¼ä»¥åçæéæºæ°ï¼Server Randomï¼ã
æ¥çï¼è¿åãServer Helloãæ¶æ¯ï¼æ¶æ¯é颿æå¡å¨ç¡®è®¤ç TLS çæ¬å·ï¼ä¹ç»åºäºéæºæ°ï¼Server Randomï¼ï¼ç¶åä»å®¢æ·ç«¯çå¯ç å¥ä»¶åè¡¨éæ©äºä¸ä¸ªåéçå¯ç å¥ä»¶ã

å¯ä»¥çå°ï¼æå¡ç«¯éæ©çå¯ç å¥ä»¶æ¯ âCipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256âã
è¿ä¸ªå¯ç å¥ä»¶çèµ·æ¥ç让人头æï¼å¥½ä¸å¤§ä¸²ï¼ä½æ¯å ¶å®å®æ¯æåºå®æ ¼å¼åè§èçãåºæ¬ç形弿¯ãå¯é¥äº¤æ¢ç®æ³ + ç¾åç®æ³ + 对称å å¯ç®æ³ + æè¦ç®æ³ãï¼ ä¸è¬ WITH åè¯åé¢æä¸¤ä¸ªåè¯ï¼ç¬¬ä¸ä¸ªåè¯æ¯çº¦å®å¯é¥äº¤æ¢çç®æ³ï¼ç¬¬äºä¸ªåè¯æ¯çº¦å®è¯ä¹¦çéªè¯ç®æ³ãæ¯å¦åæçå¯ç å¥ä»¶çææå°±æ¯ï¼
- ç±äº WITH åè¯åªæä¸ä¸ª RSAï¼åè¯´ææ¡ææ¶å¯é¥äº¤æ¢ç®æ³åç¾åç®æ³é½æ¯ä½¿ç¨ RSAï¼
- æ¡æåçéä¿¡ä½¿ç¨ AES å¯¹ç§°ç®æ³ï¼å¯é¥é¿åº¦ 128 ä½ï¼åç»æ¨¡å¼æ¯ GCMï¼
- æè¦ç®æ³ SHA256 ç¨äºæ¶æ¯è®¤è¯å产çéæºæ°ï¼
å°±åé¢è¿ä¸¤ä¸ªå®¢æ·ç«¯åæå¡ç«¯ç¸äºãææå¼ãçè¿ç¨ï¼å®¢æ·ç«¯åæå¡ç«¯å°±å·²ç¡®è®¤äº TLS çæ¬å使ç¨çå¯ç å¥ä»¶ï¼èä¸ä½ å¯è½åç°å®¢æ·ç«¯åæå¡ç«¯é½ä¼åèªçæä¸ä¸ªéæºæ°ï¼å¹¶ä¸è¿ä¼æéæºæ°ä¼ éç»å¯¹æ¹ã
é£è¿ä¸ªéæºæ°æå¥ç¨å¢ï¼å ¶å®è¿ä¸¤ä¸ªéæºæ°æ¯åç»ä½ä¸ºçæãä¼è¯å¯é¥ãçæ¡ä»¶ï¼æè°çä¼è¯å¯é¥å°±æ¯æ°æ®ä¼ è¾æ¶ï¼æä½¿ç¨ç对称å å¯å¯é¥ã
ç¶åï¼æå¡ç«¯ä¸ºäºè¯æèªå·±ç身份ï¼ä¼åéãServer Certificateãç»å®¢æ·ç«¯ï¼è¿ä¸ªæ¶æ¯é嫿æ°åè¯ä¹¦ã

éåï¼æå¡ç«¯åäºãServer Hello Doneãæ¶æ¯ï¼ç®çæ¯åè¯å®¢æ·ç«¯ï¼æå·²ç»æè¯¥ç»ä½ çä¸è¥¿é½ç»ä½ äºï¼æ¬æ¬¡ææå¼å®æ¯ã

# 客æ·ç«¯éªè¯è¯ä¹¦
å¨è¿éå¹ä¸ªè½¦ï¼å®¢æ·ç«¯æ¿å°äºæå¡ç«¯çæ°åè¯ä¹¦åï¼è¦æä¹æ ¡éªè¯¥æ°åè¯ä¹¦æ¯ç宿æçå¢ï¼
# æ°åè¯ä¹¦å CA æºæ
å¨è¯´æ ¡éªæ°åè¯ä¹¦æ¯å¦å¯ä¿¡çè¿ç¨åï¼æä»¬å æ¥ççæ°åè¯ä¹¦æ¯ä»ä¹ï¼ä¸ä¸ªæ°åè¯ä¹¦é常å å«äºï¼
- å ¬é¥ï¼
- ææè ä¿¡æ¯ï¼
- è¯ä¹¦è®¤è¯æºæï¼CAï¼çä¿¡æ¯ï¼
- CA 对è¿ä»½æä»¶çæ°åç¾åå使ç¨çç®æ³ï¼
- è¯ä¹¦æææï¼
- è¿æä¸äºå ¶ä»é¢å¤ä¿¡æ¯ï¼
飿°åè¯ä¹¦çä½ç¨ï¼æ¯ç¨æ¥è®¤è¯å ¬é¥ææè ç身份ï¼ä»¥é²æ¢ç¬¬ä¸æ¹è¿è¡åå ã说ç®åäºï¼è¯ä¹¦å°±æ¯ç¨æ¥åè¯å®¢æ·ç«¯ï¼è¯¥æå¡ç«¯æ¯å¦æ¯åæ³çï¼å ä¸ºåªæè¯ä¹¦åæ³ï¼æä»£è¡¨æå¡ç«¯èº«ä»½æ¯å¯ä¿¡çã
æä»¬ç¨è¯ä¹¦æ¥è®¤è¯å ¬é¥ææè çèº«ä»½ï¼æå¡ç«¯ç身份ï¼ï¼é£è¯ä¹¦åæ¯æä¹æ¥çï¼å该æä¹è®¤è¯è¯ä¹¦å¢ï¼
为äºè®©æå¡ç«¯çå ¬é¥è¢«å¤§å®¶ä¿¡ä»»ï¼æå¡ç«¯çè¯ä¹¦é½æ¯ç± CA ï¼Certificate Authorityï¼è¯ä¹¦è®¤è¯æºæï¼ç¾åçï¼CA å°±æ¯ç½ç»ä¸çéçå ¬å®å±ãå ¬è¯ä¸å¿ï¼å ·ææé«çå¯ä¿¡åº¦ï¼æä»¥ç±å®æ¥ç»åä¸ªå ¬é¥ç¾åï¼ä¿¡ä»»ç䏿¹ç¾åçè¯ä¹¦ï¼é£å¿ ç¶è¯ä¹¦ä¹æ¯è¢«ä¿¡ä»»çã
乿以è¦ç¾åï¼æ¯å 为ç¾åçä½ç¨å¯ä»¥é¿å ä¸é´äººå¨è·åè¯ä¹¦æ¶å¯¹è¯ä¹¦å 容ç篡æ¹ã
# æ°åè¯ä¹¦ç¾ååéªè¯æµç¨
å¦ä¸å¾å¾æç¤ºï¼ä¸ºæ°åè¯ä¹¦ç¾ååéªè¯æµç¨ï¼

CA ç¾åè¯ä¹¦çè¿ç¨ï¼å¦ä¸å¾å·¦è¾¹é¨åï¼
- é¦å CA 伿ææè çå ¬é¥ãç¨éãé¢åè ãæææ¶é´çä¿¡æ¯ææä¸ä¸ªå ï¼ç¶å对è¿äºä¿¡æ¯è¿è¡ Hash 计ç®ï¼å¾å°ä¸ä¸ª Hash å¼ï¼
- ç¶å CA ä¼ä½¿ç¨èªå·±çç§é¥å°è¯¥ Hash å¼å å¯ï¼çæ Certificate Signatureï¼ä¹å°±æ¯ CA 对è¯ä¹¦åäºç¾åï¼
- æåå° Certificate Signature æ·»å 卿件è¯ä¹¦ä¸ï¼å½¢ææ°åè¯ä¹¦ï¼
客æ·ç«¯æ ¡éªæå¡ç«¯çæ°åè¯ä¹¦çè¿ç¨ï¼å¦ä¸å¾å³è¾¹é¨åï¼
- é¦å 客æ·ç«¯ä¼ä½¿ç¨åæ ·ç Hash ç®æ³è·å该è¯ä¹¦ç Hash å¼ H1ï¼
- é常æµè§å¨åæä½ç³»ç»ä¸éæäº CA çå ¬é¥ä¿¡æ¯ï¼æµè§å¨æ¶å°è¯ä¹¦åå¯ä»¥ä½¿ç¨ CA çå ¬é¥è§£å¯ Certificate Signature å 容ï¼å¾å°ä¸ä¸ª Hash å¼ H2 ï¼
- æåæ¯è¾ H1 å H2ï¼å¦æå¼ç¸åï¼å为å¯ä¿¡èµçè¯ä¹¦ï¼å¦åå认为è¯ä¹¦ä¸å¯ä¿¡ã
# è¯ä¹¦é¾
ä½äºå®ä¸ï¼è¯ä¹¦çéªè¯è¿ç¨ä¸è¿åå¨ä¸ä¸ªè¯ä¹¦ä¿¡ä»»é¾çé®é¢ï¼å 为æä»¬å CA ç³è¯·çè¯ä¹¦ä¸è¬ä¸æ¯æ ¹è¯ä¹¦ç¾åçï¼èæ¯ç±ä¸é´è¯ä¹¦ç¾åçï¼æ¯å¦ç¾åº¦çè¯ä¹¦ï¼ä»ä¸å¾ä½ å¯ä»¥çå°ï¼è¯ä¹¦çå±çº§æä¸çº§ï¼

对äºè¿ç§ä¸çº§å±çº§å ³ç³»çè¯ä¹¦çéªè¯è¿ç¨å¦ä¸ï¼
- 客æ·ç«¯æ¶å° baidu.com çè¯ä¹¦åï¼åç°è¿ä¸ªè¯ä¹¦çç¾åè 䏿¯æ ¹è¯ä¹¦ï¼å°±æ æ³æ ¹æ®æ¬å°å·²æçæ ¹è¯ä¹¦ä¸çå ¬é¥å»éªè¯ baidu.com è¯ä¹¦æ¯å¦å¯ä¿¡ãäºæ¯ï¼å®¢æ·ç«¯æ ¹æ® baidu.com è¯ä¹¦ä¸çç¾åè ï¼æ¾å°è¯¥è¯ä¹¦çé¢åæºææ¯ âGlobalSign Organization Validation CA - SHA256 - G2âï¼ç¶åå CA 请æ±è¯¥ä¸é´è¯ä¹¦ã
- 请æ±å°è¯ä¹¦ååç° âGlobalSign Organization Validation CA - SHA256 - G2â è¯ä¹¦æ¯ç± âGlobalSign Root CAâ ç¾åçï¼ç±äº âGlobalSign Root CAâ æ²¡æåä¸çº§ç¾åæºæï¼è¯´æå®æ¯æ ¹è¯ä¹¦ï¼ä¹å°±æ¯èªç¾è¯ä¹¦ãåºç¨è½¯ä»¶ä¼æ£æ¥æ¤è¯ä¹¦æå¦å·²é¢è½½äºæ ¹è¯ä¹¦æ¸ åä¸ï¼å¦ææï¼åå¯ä»¥å©ç¨æ ¹è¯ä¹¦ä¸çå ¬é¥å»éªè¯ âGlobalSign Organization Validation CA - SHA256 - G2â è¯ä¹¦ï¼å¦æåç°éªè¯éè¿ï¼å°±è®¤ä¸ºè¯¥ä¸é´è¯ä¹¦æ¯å¯ä¿¡çã
- âGlobalSign Organization Validation CA - SHA256 - G2â è¯ä¹¦è¢«ä¿¡ä»»åï¼å¯ä»¥ä½¿ç¨ âGlobalSign Organization Validation CA - SHA256 - G2â è¯ä¹¦ä¸çå ¬é¥å»éªè¯ baidu.com è¯ä¹¦çå¯ä¿¡æ§ï¼å¦æéªè¯éè¿ï¼å°±å¯ä»¥ä¿¡ä»» baidu.com è¯ä¹¦ã
å¨è¿å个æ¥éª¤ä¸ï¼æå¼å§å®¢æ·ç«¯åªä¿¡ä»»æ ¹è¯ä¹¦ GlobalSign Root CA è¯ä¹¦çï¼ç¶å âGlobalSign Root CAâ è¯ä¹¦ä¿¡ä»» âGlobalSign Organization Validation CA - SHA256 - G2â è¯ä¹¦ï¼è âGlobalSign Organization Validation CA - SHA256 - G2â è¯ä¹¦åä¿¡ä»» baidu.com è¯ä¹¦ï¼äºæ¯å®¢æ·ç«¯ä¹ä¿¡ä»» baidu.com è¯ä¹¦ã
æ»æ¬æ¥è¯´ï¼ç±äºç¨æ·ä¿¡ä»» GlobalSignï¼æä»¥ç± GlobalSign ææ ä¿ç baidu.com å¯ä»¥è¢«ä¿¡ä»»ï¼å¦å¤ç±äºç¨æ·ä¿¡ä»»æä½ç³»ç»ææµè§å¨ç软件åï¼æä»¥ç±è½¯ä»¶åé¢è½½äºæ ¹è¯ä¹¦ç GlobalSign é½å¯è¢«ä¿¡ä»»ã

æä½ç³»ç»éä¸è¬é½ä¼å ç½®ä¸äºæ ¹è¯ä¹¦ï¼æ¯å¦æç MAC çµèéå ç½®çæ ¹è¯ä¹¦æè¿ä¹å¤ï¼

è¿æ ·çä¸å±å±å°éªè¯å°±ææäºä¸æ¡ä¿¡ä»»é¾è·¯ï¼æ´ä¸ªè¯ä¹¦ä¿¡ä»»é¾éªè¯æµç¨å¦ä¸å¾æç¤ºï¼

æåä¸ä¸ªé®é¢ï¼ä¸ºä»ä¹éè¦è¯ä¹¦é¾è¿ä¹éº»ç¦çæµç¨ï¼Root CA 为ä»ä¹ä¸ç´æ¥é¢åè¯ä¹¦ï¼èæ¯è¦æé£ä¹å¤ä¸é´å±çº§å¢ï¼
è¿æ¯ä¸ºäºç¡®ä¿æ ¹è¯ä¹¦çç»å¯¹å®å ¨æ§ï¼å°æ ¹è¯ä¹¦é离å°è¶ä¸¥æ ¼è¶å¥½ï¼ä¸ç¶æ ¹è¯ä¹¦å¦æå¤±å®äºï¼é£ä¹æ´ä¸ªä¿¡ä»»é¾é½ä¼æé®é¢ã
# TLS ç¬¬ä¸æ¬¡æ¡æ
客æ·ç«¯éªè¯å®è¯ä¹¦åï¼è®¤ä¸ºå¯ä¿¡åç»§ç»å¾ä¸èµ°ã
æ¥çï¼å®¢æ·ç«¯å°±ä¼çæä¸ä¸ªæ°çéæºæ° (pre-master)ï¼ç¨æå¡å¨ç RSA å ¬é¥å å¯è¯¥éæºæ°ï¼éè¿ãClient Key Exchangeãæ¶æ¯ä¼ ç»æå¡ç«¯ã

æå¡ç«¯æ¶å°åï¼ç¨ RSA ç§é¥è§£å¯ï¼å¾å°å®¢æ·ç«¯åæ¥çéæºæ° (pre-master)ã
è³æ¤ï¼å®¢æ·ç«¯åæå¡ç«¯åæ¹é½å ±äº«äºä¸ä¸ªéæºæ°ï¼å嫿¯ Client RandomãServer Randomãpre-masterã
äºæ¯ï¼åæ¹æ ¹æ®å·²ç»å¾å°çä¸ä¸ªéæºæ°ï¼çæä¼è¯å¯é¥ï¼Master Secretï¼ï¼å®æ¯å¯¹ç§°å¯é¥ï¼ç¨äºå¯¹åç»ç HTTP 请æ±/ååºçæ°æ®å è§£å¯ã
çæå®ãä¼è¯å¯é¥ãåï¼ç¶å客æ·ç«¯åä¸ä¸ªãChange Cipher Specãï¼åè¯æå¡ç«¯å¼å§ä½¿ç¨å 坿¹å¼åéæ¶æ¯ã

ç¶åï¼å®¢æ·ç«¯ååä¸ä¸ªãEncrypted Handshake Messageï¼Finishdï¼ãæ¶æ¯ï¼æä¹åææåéçæ°æ®å个æè¦ï¼åç¨ä¼è¯å¯é¥ï¼master secretï¼å å¯ä¸ä¸ï¼è®©æå¡å¨å个éªè¯ï¼éªè¯å å¯éä¿¡ãæ¯å¦å¯ç¨ãåãä¹åæ¡æä¿¡æ¯æ¯å¦æè¢«ä¸é篡æ¹è¿ãã

å¯ä»¥åç°ï¼ãChange Cipher Specãä¹åä¼ è¾ç TLS æ¡ææ°æ®é½æ¯ææï¼ä¹å齿¯å¯¹ç§°å¯é¥å å¯ç坿ã
# TLS ç¬¬åæ¬¡æ¡æ
æå¡å¨ä¹æ¯åæ ·çæä½ï¼åãChange Cipher SpecãåãEncrypted Handshake Messageãæ¶æ¯ï¼å¦æåæ¹é½éªè¯å å¯åè§£å¯æ²¡é®é¢ï¼é£ä¹æ¡ææ£å¼å®æã
æåï¼å°±ç¨ãä¼è¯å¯é¥ãå è§£å¯ HTTP 请æ±åååºäºã
# RSA ç®æ³ç缺é·
ä½¿ç¨ RSA å¯é¥ååç®æ³çæå¤§é®é¢æ¯ä¸æ¯æååä¿å¯ã
å 为客æ·ç«¯ä¼ ééæºæ°ï¼ç¨äºçæå¯¹ç§°å å¯å¯é¥çæ¡ä»¶ä¹ä¸ï¼ç»æå¡ç«¯æ¶ä½¿ç¨çæ¯å ¬é¥å å¯çï¼æå¡ç«¯æ¶å°åï¼ä¼ç¨ç§é¥è§£å¯å¾å°éæºæ°ãæä»¥ä¸æ¦æå¡ç«¯çç§é¥æ³æ¼äºï¼è¿å»è¢«ç¬¬ä¸æ¹æªè·çææ TLS éè®¯å¯æé½ä¼è¢«ç ´è§£ã
为äºè§£å³è¿ä¸ªé®é¢ï¼åé¢å°±åºç°äº ECDHE å¯é¥ååç®æ³ï¼æä»¬ç°å¨å¤§å¤æ°ç½ç«ä½¿ç¨çæ£æ¯ ECDHE å¯é¥ååç®æ³ï¼å ³äº ECDHE æ¡æçè¿ç¨ï¼å°å¨ä¸ä¸ç¯ææã
åå½ï¼ææ¯å°æï¼å°±ç±å¾è§£è®¡ç®æºåºç¡ï¼å¦ææç« å¯¹ä½ æå¸®å©ï¼å«å¿è®°å ³æ³¨å¦ï¼
