來一次https原理到配置「一條龍」

前言

不管你是要看小姐姐/小哥哥,仍是關注國家大事,想要第一時間掌握新鮮資訊和最新動態,網絡都會成爲你的第一選擇。而網絡協議中的httphttps是咱們最見到的。node

爲何要使用https代替已有的http?

先說一下http的隱患

  • http是明文傳輸的,內容很容易被監聽,竊聽風險
  • 不驗證通訊方的身份,能夠假裝身份,冒充風險
  • 沒法證實報文的完整性,可能被篡改,篡改風險

這些隱患可不僅是說說而已,你遇到過運營商劫持嗎?三天兩頭給你插一段廣告還有其餘很噁心的操做,防不勝防。正是由於這些隱患才成了某些黑心商的沃土。nginx

再來看一下國際趨勢

爲鼓勵https部署算法

  • Google 已調整搜索引擎算法,讓採用https 的網站在搜索中排名更靠前
  • Chrome 瀏覽器已把http協議的網站標記爲不安全網站
  • 蘋果要求2017年App Store中的全部應用都必須使用https加密鏈接;
  • 微信小程序要求必須使用https
  • 新一代的 HTTP/2 協議的支持需以https爲基礎。

基於這些緣由,https部署勢在必行。小程序

https特色

https是http的安全升級版本,在http的基礎上添加SSL/TLS層。大體說一下原理:基本思路就是採用公鑰加密,客戶端向服務端索要公鑰,收到公鑰後使用它加密信息,服務器收到信息後使用與公鑰配套的私鑰解密。微信小程序

上一張圖補充說明原理 瀏覽器

這樣作的目的:

  • 傳輸內容加密,保證數據傳輸安全
  • 身份驗證,防止冒充
  • 數據完整性校驗,防止內容被第三方冒充或者篡改

https部署過程

帶你瞭解證書

1)爲何須要證書?安全

對於請求方,它如何能肯定所得公鑰是從目標主機那裏發佈的,而不是中間人發佈給它的?或者怎麼去肯定目標主機是可信任的,或者目標主機背後的企業或機構靠譜?這時候,咱們須要一個權威、值得信賴機構(通常是由政府審覈並受權的機構)來統一對外發放主機機構的公鑰,來解決信任問題(中心化)bash

2)如何申請證書?服務器

用戶首先生成特定密鑰對,並將公鑰和部分必要信息傳送給認證中心。認證中心在覈實信息合法後,執行一些必要的步驟,以確信請求是用戶提交的(一般是提供認證文件,你須要下載並將文件放在域名特定目錄下)。而後,認證中心將發給用戶一個數字證書微信

3)證書內容信息是什麼?

  • 證書頒發機構的名稱
  • 證書自己的數字簽名
  • 證書持有者公鑰+部分信息
  • 證書籤名用到的Hash算法

證書由獨立的證書發行機構發佈,每種證書的可信任級別不一樣,有點相似樹的結構。這點必定要注意,在部署https要保證證書鏈完整(向上能夠追溯到CA根證書,不然某些狀況下會提示網站不安全,https部署失敗)

4)證書有效性校驗

瀏覽器內部會內置CA根證書,使用CA證書校驗配置的證書

  • 證書頒發的機構錯誤----危險證書
  • 證書頒發的機構正確,根據CA根證書的公鑰對證書摘要進行解密,解密失敗----危險證書;解密成功獲得摘要A,而後再根據簽名的Hash算法計算出證書的摘要B,對比A與B,若相等則正常,若不相等則是被篡改過的----危險證書。
  • 證書過時----危險證書。

證書申請

上面說了那麼多理論知識,終於迎來了實操,don't bb,show you code

下面我將使用證書頒發機構ssls來實操。

至於爲何選擇它?

  • 由於性價比高,價格能夠,證書質量很高。
  • 公司在用

就是這麼任性的理由。好了,書歸正傳

國際慣例,註冊登陸 -> 選擇CERTS,以後選擇合適的商品,加入購物車,選擇數量和有效時間

商品列表,界面作的仍是很好看的

下面重點來了,證書部署三步走

1)按照提示,輸入CSR。使用openssl生成

openssl req -new -newkey rsa:2048 -sha256 -nodes -out www.hashfish.net.csr -keyout www.hashfish.net.key -subj "/C=CN/ST=BeiJing/L=BeiJing/O=HASH FISH./OU=Web Security/CN=www.hashfish.net"
複製代碼

命令的含義 req——執行證書籤發命令

-new——新證書籤發請求

-out——輸出的csr文件的路徑

-keyout——指定私鑰路徑

-subj——證書相關的用戶信息(subject的縮寫)

直接使用是注意修改信息,別直接複製了(斜眼笑)

2)根據提示完成其餘操做(填寫接收證書郵箱等操做),order狀態變爲in progress,這時候須要你把驗證文件放到制定的目錄下,以完成ssls的驗證

上圖吧,直觀一些

3)驗證完成以後,若干時間後,你會收到以證書爲附件的郵件,合併證書(若是有多個的話,必定要保持證書鏈完整,避免有些狀況下提示非安全連接),上傳服務器,配置nginx 重啓nginx,整個世界清淨了。

合併證書

//合併證書的命令
//將證書和CA證書合併成pem
cat  www.hashfish.net.crt  www.hashfish.net.ca-bundle > www.hashfish.net.pem
複製代碼

配置nginx

//在特定的域名中添加
listen 443;
ssl_certificate  【合併事後的.pem文件路徑】
ssl_certificate_key  【openssl生成的私鑰文件路徑】
複製代碼

好了,https證書部署到此結束。上一張經典的圖來描述一下https請求的過程

轉載必須標明出處,謝謝。文章有疏漏淺薄之處,請各位大神斧正
相關文章
相關標籤/搜索