基於SSL實現數據傳輸加密協議—HTTPS
完美生活
時光·漫步
許巍
00:00/04:56
正逢穀雨。雨生百穀,恰逢春好時。
儘管生活艱辛還是怒馬前行,小帥鳥依然在北京向各位問好!
是的,經歷過大起大落,既有極端輝煌也有人生至暗時刻的人的經歷告訴我們什麼叫豁達,以及真正頑強的人生是什麼樣的。
寫在前面
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer)是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的默認埠及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司(Netscape)進行,並內置於其瀏覽器Netscape Navigator中,提供了身份驗證與加密通訊方法。現在它被廣泛用於萬維網上安全敏感的通訊,例如交易支付方面。
HTTPS的工作原理:HTTPS在傳輸數據之前需要客戶端(瀏覽器)與服務端(網站)之間進行一次握手,在握手過程中將確立雙方加密傳輸數據的密碼信息,通常情況下會配合數字證書實現。TLS/SSL協議不僅僅是一套加密傳輸的協議,更是一件經過藝術家精心設計的藝術品,TLS/SSL中使用非對稱加密,對稱加密以及HASH演算法。
HTTP和HTTPS的區別
https協議需要配合數字證書將證書集成到web伺服器中實現數據加密傳輸;http無需任何證書即可實現數據傳輸。
http在進行數據傳輸時採用明文傳輸的方式,https 則是將傳輸數據通過具有安全性的SSL證書加密後採用密文傳輸的方式。
http和https使用的是完全不同的連接方式,使用的埠也是不一樣的,前者是默認80,後者默認是443;如果多台伺服器使用相同證書實現https協議傳輸,則配置不同埠即可。
對稱和非對稱加密演算法
對稱加密演算法也稱為也稱為單密鑰加密:就是數據在傳輸過程中,由於加密方和解密方共享同一個密鑰(密鑰也是一種演算法)實現加密和解密的操作,因此採用這種方式進行加解密速度快,適用於大數據量的傳輸;但是這種方式本身不是安全的。
非對稱加密演算法:就是數據在傳輸的過程中雙方使用自己的密鑰進行加解密,與對稱加密演算法不同的是非對稱加密演算法需要兩個密鑰——公開密鑰和私有密鑰,公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有使用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。
https協議實現數據傳輸過程:當客戶端把要傳輸的數據使用服務端下發的公鑰進行加密後輸送到伺服器端,伺服器端就會拿著自己保存的私鑰進行解密(注意:多個公鑰只對應一個私鑰);如果校驗通過服務端會拿著私鑰將返回數據進行簽名,再次下到給客戶端再次進行解密。
但是這裡存在一個隱患,假如被黑客在數據傳輸過程中將加密和簽名數據進行攔截,不斷進行修改,這時CS倆端將永遠進行假通信?
為了預防上面這種公鑰被調包的問題,是因為我們的客戶端無法分辨返回公鑰的人到底是中間人還是真的伺服器,這其實就是密碼學中提的身份驗證問題。所以我們不能直接將伺服器的公鑰下發給客戶端,而是由第三方機構使用它的私鑰對我們的公鑰進行加密後頒發數字證書,最後CS端進行數據通信時通過證書去驗證傳輸數據的合法性。
SSL證書申請
以騰訊云為例,在SSL證書管理中申請免費版的CA證書。
[注]:通用名稱為需要配置https協議訪問服務的域名(一級或者二級域名都行)。私鑰密碼填寫後必須留存,配置tomcat時需要用到。
域名身份驗證
當你正常提交以上信息後,需要進行域名身份驗證,驗證方式有2種:手動DNS驗證和文件驗證,具體驗證方案請查閱騰訊提供的官方文檔,一般建議使用文件驗證。
等待頒發數字證書
域名驗證配置成功後會騰訊雲會自動進行驗證,驗證通過後會有簡訊提醒,時間大概是幾分鐘,審核成功後下載配置即可。
Tomcat配置
獲得.jks文件後,將.jks文件cp到Tomcat/conf/目錄下。
編輯conf/server.xml文件,打開SSL連接器。
參數說明:
port:https協議的請求埠,默認為443,如果有多台伺服器,可按自己的需求設置其他埠值。
keystoreFile:證書.jks文件的保存位置,此處是conf目錄,如果是其他地址請填寫完整目錄。
keystorePass:密鑰庫密碼,指定keystore的密碼。(如果申請證書時有填寫私鑰密碼,密鑰庫密碼即私鑰密碼,否則填寫密鑰庫密碼文件中的密碼)
clientAuth:如果設為true,表示Tomcat要求所有的SSL客戶出示安全證書,對SSL客戶進行身份驗證。
重啟web伺服器,https://www.qiyushijie.com訪問成功。
http自動跳轉https的安全配置
先配置conf/web.xml文件:
讓非ssl的connector跳轉到ssl的connector去;還需配置conf/server.xml文件:
重啟web伺服器,https://www.qiyushijie.com訪問成功。
TAG:孝忠 |