很多人存在這樣的疑惑就是http與https的區(qū)別,這篇文章就跟大家介紹一下。一句話(huà)總結(jié)HTTPS是身披SSL外殼的HTTP,HTTPS更安全,實(shí)際使用中絕大多數(shù)的網(wǎng)站現(xiàn)在都采用的是HTTPS協(xié)議,這也是未來(lái)互聯(lián)網(wǎng)發(fā)展的趨勢(shì)。
網(wǎng)絡(luò)協(xié)議是計(jì)算機(jī)之間為了實(shí)現(xiàn)網(wǎng)絡(luò)通信而達(dá)成的一種“約定”或者”規(guī)則“,有了這種”約定“,不同廠(chǎng)商的生產(chǎn)設(shè)備,以及不同操作系統(tǒng)組成的計(jì)算機(jī)之間,就可以實(shí)現(xiàn)通信。
超文本傳輸協(xié)議,是一個(gè)基于請(qǐng)求與響應(yīng),無(wú)狀態(tài)的,應(yīng)用層的協(xié)議,?;赥CP/IP協(xié)議傳輸數(shù)據(jù),互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。設(shè)計(jì)HTTP的初衷是為了提供一種發(fā)布和接收HTML頁(yè)面的方法。
HTTPS是一種通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行安全通信的傳輸協(xié)議,經(jīng)由HTTP進(jìn)行通信,利用SSL/TLS建立全信道,加密數(shù)據(jù)包。HTTPS使用的主要目的是提供對(duì)網(wǎng)站服務(wù)器的身份認(rèn)證,同時(shí)保護(hù)交換數(shù)據(jù)的隱私與完整性。
無(wú)狀態(tài):協(xié)議對(duì)客戶(hù)端沒(méi)有狀態(tài)存儲(chǔ),對(duì)事物處理沒(méi)有“記憶”能力,比如訪(fǎng)問(wèn)一個(gè)網(wǎng)站需要反復(fù)進(jìn)行登錄操作 無(wú)連接:HTTP/1.1之前,由于無(wú)狀態(tài)特點(diǎn),每次請(qǐng)求需要通過(guò)TCP三次握手四次揮手,和服務(wù)器重新建立連接。比如某個(gè)客戶(hù)機(jī)在短時(shí)間多次請(qǐng)求同一個(gè)資源,服務(wù)器并不能區(qū)別是否已經(jīng)響應(yīng)過(guò)用戶(hù)的請(qǐng)求,所以每次需要重新響應(yīng)請(qǐng)求,需要耗費(fèi)不必要的時(shí)間和流量。 ? 基于請(qǐng)求和響應(yīng):基本的特性,由客戶(hù)端發(fā)起請(qǐng)求,服務(wù)端響應(yīng) ? 簡(jiǎn)單快速、靈活 ? 通信使用明文、請(qǐng)求和響應(yīng)不會(huì)對(duì)通信方進(jìn)行確認(rèn)、無(wú)法保護(hù)數(shù)據(jù)的完整性
內(nèi)容加密:采用混合加密技術(shù),中間者無(wú)法直接查看明文內(nèi)容 ? 驗(yàn)證身份:通過(guò)證書(shū)認(rèn)證客戶(hù)端訪(fǎng)問(wèn)的是自己的服務(wù)器 ? 保護(hù)數(shù)據(jù)完整性:防止傳輸?shù)膬?nèi)容被中間人冒充或者篡改 ? 收方能夠證實(shí)發(fā)送方的真實(shí)身份;
https的端口是443,而http的端口是80,當(dāng)然兩者的連接方式也是不太一樣的。
HTTP 是超文本傳輸協(xié)議,信息是明文傳輸,HTTPS 則是具有安全性的 SSL 加密傳輸協(xié)議。HTTP 的連接很簡(jiǎn)單,是無(wú)狀態(tài)的。HTTPS 協(xié)議是由 SSL+HTTP 協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比 HTTP 協(xié)議安全
HTTPS 協(xié)議需要到 CA (Certificate Authority,證書(shū)頒發(fā)機(jī)構(gòu))申請(qǐng)證書(shū),一般免費(fèi)證書(shū)較少,因而需要一定費(fèi)用。HTTP不需要。
HTTPS 其實(shí)就是建構(gòu)在 SSL/TLS 之上的 HTTP 協(xié)議,所以,要比較 HTTPS 比 HTTP 更耗費(fèi)服務(wù)器資源。
HTTPS是HTTP協(xié)議的安全版本,HTTP協(xié)議的數(shù)據(jù)傳輸是明文的,是不安全的,HTTPS使用了SSL/TLS協(xié)議進(jìn)行了加密處理。http端口是80,https端口是443。
一般http中存在如下問(wèn)題:
安全更高 請(qǐng)求信息明文傳輸,容易被竊聽(tīng)截取。 數(shù)據(jù)的完整性未校驗(yàn),容易被篡改 沒(méi)有驗(yàn)證對(duì)方身份,存在冒充危險(xiǎn) SEO搜索引擎 谷歌搜索引擎指南中就提出來(lái)如果網(wǎng)站是HTTPS網(wǎng)址(安裝SSL安全證書(shū))在一定條件因素中會(huì)對(duì)網(wǎng)站的權(quán)重和排名有一定的正面作用。 第三方強(qiáng)制要求 蘋(píng)果應(yīng)用商店 騰訊小程序
我們都知道 HTTPS 能夠加密信息,以免敏感信息被第三方獲取,所以很多銀行網(wǎng)站或電子郵箱等等安全級(jí)別較高的服務(wù)都會(huì)采用 HTTPS 協(xié)議。
1、客戶(hù)端發(fā)起 HTTPS 請(qǐng)求
這個(gè)沒(méi)什么好說(shuō)的,就是用戶(hù)在瀏覽器里輸入一個(gè) https 網(wǎng)址,然后連接到 server 的 443 端口。
2、服務(wù)端的配置
采用 HTTPS 協(xié)議的服務(wù)器必須要有一套數(shù)字證書(shū),可以自己制作,也可以向組織申請(qǐng),區(qū)別就是自己頒發(fā)的證書(shū)需要客戶(hù)端驗(yàn)證通過(guò),才可以繼續(xù)訪(fǎng)問(wèn),而使用受信任的公司申請(qǐng)的證書(shū)則不會(huì)彈出提示頁(yè)面。
這套證書(shū)其實(shí)就是一對(duì)公鑰和私鑰,如果對(duì)公鑰和私鑰不太理解,可以想象成一把鑰匙和一個(gè)鎖頭,只是全世界只有你一個(gè)人有這把鑰匙,你可以把鎖頭給別人,別人可以用這個(gè)鎖把重要的東西鎖起來(lái),然后發(fā)給你,因?yàn)橹挥心阋粋€(gè)人有這把鑰匙,所以只有你才能看到被這把鎖鎖起來(lái)的東西。
3、傳送證書(shū)
這個(gè)證書(shū)其實(shí)就是公鑰,只是包含了很多信息,如證書(shū)的頒發(fā)機(jī)構(gòu),過(guò)期時(shí)間等等。
4、客戶(hù)端解析證書(shū)
這部分工作是有客戶(hù)端的TLS來(lái)完成的,首先會(huì)驗(yàn)證公鑰是否有效,比如頒發(fā)機(jī)構(gòu),過(guò)期時(shí)間等等,如果發(fā)現(xiàn)異常,則會(huì)彈出一個(gè)警告框,提示證書(shū)存在問(wèn)題。
如果證書(shū)沒(méi)有問(wèn)題,那么就生成一個(gè)隨機(jī)值,然后用證書(shū)對(duì)該隨機(jī)值進(jìn)行加密,就好像上面說(shuō)的,把隨機(jī)值用鎖頭鎖起來(lái),這樣除非有鑰匙,不然看不到被鎖住的內(nèi)容。
5、傳送加密信息
這部分傳送的是用證書(shū)加密后的隨機(jī)值,目的就是讓服務(wù)端得到這個(gè)隨機(jī)值,以后客戶(hù)端和服務(wù)端的通信就可以通過(guò)這個(gè)隨機(jī)值來(lái)進(jìn)行加密解密了。
6、服務(wù)端解密信息
服務(wù)端用私鑰解密后,得到了客戶(hù)端傳過(guò)來(lái)的隨機(jī)值(私鑰),然后把內(nèi)容通過(guò)該值進(jìn)行對(duì)稱(chēng)加密,所謂對(duì)稱(chēng)加密就是,將信息和私鑰通過(guò)某種算法混合在一起,這樣除非知道私鑰,不然無(wú)法獲取內(nèi)容,而正好客戶(hù)端和服務(wù)端都知道這個(gè)私鑰,所以只要加密算法夠彪悍,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全。
7、傳輸加密后的信息
這部分信息是服務(wù)端用私鑰加密后的信息,可以在客戶(hù)端被還原。
8、客戶(hù)端解密信息
客戶(hù)端用之前生成的私鑰解密服務(wù)端傳過(guò)來(lái)的信息,于是獲取了解密后的內(nèi)容,整個(gè)過(guò)程第三方即使監(jiān)聽(tīng)到了數(shù)據(jù),也束手無(wú)策。
公鑰和私鑰就是俗稱(chēng)的不對(duì)稱(chēng)加密方式。公鑰(Public Key)與私鑰(Private Key)是通過(guò)一種算法得到的一個(gè)密鑰對(duì)(即一個(gè)公鑰和一個(gè)私鑰),公鑰是密鑰對(duì)外公開(kāi)的部分,私鑰則是非公開(kāi)的部分。公鑰通常用于加密會(huì)話(huà)密鑰、驗(yàn)證數(shù)字簽名,或加密可以用相應(yīng)的私鑰解密的數(shù)據(jù)。
對(duì)稱(chēng)加密的特點(diǎn):對(duì)稱(chēng)密碼體制中只有一種密鑰,并且是非公開(kāi)的。如果要解密就得讓對(duì)方知道密鑰,所以想要保證其安全性就要保證密鑰的安全。
非對(duì)稱(chēng)加密的特點(diǎn):算法強(qiáng)度復(fù)雜、安全性依賴(lài)于算法與密鑰但是由于其算法復(fù)雜,而使得加密解密速度沒(méi)有對(duì)稱(chēng)加密解密的速度快。非對(duì)稱(chēng)密鑰體制有兩種密鑰,其中一個(gè)是公開(kāi)的,這樣就可以不需要像對(duì)稱(chēng)密碼那樣傳輸對(duì)方的密鑰了,這樣安全性就大了很多。
非對(duì)稱(chēng)加密公鑰和私鑰的使用方法:(1) 公鑰加密私鑰解密。(2) 私鑰做數(shù)字簽名,公鑰驗(yàn)證。
通過(guò)這種算法得到的密鑰對(duì)能保證在世界范圍內(nèi)是唯一的。使用這個(gè)密鑰對(duì)的時(shí)候,如果用其中一個(gè)密鑰加密一段數(shù)據(jù),則必須用另一個(gè)密鑰才能解密。比如用公鑰加密的數(shù)據(jù)就必須用私鑰才能解密,如果用私鑰進(jìn)行加密也必須用公鑰才能解密,否則將無(wú)法成功解密。
數(shù)字證書(shū)采用公鑰體制,即利用一對(duì)互相匹配的密鑰對(duì)進(jìn)行加密、解密。每個(gè)用戶(hù)自己設(shè)定一把特定的僅為本人所知的私有密鑰(私鑰),用它進(jìn)行解密和簽名; 同時(shí)設(shè)定一把公共密鑰(公鑰)并由本人公開(kāi),為一組用戶(hù)所共享,用于加密和驗(yàn)證簽名。由于密鑰僅為本人所有,這樣就產(chǎn)生了別人無(wú)法生成的文件,也就形成了數(shù)字簽名。 數(shù)字證書(shū)是一個(gè)經(jīng)證書(shū)授權(quán)中心(CA)數(shù)字簽名的包含公開(kāi)密鑰擁有者信息以及公開(kāi)密鑰的文件。 最簡(jiǎn)單的證書(shū)包含一個(gè)公開(kāi)密鑰、名稱(chēng)以及證書(shū)授權(quán)中心的數(shù)字簽名。數(shù)字證書(shū)還有一個(gè)重要的特征就是只在特定的時(shí)間段內(nèi)有效。
SSL(Secure Socket Layer,安全套接字層):1994年為 Netscape 所研發(fā),SSL 協(xié)議位于 TCP/IP 協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。 獲取ssl證書(shū)
阿里云、騰訊云、華為云等國(guó)內(nèi)運(yùn)營(yíng)商提供的免費(fèi)1年證書(shū),例如阿里云1個(gè)賬號(hào),最多申請(qǐng)20個(gè)免費(fèi)證書(shū),單域名,不支持泛域名
certbot 是官方推薦的簽發(fā)工具 acme.sh 實(shí)現(xiàn)了 acme 協(xié)議, 可以從 letsencrypt 生成免費(fèi)的證書(shū). 一般有效期3個(gè)月,利用腳本可自動(dòng)續(xù)期(如果使用了阿里云的CDN,在部署證書(shū)時(shí)候,需要手動(dòng)上傳證書(shū)或者利用腳本自動(dòng)配置證書(shū),所以很不便捷)
聯(lián)系客服