2014年底,百度已對部分地區開放HTTPS加密搜索服務,隨後,百度實行全站化HTTPS安全加密服務,百度HTTPS安全加密已覆蓋主流浏覽器,旨在用戶打造了一個更隱私化的互聯網空間、加速了國內互聯網的HTTPS化。同時也希望更多網站加入到HTTPS的隊伍中來,為網絡安全貢獻一份力量。
第一節:什麼是HTTPS
隨著網絡不斷融入日常生活和工作當中,網絡安全問題一直都是一個不能忽略的問題。據CNCERT監測發現,2015年網頁仿冒、拒絕服務攻擊等已經形成成熟地下產業鏈的威脅仍然呈現增長趨勢,針對中國網站的仿冒頁面(URL鏈接)191699個,較2014年增長85.7%,涉及IP地址20488個,較2014年增長199.4%。網頁篡改、網站後門等攻擊事件層出不窮,黨政機關、科研機構、重要行業單位網站依然是黑客組織攻擊特別是APT攻擊的重點目標。2015年被植入後門的中國網站數量為75028個,較2014年增長86.7%,其中政府網站為3514個,較2014年增長130%。
2014年底,百度已對部分地區開放HTTPS加密搜索服務,隨後,百度實行全站化HTTPS安全加密服務,百度HTTPS安全加密已覆蓋主流浏覽器,旨在用戶打造了一個更隱私化的互聯網空間、加速了國內互聯網的HTTPS化。同時也希望更多網站加入到HTTPS的隊伍中來,為網絡安全貢獻一份力量。
HTTPS是什麼
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 HTTPS存在不同於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統提供了身份驗證與加密通訊方法。現在它被廣泛用於萬維網上安全敏感的通訊,例如交易支付方面。
傳統的HTTP模式,存在著大量的灰色中間環節,相關信息很容易被竊取,但HTTPS卻是通過認證用戶與服務器,將數據准確地發送到客戶機與服務器,並采用加密方式以防數據中途被盜取,大大降低了第三方竊取信息、篡改冒充身份的風險。
HTTPS安全原理解析
HTTPS主要由有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸的數據都是加密後的數據。HTTPS與HTTP的原理區別可以觀察下圖:
HTTP工作原理:
①客戶端的浏覽器首先要通過網絡與服務器建立連接,該連接是通過TCP來完成的,一般TCP連接的端口號是80。 建立連接後,客戶機發送一個請求給服務器,請求方式的格式為:統一資源標識符(URL)、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和許可內容。
② 服務器接到請求後,給予相應的響應信息,其格式為一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括服務器信息、實體信息和可能的內容。
HTTPS的工作原理:
①. 客戶端將它所支持的算法列表和一個用作產生密鑰的隨機數發送給服務器;
②. 服務器從算法列表中選擇一種加密算法,並將它和一份包含服務器公用密鑰的證書發送給客戶端;該證書還包含了用於認證目的的服務器標識,服務器同時還提供了一個用作產生密鑰的隨機數;
③. 客戶端對服務器的證書進行驗證(有關驗證證書,可以參考數字簽名),並抽取服務器的公用密鑰;然後,再產生一個稱作pre_master_secret的隨機密碼串,並使用服務器的公用密鑰對其進行加密(參考非對稱加/解密),並將加密後的信息發送給服務器;
④. 客戶端與服務器端根據pre_master_secret以及客戶端與服務器的隨機數值獨立計算出加密和MAC密鑰(參考DH密鑰交換算法)。
⑤. 客戶端將所有握手消息的MAC值發送給服務器;
⑥. 服務器將所有握手消息的MAC值發送給客戶端。
HTTPS的數據加密性:
HTTPS中數據的保密性主要是通過加密完成的。加密算法一般分為兩種,一種是非對稱加密(也叫公鑰加密),另外一種是對稱加密(也叫密鑰加密)。
HTTPS使用非對稱加解密主要有兩個作用,一個是密鑰協商,另外可以用來做數字簽名。所謂密鑰協商簡單說就是根據雙方各自的信息計算得出雙方傳輸內容時對稱加解密需要使用的密鑰。如下圖:
HTTS多次握手和復雜的加密機制有效的加大了網站的安全性,加密機制與認證機制可以減少網站被劫持和假冒的風險!
第二節:搭建HTTPS的准備工作
搭建HTTPS網站的准備工作
簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,所以HTTPS網站搭建中比較重要的內容都是圍繞著SSL證書進行的。
那我們應該做什麼准備工作,如下圖:
網站選型:HTTPS會提升網站安全性,同樣也拉高技術成本,所以我們建議一些涉及到用戶隱私信息的網站進行HTTPS建設,公開性的內容是根據網站自身情況進行選擇;
證書申請:
①CSR文件制作:申請SSL證書之前,需要制作CSR文件,CSR,Certificate Signing Request,是制作SSL 證書的必要步驟。一個 CSR 文件中描述了 SSL 證書持有人的信息(如個人姓名或公司名稱)、聯系地址等,用於驗證 SSL 證書和域名是同一個人持有,以確保網站的合法性。制作完成後向 SSL 證書提供商上傳這個文件,以獲得最終的 SSL 證書。
在申請服務器證書時,不要出現某些特殊字符,否則在您提交CSR後,會出現"105"的錯誤代碼。這個錯誤是由於在您生成CSR時,輸入的信息中包含一些特殊字符,如:(@,#,&,!,等等,例如:您可以將"&"用"and"代替)。
在您生成CSR時,公用名(Common Name)是必須填寫的,但許多客戶填寫這一項時,經常填錯或不符合標准。
公用名(Common Name) 是您的主機名+域名,比如:www.willrey.com維瑞的服務器證書是頒發給某一台主機的,而不是一個域,您的公用名(Common Name)必須與您要使用服務器證書的主機的全名完全相同,因為www.domain.com與domain.com是不同的。
要生成CSR文件,你必須為服務器創建一對密鑰對。密鑰對和證書是不可分開的,一旦您遺失了公鑰、私鑰或密碼,重新生成密鑰對後,和原來的證書就不匹配了。如果您申請的是全球信SSL證書,可以重新提交CSR免費重發證書;如果您申請的是閃快SSL證書,就必須重新付費申請證書。
②CA認證證書申請:將CSR提交給CA,CA一般有2種認證方式:
1)域名認證:一般通過對管理員郵箱認證的方式,這種方式認證速度快,但是簽發的證書中沒有企業的名稱; 2)企業文檔認證:需要提供企業的營業執照。 也有需要同時認證以上2種方式的證書,叫EV ssl證書,這種證書可以使IE7以上的浏覽器地址欄變成綠色,所以認證也最嚴格。
③證書安裝:
在收到CA的證書後,可以將證書部署上服務器,一般APACHE文件直接將KEY+CER復制到文件上,然後修改httpD.CONF文件;TOMCAT等,需要將CA簽發的證書CER文件導入JKS文件後,復制上服務器,然後修改SERVER.XML;IIS需要處理掛起的請求,將CER文件導入。
鑒於對建站成本的考慮,需要高級別ssl 證書的往往是大中型網站,如網上銀行、購物網站、金融證券、政府機構等,諸如個人博客之類的小型站點完全可以先嘗試免費ssl證書。
服務器選購:
考慮到CSR和SSL證書與服務器的環境配置及功能支持有必不可分的聯系,建議在再選購服務器之前做好充分的考慮。尤其是對服務器是否支持SSL功能,是否與證書匹配等功能需要重視;
網站開發:
由於網站功能與開發語言各不相同,在這就不詳細說明網站開發的准備工作了,HTTPS網站與HTTP網站在開發期間基本是一致的,只是使用協議不同。
HTTPS網站搭建中的注意事項
HTTPS網站的加密功能決定了在搭建過程中一定要注意一些問題:
1、衡量投入與產出:無論是做一個新的HTTPS站還是從HTTP轉成HTTPS的網站,都需要投入硬件、軟件、人力等新的成本,所以在未評估之前建議不要做;一旦做好,輕易不要關閉HTTPS網站倒退回HTTP,這種倒退行為很容易造成不利影響;
2、證書申請機構:在選擇申請機構之前一定要考察核對該機構是否有可信資質,有些機構沒有被國際機構認可(浏覽器上會沒有小綠鎖),也有些機構在訪問地獄上有所限制,還有的機構出現過公鑰洩露的情況,所以請慎重選擇;
3、證書的選擇:因為網站的開發語言、使用功能和服務器環境不同,證書的選擇也不同,所以在選擇時要考慮好需要什麼證書,避免浪費成本;
4、網站路徑方式:在HTTP網站上絕對路徑和相對路徑並沒有明顯的區別,但是在HTTPS和HTTP共存的情況如果使用絕對路徑容易出現協議混淆的情況,如果混淆後可能會出現鏈接打不開,或者蜘蛛抓取失敗等現象,這個應該十分注意!
5、服務器的訪問速度:由於HTTPS多次握手的特性,網站速度是一定會受到影響的,所以在搭建網站的同時要注意網站速度的優惠,可以適當考慮使用CDN等產品。
第三節:HTTPS的優點與缺點
網站要不要做HTTPS(來自社區調研)
百度站長社區對於做不做HTTPS網站的問題進行了相關調研,如下圖:
調研中發現,大多數人對HTTPS持觀望態度,他們對HTTPS安全性是認可的,但是從各個層面進行考慮後,做出了目前不做HTTPS網站的決定,主要有以下兩種觀點:
正方觀點
1、HTTPS具有更好的加密性能,避免用戶信息洩露;2、HTTPS復雜的傳輸方式,降低網站被劫持的風險;3、搜索引擎已經全面支持HTTPS抓取、收錄,並且會優先展示HTTPS結果;4、從安全角度來說個人覺得要做HTTPS,不過HTTPS可以采用登錄後展示;5、HTTPS綠鎖表示可以提升用戶對網站信任程度;6、基礎成本可控,證書及服務器已經有了成型的支持方案;7、網站加載速度可以通過cdn等方式進行彌補,但是安全不能忽略;8、HTTPS是網絡的發展趨勢,早晚都要做;9、可以有效防止山寨、鏡像網站;
反方觀點
1、HTTPS會降低用戶訪問速度,增加網站服務器的計算資源消耗;2、目前搜索引擎只是收錄了小部分HTTPS內容,應該保持觀望制度;3、HTTPS需要申請加密協議,增加了運營成本;4、百度目前對HTTPS的優先展現效果不明顯,谷歌較為明顯;5、技術門檻較高,無從下手;6、目前站點不涉及私密信息,無需HTTPS;7、兼容性有待提升,如robots不支持/聯盟廣告不支持等;8、HTTPS網站的安全程度有限,該被黑還是被黑;9、HTTPS維護比較麻煩,在搜索引擎支持HTTP的情況,沒必要做HTTPS;
HTTPS的優點與缺點
根據案例反饋,目前HTTPS的優缺點主要分布在三方面:
HTTPS的優點:
安全性方面
在目前的技術背景下,HTTPS是現行架構下最安全的解決方案,主要有以下幾個好處:
1、使用HTTPS協議可認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
2、HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全,可防止數據在傳輸過程中不被竊取、改變,確保數據的完整性。
3、HTTPS是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
HTTPS的缺點:
技術方面
1、相同網絡環境下,HTTPS協議會使頁面的加載時間延長近50%,增加10%到20%的耗電。此外,HTTPS協議還會影響緩存,增加數據開銷和功耗。
2、HTTPS協議的安全是有范圍的,在黑客攻擊、拒絕服務攻擊、服務器劫持等方面幾乎起不到什麼作用。
3、最關鍵的,SSL 證書的信用鏈體系並不安全。特別是在某些國家可以控制 CA 根證書的情況下,中間人攻擊一樣可行。
成本方面
1、SSL的專業證書需要購買,功能越強大的證書費用越高。個人網站、小網站可以選擇入門級免費證書。
2、SSL 證書通常需要綁定 固定IP,為服務器增加固定IP會增加一定費用;
3、HTTPS 連接服務器端資源占用高較高多,相同負載下會增加帶寬和服務器投入成本;
既然HTTPS有這麼多缺點,那是不是就不該做呢,當然不是的,隨著技術的發展很多缺點是可以優化和彌補的。比如:
打開速度問題完全可以通過CDN加速解決,很多IDC也在著手推出免費證書和一站式HTTPS搭建服務,HTTPS成本在未來將會大大縮小!
第四節:百度對HTTPS的支持
2015年5月25日,百度站長平台發布公告,宣布全面放開對https站點的收錄,https站點不再需要做任何額外工作即可被百度抓收。處於HTTPS的安全性,百度對HTTPS一直持支持態度,為了提升百度搜索對HTTPS網站的友好度,特別進行了一系列升級。
站長平台:百度平台目前已經完美支持HTTPS驗證,並為HTTPS准備了相應的數據提交接口,第一時間對HTTPS進行數據接收;
百度搜索:目前Baidu Spider3.0已經順利升級,可以正常抓取HTTPS內容,並進行正常的收錄和索引,根據HTTPS網站的普及情況,還將會進行優先展示HTTPS結果等策略升級;
其他支持:目前百度各方面也在全力支持HTTPS,已經推出HTTPS服務有百度開放雲的CDN和雲主機