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