背景:我不是專業運維,且畢業從事PHP纔剛一年,對Linux服務器也是在摸索中,爲了熟悉Linux,我在Windows和Linux之間切換了無數次,最後終於在平常使用中都適應Linux了,一如當初在sublime和vim,svn和git,拼音和五筆之間來回切換; 以前公司作的產品是以ASP形式提供給客戶使用,因此每籤一個客戶,都須要客戶提供他們的服務器給我司,而後我再去客戶的服務器上給佈署環境,後來公司領導決定作SaaS,要求之一是要把http換爲https,爲了信息安全,而後我就開始各類搜索,最後如願以償,但實現不是重點,重點是某天有人問我,https和http有什麼區別時,我回答:一個加密一個沒有加密,https更安全。別人接着問爲何?我無言了。此後我甚至懷疑我配置的https到底有沒有做用,後來我纔去詳細的學習,第一次寫博文,並且是照着本身的理解,確定有不對的地方,請你們斧正,很是感謝! http是一種無狀態協議,在OSI七層模型(由底到高:物理層,數據鏈路層,傳輸層,網絡層,會話層,表示層,應用層)的最上層:應用層,瀏覽器向服務器經過http協議發送請求(request),而後服務器響應(response),其中在網絡層會有TCP協議,有你們熟悉的"三次握手",相關的還有UDP協議,你們能夠了解一下(OSI七層模型之後會單寫)。 一次成功的http請求包含四步: 1,創建鏈接; 2,客戶端發送http請求頭; 3,服務器響應生成結果返回; 4,服務器端關閉鏈接,客戶端解析,渲染頁面; https與http相似,只是在傳遞信息過程當中採用了非對稱和對稱兩種加密方式,使用前提是你申請了免費的或是購買了受瀏覽器信任的證書,其實就是一對密鑰(公鑰和私鑰,不知我這麼理解有沒有錯誤),配置完成以後(這也能夠寫個小博文),打開網頁就能夠看到瀏覽器左上角顯示https且是綠色的; 一次成功的https請求: 1,瀏覽器請求服務器; 2,服務器返回公鑰(下面簡稱pub); 3,瀏覽器檢查pub是否有效,有效,生成一個隨機密鑰(下面簡稱key),用pub把key加密後傳遞給服務器(data1); 4,服務器用私鑰(下面簡稱pri)解密data1,獲取key,把要返回的數據有key加密(data2)後返回給客戶端; 5,客戶端用key解密data2,獲取返回的數據; 能夠用下面這張圖來講明(圖是找的):