1. 程式人生 > >Https建立連線

Https建立連線

連結:https://www.jianshu.com/p/f6aaa42e09d4

https是什麼?

https, 全稱Hyper Text Transfer Protocol Secure,相比http,多了一個secure,這一個secure是怎麼來的呢?這是由TLS(SSL)提供的,這個又是什麼呢?估計你也不想知道。大概就是一個叫openSSL的library提供的。https和http都屬於application layer,基於TCP(以及UDP)協議,但是又完全不一樣。TCP用的port是80, https用的是443(值得一提的是,google發明了一個新的協議,叫QUIC,並不基於TCP,用的port也是443, 同樣是用來給https的。谷歌好牛逼啊。)總體來說,https和http類似,但是比http安全。

在http(應用層) 和TCP(傳輸層)之間插入一個SSL協議, 就是https。一句話:http+加密+認證+完整性保護=https

http預設工作在TCP協議80埠(需要國內備案),使用者訪問網站http://打頭的都是標準http服務,http所封裝的資訊都是明文的,通過抓包工具可以分析其資訊內容,如果這些資訊內容包含你的銀行卡賬號、密碼,你肯定無法接受這種服務,那有沒有可以加密這些敏感資訊的服務呢?那就是https!

https是http執行在SSL/TLS之上,SSL/TLS執行在TCP之上。所有傳輸的內容都經過加密,加密採用對稱加密,但對稱加密的金鑰用伺服器方的證書進行了非對稱加密。此外客戶端可以驗證伺服器端的身份,如果配置了客戶端驗證,伺服器方也可以驗證客戶端的身份。

https預設工作在tcp協議443埠,它的工作流程一般如以下方式:

1、完成tcp三次同步握手;

2、客戶端驗證伺服器數字證書,通過,進入步驟3;

3、DH演算法協商對稱加密演算法的金鑰、hash演算法的金鑰;

4、SSL安全加密隧道協商完成;

5、網頁以加密的方式傳輸,用協商的對稱加密演算法和金鑰加密,保證資料機密性;用協商的hash演算法進行資料完整性保護,保證資料不被篡改。

附:https一般使用的加密與hash演算法如下:

非對稱加密演算法:RSA,DSA/DSS

對稱加密演算法:AES,RC4,3DES

hash演算法:MD5,SHA1,SHA256

如果https是網銀服務,以上SSL安全隧道成功建立才會要求使用者輸入賬戶資訊,賬戶資訊是在安全隧道里傳輸,所以不會洩密!


HTTP與TCP/IP區別?

TPC/IP協議是傳輸層協議,主要解決資料如何在網路中傳輸,而HTTP是應用層協議,主要解決如何包裝資料。Web使用HTTP協議作應用層協議,以封裝HTTP 文字資訊,然後使用TCP/IP做傳輸層協議將它發到網路上。

下面的圖表試圖顯示不同的TCP/IP和其他的協議在最初OSI(Open System Interconnect)模型中的位置:

(圖片來源網路)

CA證書是什麼?

CA(Certificate Authority)是負責管理和簽發證書的第三方權威機構,是所有行業和公眾都信任的、認可的。

CA證書,就是CA頒發的證書,可用於驗證網站是否可信(針對HTTPS)、驗證某檔案是否可信(是否被篡改)等,也可以用一個證書來證明另一個證書是真實可信,最頂級的證書稱為根證書。除了根證書(自己證明自己是可靠),其它證書都要依靠上一級的證書,來證明自己。


https和ssl在握手方向有什麼區別:

https大致過程:

1、建立伺服器443埠連線 ;

2、SSL握手:隨機數,證書,金鑰,加密演算法;

3、傳送加密請求 ;

4、傳送加密響應;

5、關閉SSL;

6、關閉TCP.

SSL握手大致過程:

1、客戶端傳送隨機數1,支援的加密方法(如RSA公鑰加密);

2、服務端傳送隨機數2,和伺服器公鑰,並確認加密方法;

3、客戶端傳送用伺服器公鑰加密的隨機數3;

4、伺服器用私鑰解密這個隨機數3,用加密方法計算生成對稱加密的金鑰給客戶端;

5、接下來的報文都用雙方協定好的加密方法和金鑰,進行加密.