HTTPS那些事兒(一),網絡中的身份證——SSL證書!

從事web開發的程序員應該沒有人沒聽過http和https這兩個詞,就算不是很熟悉也應該會知道https比http安全,https是加密的,且將成爲主流未來將會取代http等。


稍微瞭解一點的還會知道https和http最大的區別就是前者在http協議的基礎上套了一層SSL/TLS協議,用SSL/TLS協議加密http報文後再傳輸。今天我們就來談談SSL/TLS協議的核心——證書


SSL/TLS簡單科普

SSL(安全套接層,英語:Secure Sockets Layer,縮寫:SSL),進化版叫TLS(傳輸層安全性協議 英語:Transport Layer Security,縮寫:TLS),這兩個統稱SSL/TLS協議,是一種非對稱加密協議,被廣泛地用於Web瀏覽器與服務器之間的身份認證和加密數據傳輸。


簡單來說,這個協議在web中的應用原理就是客戶端(如:瀏覽器)向服務器傳輸HTTP報文前會先向服務器發起請求說:


我要用SSL協議和你通信了!


服務器收到請求後知道客戶端要用SSL協議通信並將自己的公鑰和證書發送回給客戶端,客戶端收到服務器發回的證書和公鑰,驗證證書合法後用服務器給的公鑰加密http報文,再傳輸給服務器。


這個過程和TCP的三次握手很像,事實上這個過程就叫SSL握手。握手完畢後客戶端就用服務器的公鑰加密HTTP request的報文傳給服務器,服務器用私鑰解密收到的HTTP request報文,處理完業務邏輯後用私鑰加密HTTP response報文再返回給客戶端,客戶端收到加密的HTTP response報文後用服務器的公鑰解密後就是客戶看到的網頁或數據了。這就是https的工作過程。


SSL證書又是啥?

從上面我們大概知道了SSL協議是怎麼運作的,其中的關鍵就是服務器發給客戶端的SSL證書。客戶端需要驗證這個證書是合法的才能相信收到的公鑰確實是自己想訪問的服務器的公鑰,而不是被哪個病毒網站冒牌頂替了,也就是沒有遭到中間人***,驗證合法後SSL握手才能建立。


那麼證書又是什麼?顧名思義,證書就是能證明服務器身份的東西,怎麼能證明呢?現實生活中我們又是怎麼證明我是我而不是假冒的呢?


身份證!!!


帶上戶口本去公安局辦張身份證,上面有我們的照片姓名性別籍貫出生年月等信息,找工作買車票辦銀行卡時向別人出示我們的身份證就能證明我是我了,一切需要信用的事都有證可依了。


而SSL證書就是網絡中的身份證,服務器有了這個證就相當於我們有了身份證,就能證明自己真的是客戶端想訪問的服務器而不是假冒的了。


SSL證書是哪來的?

SSL證書就是服務器的身份證,那證書是哪來的?客戶端憑什麼要相信證書?


我們的身份證是公安局發的,由國家爲我們背書,國家的信用那肯定是槓槓的誰都信。


對於SSL證書來說也存在着公安局這一角色來爲證書背書,那就是CA(數字證書認證機構 英語:Certificate Authority,縮寫爲CA)。


CA就是負責發放和管理數字證書的權威機構,服務器想要證書就帶上自己的戶口本去找CA申請一張證書,CA收到服務器的申請後經過非常嚴格的核查手續證明服務器確實是那個服務器後就用自己的公章(公鑰)給服務器的申請籤個名(加密)後一個證書就產生了。


所以服務器發給客戶端的證書上還會帶有CA的公章(簽名),客戶端看到CA的公章後就放心了相信服務器的身份了。


看到這你可能又會問了,客戶端憑啥相信CA?因爲操作系統不管是windows還是linux,出廠時就內置了一個受信任的根證書頒發機構列表,其實就是存着CA的公鑰,當服務器說自己的證書是哪個CA發的就拿哪個CA的公鑰出來解密看看是不是真的,因爲CA的私鑰不容易被***竊取。


自簽名證書又是咋回事?

CA真好,可是還有個問題:CA不是活雷鋒,找CA辦證是要錢的,而且這錢還不像我們去辦身份證只收個20塊工本費:

1.png


這價格真是感人,要是我們有些內網網站或者我們開發時要調試需要用SSL協議也花這個錢那不是很浪費?難道除了充錢就沒別的方法了?還真有,那就是自簽名證書。


我們已經知道CA就是互聯網中發身份證的公安局,但CA和現實中的公安局還是有區別的。現實中的公安局只有一個,那就是中華人民共和國的公安局,其他機構發的身份證都是假證還是犯法的。


然而互聯網中的CA就有很多家,甚至是個人都可以自己刻個蘿蔔章自建CA,而這種自建CA簽發的證書就叫自簽名證書。然而操作系統只認受信任的根證書頒發機構列表裏的那幾個CA,我們自己刻蘿蔔章建的CA對於操作系統來說是不安全的,所以在瀏覽器打開這種用自簽名證書的網站就會收到下面的紅牌警告:

2.png

但不論如何,錢是省下來了!


最後

關於SSL證書的科普就到這,我們大概知道HTTPS中用到的證書是咋回事了,也知道對於我們開發者來說最常用到的其實是自簽名證書,可自簽名證書也不是能隨便生成的,下回我再給大家介紹一下如何生成自簽名證書。


作者:陳喜科

出品: 嘉爲科技


其他優質文章

運維流程管理:保障運維管理效能的推手

【案例分析】如何實現企業SSL證書有效管理和監控?

【華潤創業】快消品牌與消費者間的距離,是一支優秀的數字化團隊!

如何基於Artifactory搭建私服?



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章