HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,所以加密的詳細內容就須要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL代表它使用了HTTPS,但HTTPS存在不一樣於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司進行,提供了身份驗證與加密通信方法,如今它被普遍用於萬維網上安全敏感的通信,例如交易支付方面算法
1、https協議須要到ca申請證書,通常免費證書不多,須要交費。數據庫
2、http是超文本傳輸協議,信息是明文傳輸,https 則是具備安全性的ssl加密傳輸協議。瀏覽器
3、http和https使用的是徹底不一樣的鏈接方式,用的端口也不同,前者是80,後者是443。安全
4、http的鏈接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。服務器
1)對稱加密:密鑰只有一個,加密解密爲同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES等;網絡
2)非對稱加密:密鑰成對出現(且根據公鑰沒法推知私鑰,根據私鑰也沒法推知公鑰),加密解密使用不一樣密鑰(公鑰加密須要私鑰解密,私鑰加密須要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等。性能
圖2.1 https的通訊過程網站
1)客戶端產生的密鑰只有客戶端和服務器端能獲得;加密
2)加密的數據只有客戶端和服務器端才能獲得明文;spa
3)客戶端到服務端的通訊是安全的。
採用https的服務器必須從CA (Certificate Authority)申請一個用於證實服務器用途類型的證書。該證書只有用於對應的服務器的時候,客戶端纔信任此主機。因此目前全部的銀行系統網站,關鍵部分應用都是https 的。客戶經過信任該證書,從而信任了該主機。其實這樣作效率很低,可是銀行更側重安全。這一點對咱們沒有任何意義,咱們的服務器,採用的證書無論是本身發佈的仍是從公衆的地方發佈的,其客戶端都是本身人,因此咱們也就確定信任該服務器。
1. 通常意義上的https,就是服務器有一個證書。
a) 主要目的是保證服務器就是他聲稱的服務器,這個跟第一點同樣。
b) 服務端和客戶端之間的全部通信,都是加密的。
i. 具體講,是客戶端產生一個對稱的密鑰,經過服務器的證書來交換密鑰,即通常意義上的握手過程。
ii. 接下來全部的信息往來就都是加密的。第三方即便截獲,也沒有任何意義,由於他沒有密鑰,固然篡改也就沒有什麼意義了。
2. 少量對客戶端有要求的狀況下,會要求客戶端也必須有一個證書。
a) 這裏客戶端證書,其實就相似表示我的信息的時候,除了用戶名/密碼,還有一個CA 認證過的身份。由於我的證書通常來講是別人沒法模擬的,全部這樣可以更深的確認本身的身份。
b) 目前少數我的銀行的專業版是這種作法,具體證書多是拿U盤(即U盾)做爲一個備份的載體
它的安全保護依賴瀏覽器的正確實現以及服務器軟件、實際加密算法的支持.
一種常見的誤解是「銀行用戶在線使用https:就能充分完全保障他們的銀行卡號不被偷竊。」實際上,與服務器的加密鏈接中能保護銀行卡號的部分,只有用戶到服務器之間的鏈接及服務器自身。並不能絕對確保服務器本身是安全的,這點甚至已被攻擊者利用,常見例子是模仿銀行域名的釣魚攻擊。少數罕見攻擊在網站傳輸客戶數據時發生,攻擊者會嘗試竊聽傳輸中的數據。
商業網站被人們指望迅速儘早引入新的特殊處理程序到金融網關,僅保留傳輸碼(transaction number)。不過他們經常存儲銀行卡號在同一個數據庫裏。那些數據庫和服務器少數狀況有可能被未受權用戶攻擊和損害。
SSL安全套接層協議(Secure Socket Layer)
爲Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程當中不會被截取及竊聽。目前通常通用之規格爲40 bit之安全標準,美國則已推出128 bit之更高安全標準,但限制出境。只要3.0版本以上之IE或Netscape瀏覽器便可支持SSL。
當前版本爲3.0。它已被普遍地用於Web瀏覽器與服務器之間的身份認證和加密數據傳輸。
SSL協議位於TCP/IP協議與各類應用層協議之間,是一種國際標準的加密及身份認證通訊協議,爲TCP提供一個可靠的端到端的安全服務,爲兩個通信個體之間提供保密性和完整性(身份鑑別)。SSL協議可分爲兩層:SSL記錄協議(SSL Record Protocol):它創建在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。SSL握手協議(SSL Handshake Protocol):它創建在SSL記錄協議之上,用於在實際的數據傳輸開始前,通信雙方進行身份認證、協商加密算法、交換加密密鑰等。
1)SSL協議可用於保護正常運行於TCP之上的任何應用協議,如HTTP、FTP、SMTP或Telnet的通訊,最多見的是用SSL來保護HTTP的通訊。
2)SSL協議的優勢在於它是與應用層協議無關的。高層的應用協議(如HTTP、FTP、Telnet等)能透明地創建於SSL協議之上。
3)SSL協議在應用層協議以前就已經完成加密算法、通訊密鑰的協商以及服務器的認證工做。在此以後應用層協議所傳送的數據都會被加密,從而保證通訊的安全性。
4)SSL協議使用通訊雙方的客戶證書以及CA根證書,容許客戶/服務器應用以一種不能被偷聽的方式通訊,在通訊雙方間創建起了一條安全的、可信任的通訊通道。
5)該協議使用密鑰對傳送數據加密,許多網站都是經過這種協議從客戶端接收信用卡編號等保密信息。經常使用於交易過程當中。
1)客戶對服務器的身份認證:
SSL服務器容許客戶的瀏覽器使用標準的公鑰加密技術和一些可靠的認證中心(CA)的證書,來確認服務器的合法性。
2)服務器對客戶的身份認證:
也可經過公鑰技術和證書進行認證,也可經過用戶名,password來認證。
3)創建服務器與客戶之間安全的數據通道:
SSL要求客戶與服務器之間的全部發送的數據都被髮送端加密、接收端解密,同時還檢查數據的完整性。
1)接通階段:客戶機經過網絡向服務器打招呼,服務器迴應
2)密碼交換階段:客戶機與服務器之間交換雙方承認的密碼,通常選用RSA密碼算法
3)會談密碼階段:客戶機器與服務器間產生彼此交談的會談密碼
4)檢驗階段:客戶機檢驗服務器取得的密碼
5)客戶認證階段:服務器驗證客戶機的可信度
6)結束階段:客戶機與服務器之間相互交換結束的信息
SSL 提供了用於啓動 TCP/IP 鏈接的安全性「信號交換」:
1. 這種信號交換致使客戶和服務器贊成將使用的安全性級別,並履行鏈接的任何身份驗證要求.
2. 經過數字簽名和數字證書可實現瀏覽器和Web服務器雙方的身份驗證。
3.在用數字證書對雙方的身份驗證後,雙方就能夠用保密密鑰進行安全的會話了。
SSL協議具備兩層結構:
1)其底層是SSL記錄協議層(SSL Record Protocol Layer)
2)其高層是SSL握手協議層(SSL Handshake Protocol Layer), 主要用來讓客戶端及服務器確認彼此的身分,爲了保護SSL記錄封包中傳送的數據,Handshake協議還能協助雙方選擇鏈接時所會使用的加密算法、MAC算法、及相關密鑰。
SSL協議定義了兩個通訊主體:客戶(client)和服務器(server)。其中,客戶是協議的發起者
在客戶/服務器結構中,應用層從請求服務和提供服務的角度定義客戶和服務器,而SSL協議則從創建加密參數的過程當中所扮演的角色來定義客戶和服務器。
SSL握手協議包含四個階段:第一個階段創建安全能力;第二個階段服務器鑑別和密鑰交換;第三個階段客戶鑑別(可選的)和密鑰交換;第四個階段完成握手協議。
服務器認證階段:1)客戶端向服務器發送一個開始信息「Hello」以便開始一個新的會話鏈接;2)服務器根據客戶的信息肯定是否須要生成新的主密鑰,如須要則服務器在響應客戶的「Hello」信息時將包含生成主密鑰所需的信息;3)客戶根據收到的服務器響應信息,產生一個主密鑰,並用服務器的公開密鑰加密後傳給服務器;4)服務器恢復該主密鑰,並返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。
在此以前,服務器已經經過了客戶認證,這一階段主要完成對客戶的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名後的提問和其公開密鑰,從而向服務器提供認證。
第一步:身份驗證
第二步:發明密語規則
第三步:密語規則共享
第四步:進行安全通訊
簡要描述
1)客戶端向服務器發送一個開始信息「Hello」以便開始一個新的會話鏈接
2)服務器根據客戶的信息肯定是否須要生成新的主密鑰,如須要則服務器在響應客戶的「Hello」信息時將包含生成主密鑰所需的信息
3)客戶根據收到的服務器響應信息,產生一個主密鑰,並用服務器的公開密鑰加密後傳給服務器
4)服務器恢復該主密鑰,並返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。(以上爲服務端認證)
5)服務器已經經過了客戶認證,這一階段主要完成對客戶對服務端的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名後的提問和其公開密鑰,從而向服務器提供認證。(客戶端認證)
詳細描述
SSL 協議既用到了公鑰加密技術又用到了對稱加密技術,對稱加密技術雖然比公鑰加密技術的速度快,但是公鑰加密技術提供了更好的身份認證技術。SSL 的握手協議很是有效的讓客戶和服務器之間完成相互之間的身份認證,其主要過程以下:
1)客戶端的瀏覽器向服務器傳送客戶端SSL 協議的版本號,加密算法的種類,產生的隨機數,以及其餘服務器和客戶端之間通信所須要的各類信息。
2)服務器向客戶端傳送SSL 協議的版本號,加密算法的種類,隨機數以及其餘相關信息,同時服務器還將向客戶端傳送本身的證書。
3)客戶利用服務器傳過來的信息驗證服務器的合法性,服務器的合法性包括:證書是否過時,發行服務器證書的CA 是否可靠,發行者證書的公鑰可否正確解開服務器證書的「發行者的數字簽名」,服務器證書上的域名是否和服務器的實際域名相匹配。若是合法性驗證沒有經過,通信將斷開;若是合法性驗證經過,將繼續進行第四步。
4)用戶端隨機產生一個用於後面通信的「對稱密碼」,而後用服務器的公鑰(服務器的公鑰從步驟②中的服務器的證書中得到)對其加密,而後將加密後的「預主密碼」傳給服務器。 (服務端驗證成功)
5)若是服務器要求客戶的身份認證(在握手過程當中爲可選),用戶能夠創建一個隨機數而後對其進行數據簽名,將這個含有簽名的隨機數和客戶本身的證書以及加密過的「預主密碼」一塊兒傳給服務器。
6)若是服務器要求客戶的身份認證,服務器必須檢驗客戶證書和簽名隨機數的合法性,具體的合法性驗證過程包括:客戶的證書使用日期是否有效,爲客戶提供證書的CA 是否可靠,發行CA 的公鑰可否正確解開客戶證書的發行CA 的數字簽名,檢查客戶的證書是否在證書廢止列表(CRL)中。檢驗若是沒有經過,通信馬上中斷;若是驗證經過,服務器將用本身的私鑰解開加密的「預主密碼」,而後執行一系列步驟來產生主通信密碼(客戶端也將經過一樣的方法產生相同的主通信密碼)。
7)服務器和客戶端用相同的主密碼即「通話密碼」,一個對稱密鑰用於SSL 協議的安全數據通信的加解密通信。同時在SSL 通信過程當中還要完成數據通信的完整性,防止數據通信中的任何變化。
8)客戶端向服務器端發出信息,指明後面的數據通信將使用的步驟7中的主密碼爲對稱密鑰,同時通知服務器客戶端的握手過程結束。
9)服務器向客戶端發出信息,指明後面的數據通信將使用的步驟7中的主密碼爲對稱密鑰,同時通知客戶端服務器端的握手過程結束。
10)SSL 的握手部分結束,SSL 安全通道的數據通信開始,客戶和服務器開始使用相同的對稱密鑰進行數據通信,同時進行通信完整性的檢驗。
1)SSL協議須要在握手以前創建TCP鏈接,所以不能對UDP應用進行保護。
2)爲了避免致於因爲安全協議的使用而致使網絡性能大幅降低SSL協議並非默認地要求進行客戶鑑別