HTTPS
HTTPS(全稱(chēng):Hypertext Transfer Protocol over Secure Socket Layer)摔桦,是以安全為目標(biāo)的HTTP通道迷捧,簡(jiǎn)單講是HTTP的安全版。即HTTP下加入SSL層吆鹤,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。 它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系),句法類(lèi)同http:體系待德。用于安全的HTTP數(shù)據(jù)傳輸。https:URL表明它使用了HTTPS枫夺,但HTTPS存在不同于HTTP的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)将宪。這個(gè)系統(tǒng)的最初研發(fā)由網(wǎng)景公司進(jìn)行,提供了身份驗(yàn)證與加密通訊方法橡庞,現(xiàn)在它被廣泛用于萬(wàn)維網(wǎng)上安全敏感的通訊较坛,例如交易支付方面
HTTPS和HTTP的區(qū)別
https協(xié)議需要到ca申請(qǐng)證書(shū),一般免費(fèi)證書(shū)很少扒最,需要交費(fèi)丑勤。
http是超文本傳輸協(xié)議,信息是明文傳輸吧趣,https 則是具有安全性的ssl加密傳輸協(xié)議法竞。
http和https使用的是完全不同的連接方式,用的端口也不一樣强挫,前者是80爪喘,后者是443。
http的連接很簡(jiǎn)單纠拔,是無(wú)狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸泛豪、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議稠诲,比http協(xié)議安全。
https的實(shí)現(xiàn)原理
有兩種基本的加解密算法類(lèi)型
1. 對(duì)稱(chēng)加密:密鑰只有一個(gè)诡曙,加密解密為同一個(gè)密碼臀叙,且加解密速度快,典型的對(duì)稱(chēng)加密算法有DES价卤、AES等劝萤;
2. 非對(duì)稱(chēng)加密:密鑰成對(duì)出現(xiàn)(且根據(jù)公鑰無(wú)法推知私鑰,根據(jù)私鑰也無(wú)法推知公鑰)慎璧,加密解密使用不同密鑰(公鑰加密需要私鑰解密床嫌,私鑰加密需要公鑰解密)跨释,相對(duì)對(duì)稱(chēng)加密速度較慢,典型的非對(duì)稱(chēng)加密算法有RSA厌处、DSA等鳖谈。
https的通信過(guò)程
https通信的優(yōu)點(diǎn)
1. 客戶(hù)端產(chǎn)生的密鑰只有客戶(hù)端和服務(wù)器端能得到;
2. 加密的數(shù)據(jù)只有客戶(hù)端和服務(wù)器端才能得到明文阔涉;
3. 客戶(hù)端到服務(wù)端的通信是安全的缆娃。
HTTPS解決的問(wèn)題
信任主機(jī)的問(wèn)題.
采用https的服務(wù)器必須從CA (Certificate Authority)申請(qǐng)一個(gè)用于證明服務(wù)器用途類(lèi)型的證書(shū)。該證書(shū)只有用于對(duì)應(yīng)的服務(wù)器的時(shí)候瑰排,客戶(hù)端才信任此主機(jī)贯要。通訊過(guò)程中的數(shù)據(jù)的泄密和被篡改
SSL
SSL介紹
SSL安全套接層協(xié)議(Secure Socket Layer)
為Netscape所研發(fā),用以保障在Internet上數(shù)據(jù)傳輸之安全椭住,利用數(shù)據(jù)加密(Encryption)技術(shù)崇渗,可確保數(shù)據(jù)在網(wǎng)絡(luò)上之傳輸過(guò)程中不會(huì)被截取及竊聽(tīng)。目前一般通用之規(guī)格為40 bit之安全標(biāo)準(zhǔn)函荣,美國(guó)則已推出128 bit之更高安全標(biāo)準(zhǔn)显押,但限制出境。只要3.0版本以上之IE或Netscape瀏覽器即可支持SSL傻挂。
當(dāng)前版本為3.0乘碑。它已被廣泛地用于Web瀏覽器與服務(wù)器之間的身份認(rèn)證和加密數(shù)據(jù)傳輸。
SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間金拒,是一種國(guó)際標(biāo)準(zhǔn)的加密及身份認(rèn)證通信協(xié)議,為T(mén)CP提供一個(gè)可靠的端到端的安全服務(wù)兽肤,為兩個(gè)通訊個(gè)體之間提供保密性和完整性(身份鑒別)。SSL協(xié)議可分為兩層:SSL記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)之上绪抛,為高層協(xié)議提供數(shù)據(jù)封裝资铡、壓縮、加密等基本功能的支持幢码。SSL握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上笤休,用于在實(shí)際的數(shù)據(jù)傳輸開(kāi)始前,通訊雙方進(jìn)行身份認(rèn)證症副、協(xié)商加密算法店雅、交換加密密鑰等。
SSL協(xié)議特點(diǎn)
SSL協(xié)議可用于保護(hù)正常運(yùn)行于TCP之上的任何應(yīng)用協(xié)議贞铣,如HTTP闹啦、FTP、SMTP或Telnet的通信辕坝,最常見(jiàn)的是用SSL來(lái)保護(hù)HTTP的通信窍奋。
SSL協(xié)議的優(yōu)點(diǎn)在于它是與應(yīng)用層協(xié)議無(wú)關(guān)的。高層的應(yīng)用協(xié)議(如HTTP、FTP琳袄、Telnet等)能透明地建立于SSL協(xié)議之上江场。
SSL協(xié)議在應(yīng)用層協(xié)議之前就已經(jīng)完成加密算法、通信密鑰的協(xié)商以及服務(wù)器的認(rèn)證工作挚歧。在此之后應(yīng)用層協(xié)議所傳送的數(shù)據(jù)都會(huì)被加密扛稽,從而保證通信的安全性。
SSL協(xié)議使用通信雙方的客戶(hù)證書(shū)以及CA根證書(shū)滑负,允許客戶(hù)/服務(wù)器應(yīng)用以一種不能被偷聽(tīng)的方式通信在张,在通信雙方間建立起了一條安全的、可信任的通信通道矮慕。
該協(xié)議使用密鑰對(duì)傳送數(shù)據(jù)加密帮匾,許多網(wǎng)站都是通過(guò)這種協(xié)議從客戶(hù)端接收信用卡編號(hào)等保密信息。常用于交易過(guò)程中痴鳄。
SSL協(xié)議工作的基本流程
接通階段:客戶(hù)機(jī)通過(guò)網(wǎng)絡(luò)向服務(wù)器打招呼瘟斜,服務(wù)器回應(yīng)
密碼交換階段:客戶(hù)機(jī)與服務(wù)器之間交換雙方認(rèn)可的密碼,一般選用RSA密碼算法
會(huì)談密碼階段:客戶(hù)機(jī)器與服務(wù)器間產(chǎn)生彼此交談的會(huì)談密碼
檢驗(yàn)階段:客戶(hù)機(jī)檢驗(yàn)服務(wù)器取得的密碼
客戶(hù)認(rèn)證階段:服務(wù)器驗(yàn)證客戶(hù)機(jī)的可信度
結(jié)束階段:客戶(hù)機(jī)與服務(wù)器之間相互交換結(jié)束的信息
詳細(xì)描述 (終于搞清流程了)
SSL 協(xié)議既用到了公鑰加密技術(shù)又用到了對(duì)稱(chēng)加密技術(shù)痪寻,對(duì)稱(chēng)加密技術(shù)雖然比公鑰加密技術(shù)的速度快螺句,可是公鑰加密技術(shù)提供了更好的身份認(rèn)證技術(shù)。SSL 的握手協(xié)議非常有效的讓客戶(hù)和服務(wù)器之間完成相互之間的身份認(rèn)證橡类,其主要過(guò)程如下:
1. 客戶(hù)端的瀏覽器向服務(wù)器傳送客戶(hù)端SSL 協(xié)議的版本號(hào)蛇尚,加密算法的種類(lèi),產(chǎn)生的隨機(jī)數(shù)顾画,以及其他服務(wù)器和客戶(hù)端之間通訊所需要的各種信息取劫。
2. 服務(wù)器向客戶(hù)端傳送SSL 協(xié)議的版本號(hào),加密算法的種類(lèi)研侣,隨機(jī)數(shù)以及其他相關(guān)信息谱邪,同時(shí)服務(wù)器還將向客戶(hù)端傳送自己的證書(shū)。
3. 客戶(hù)利用服務(wù)器傳過(guò)來(lái)的信息驗(yàn)證服務(wù)器的合法性庶诡,服務(wù)器的合法性包括:證書(shū)是否過(guò)期惦银,發(fā)行服務(wù)器證書(shū)的CA 是否可靠,發(fā)行者證書(shū)的公鑰能否正確解開(kāi)服務(wù)器證書(shū)的“發(fā)行者的數(shù)字簽名”末誓,服務(wù)器證書(shū)上的域名是否和服務(wù)器的實(shí)際域名相匹配扯俱。如果合法性驗(yàn)證沒(méi)有通過(guò),通訊將斷開(kāi)基显;如果合法性驗(yàn)證通過(guò),將繼續(xù)進(jìn)行第四步善炫。
4. 用戶(hù)端隨機(jī)產(chǎn)生一個(gè)用于后面通訊的“對(duì)稱(chēng)密碼”撩幽,然后用服務(wù)器的公鑰(服務(wù)器的公鑰從步驟②中的服務(wù)器的證書(shū)中獲得)對(duì)其加密,然后將加密后的“預(yù)主密碼”傳給服務(wù)器。 (服務(wù)端驗(yàn)證成功)
5. 如果服務(wù)器要求客戶(hù)的身份認(rèn)證(在握手過(guò)程中為可選)窜醉,用戶(hù)可以建立一個(gè)隨機(jī)數(shù)然后對(duì)其進(jìn)行數(shù)據(jù)簽名宪萄,將這個(gè)含有簽名的隨機(jī)數(shù)和客戶(hù)自己的證書(shū)以及加密過(guò)的“預(yù)主密碼”一起傳給服務(wù)器。
6. 如果服務(wù)器要求客戶(hù)的身份認(rèn)證榨惰,服務(wù)器必須檢驗(yàn)客戶(hù)證書(shū)和簽名隨機(jī)數(shù)的合法性拜英,具體的合法性驗(yàn)證過(guò)程包括:客戶(hù)的證書(shū)使用日期是否有效,為客戶(hù)提供證書(shū)的CA 是否可靠琅催,發(fā)行CA 的公鑰能否正確解開(kāi)客戶(hù)證書(shū)的發(fā)行CA 的數(shù)字簽名居凶,檢查客戶(hù)的證書(shū)是否在證書(shū)廢止列表(CRL)中。檢驗(yàn)如果沒(méi)有通過(guò)藤抡,通訊立刻中斷侠碧;如果驗(yàn)證通過(guò),服務(wù)器將用自己的私鑰解開(kāi)加密的“預(yù)主密碼”缠黍,然后執(zhí)行一系列步驟來(lái)產(chǎn)生主通訊密碼(客戶(hù)端也將通過(guò)同樣的方法產(chǎn)生相同的主通訊密碼)弄兜。
7. 服務(wù)器和客戶(hù)端用相同的主密碼即“通話(huà)密碼”,一個(gè)對(duì)稱(chēng)密鑰用于SSL 協(xié)議的安全數(shù)據(jù)通訊的加解密通訊瓷式。同時(shí)在SSL 通訊過(guò)程中還要完成數(shù)據(jù)通訊的完整性替饿,防止數(shù)據(jù)通訊中的任何變化。
8. 客戶(hù)端向服務(wù)器端發(fā)出信息贸典,指明后面的數(shù)據(jù)通訊將使用的步驟7中的主密碼為對(duì)稱(chēng)密鑰视卢,同時(shí)通知服務(wù)器客戶(hù)端的握手過(guò)程結(jié)束。
9. 服務(wù)器向客戶(hù)端發(fā)出信息瓤漏,指明后面的數(shù)據(jù)通訊將使用的步驟7中的主密碼為對(duì)稱(chēng)密鑰腾夯,同時(shí)通知客戶(hù)端服務(wù)器端的握手過(guò)程結(jié)束。
10. SSL 的握手部分結(jié)束蔬充,SSL 安全通道的數(shù)據(jù)通訊開(kāi)始蝶俱,客戶(hù)和服務(wù)器開(kāi)始使用相同的對(duì)稱(chēng)密鑰進(jìn)行數(shù)據(jù)通訊,同時(shí)進(jìn)行通訊完整性的檢驗(yàn)饥漫。
SSL缺點(diǎn)
SSL協(xié)議需要在握手之前建立TCP連接榨呆,因此不能對(duì)UDP應(yīng)用進(jìn)行保護(hù)。
為了不致于由于安全協(xié)議的使用而導(dǎo)致網(wǎng)絡(luò)性能大幅下降SSL協(xié)議并不是默認(rèn)地要求進(jìn)行客戶(hù)鑒別