《大型網(wǎng)站HTTPS部署實(shí)踐點(diǎn)撥》要點(diǎn):
本文介紹了大型網(wǎng)站HTTPS部署實(shí)踐點(diǎn)撥,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
作者介紹
戰(zhàn)學(xué)超,青航數(shù)據(jù)架構(gòu)師.曾任職于NEC軟件、海爾B2B平臺(tái)巨商匯,負(fù)責(zé)企業(yè)數(shù)據(jù)平臺(tái)構(gòu)建、B2B電商平臺(tái)數(shù)據(jù)管理與搭建.擁有豐富DBA、系統(tǒng)運(yùn)維架構(gòu)經(jīng)驗(yàn),擅長(zhǎng)數(shù)據(jù)庫(kù)、數(shù)據(jù)平臺(tái)搭建、私有云部署、自動(dòng)化運(yùn)維等.
但是網(wǎng)站使用了HTTPS加密之后,有朋友提出使用F12還能看到用戶名密碼,例如:
這是因?yàn)镠TTPS(SSL)加密是發(fā)生在應(yīng)用層與傳輸層之間,所以在傳輸層看到的數(shù)據(jù)才是經(jīng)過加密的,而我們捕捉到的http post,是應(yīng)用層的數(shù)據(jù),此時(shí)還沒有經(jīng)過加密.加密數(shù)據(jù)只有客戶端和服務(wù)器端才能得到明文,客戶端到服務(wù)端的通信過程是安全的.及時(shí)數(shù)據(jù)在傳輸過程中被抓包,由于是加密數(shù)據(jù)也難以破解,從而保護(hù)數(shù)據(jù)在傳輸過程中的安全性.
其實(shí)除HTTPS加密之外,還有控件加密,用戶需要下載安全控件才能輸入密碼,這在銀行系統(tǒng),支付寶頁(yè)面都會(huì)經(jīng)常遇到:
通過加密控件可以解決在應(yīng)用層的http post的明文密碼.
HTTPS是有兩部分組成:HTTP +?SSL?/ TLS,也就是在HTTP上又加了一層處理加密信息的模塊.服務(wù)端和客戶端的信息傳輸都會(huì)通過SSL/TLS進(jìn)行加密,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù).具體是如何進(jìn)行加密、解密、驗(yàn)證的,且看下圖:
首先客戶端發(fā)起一個(gè)HTTPS的請(qǐng)求給服務(wù)器端,并且將瀏覽器自己支持的一套加密規(guī)則一起發(fā)送給服務(wù)端.
采用HTTPS協(xié)議的服務(wù)器端要有一套數(shù)字證書,可以自己制作,也可以向組織申請(qǐng).區(qū)別就是自己頒發(fā)的證書需要客戶端驗(yàn)證通過,才可以繼續(xù)訪問,而使用受信任的公司申請(qǐng)的證書一般不會(huì)彈出提示頁(yè)面.這套證書其實(shí)就是一對(duì)公鑰和私鑰.一般情況下可以快速申請(qǐng)免費(fèi)的ssl證書,而盡量避免自己生產(chǎn)證書.
服務(wù)端接收到客戶端的HTTPS請(qǐng)求后,會(huì)選擇出一種加密算法和HASH算法,以證書的形式返回給客戶端,證書還包含了公鑰、頒證機(jī)構(gòu)、網(wǎng)址、失效日期等信息.
服務(wù)器端將證書信息傳送會(huì)客戶端.
這部分工作是由客戶端的TLS來完成的,首先會(huì)驗(yàn)證公鑰是否有效,比如頒發(fā)機(jī)構(gòu),過期時(shí)間等等,如果發(fā)現(xiàn)異常,則會(huì)彈出一個(gè)警告框,提示證書存在問題.如果證書沒有問題,那么就生成一個(gè)隨即值.然后用證書對(duì)該隨機(jī)值進(jìn)行加密,一般證書驗(yàn)證通過后,在瀏覽器的地址欄會(huì)加上一把小鎖.
這部分傳送的是客戶端用證書加密后的隨機(jī)值,目的就是讓服務(wù)端得到這個(gè)隨機(jī)值,以后客戶端和服務(wù)端的通信就可以通過這個(gè)隨機(jī)值來進(jìn)行加密解密.
服務(wù)端用私鑰解密后,得到了客戶端傳過來的隨機(jī)值(私鑰),然后把內(nèi)容通過該值進(jìn)行對(duì)稱加密.所謂對(duì)稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法獲取內(nèi)容,而正好客戶端和服務(wù)端都知道這個(gè)私鑰,所以只要加密算法夠復(fù)雜,私鑰夠復(fù)雜,數(shù)據(jù)就夠安全.
這部分信息是服務(wù)端用私鑰加密后的信息,可以在客戶端被還原.
客戶端用之前生成的私鑰解密服務(wù)端傳過來的信息,獲取了解密后的內(nèi)容.因?yàn)檫@串密鑰只有客戶端和服務(wù)端知道,所以即使中間請(qǐng)求被攔截、數(shù)據(jù)被抓包也是沒法解密數(shù)據(jù)的,以此保證了通信的安全.
此外還可以自動(dòng)生成自簽名證書,自簽名證書一般不會(huì)被瀏覽器驗(yàn)證通過,所以很少在生產(chǎn)環(huán)境中出現(xiàn),一般在內(nèi)部測(cè)試環(huán)境經(jīng)常用到.
一般情況下不同的證書,認(rèn)證等級(jí)、顯示圖標(biāo)不同,在域名的支持下、價(jià)格、保額費(fèi)用上也不同:
SSL證書廠商的選擇這里不再做過多推薦,總的原則是越大的廠商越可靠.選擇的廠商一定要提前調(diào)查好是否被信任. 如之前的沃通事件就導(dǎo)致很多公司聯(lián)系沃通更換新證書后才被瀏覽器繼續(xù)信任.
首先在購(gòu)買證書的時(shí)候,證書廠商都會(huì)在其幫助文檔中詳述證書部署指南,一般來說按照幫助文檔一步一步部署即可.
一般會(huì)有Apache、IIS、Nginx、Tomcat等多種部署方式,這里以Nginx為例做簡(jiǎn)單介紹.
首先是證書的申請(qǐng)和下載.作者個(gè)人自己網(wǎng)站的正式是通過騰訊云提供的免費(fèi)SSL正式申請(qǐng)服務(wù)申請(qǐng)的:
下載后如下:
在Nginx的部署目錄下的conf下建立sslkey文件夾,將上述下載后的Nginx文件下的1_www.fineops.com_bundle.crt 和2_www.fineops.com.key兩個(gè)文件上傳到sslkey中.修改nginx.conf文件,按照騰訊云幫助文檔操作即可.
這里需要注意,一般證書部署后,需要設(shè)置一些http自動(dòng)跳轉(zhuǎn)到https,這一般在幫助文檔中不會(huì)有.可以采用以下幾種方式:
我們這里采用了proxy_redirect的方式,在nginx中配置:proxy_redirect http://www.fineops.com:443/ https://www.fineops.com/;實(shí)現(xiàn)自動(dòng)跳轉(zhuǎn)至https.
在HTTP轉(zhuǎn)HTTPS的過程中,主要注意頁(yè)面跳轉(zhuǎn)、第三方接口、靜態(tài)資源CDN等方面在轉(zhuǎn)HTTPS之后的測(cè)試,確保跳轉(zhuǎn)和加載沒有問題.
文章來自微信公眾號(hào):DBAplus社群
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/2208.html