本文內容分為以下三部分
part1 https協議
普通的http請求,在通訊雙方建立了tcp連線之後,就可以進行了。而https則不同,在建立tcp連線之後,需要先進行ssl協議的握手過程,然後才是http的通訊。
ssl的握手過程如下圖所示
alice想要與bob進行https的通訊,需要以下幾步
alice給出協議版本號、乙個客戶端生成的隨機數(client random),以及客戶端支援的加密方法。
bob確認雙方使用的加密方法,並給出數字證書(包含bob的公鑰)、以及乙個伺服器生成的隨機數(server random)。
alice 確認數字證書(向ca確認)有效,然後生成乙個新的隨機數(premaster secret),並使用數字證書中的公鑰,加密這個隨機數,發給鮑勃。
bob使用自己的私鑰,獲取愛麗絲發來的隨機數(即premaster secret)。
alice和bob根據約定的加密方法,使用前面的三個隨機數,生成"對話金鑰"(session key),用來加密接下來的整個對話過程。
上述步驟的最終目的,是為了生成」對話金鑰「,以後的通訊都使用這個金鑰進行對稱加密(一般對稱加解密的速度是比較快的)
那麼看到這裡,就又乙個問題出現了。握手階段的資訊保安如何保障?
答案是無法保障。整個握手階段,都是明文的。因此如果有第三方竊聽了通訊,他可以獲得client random、server random以及加密後的premaster secret。只要第三方無法破解premaster secret的內容,那麼通訊就是安全的。
part2 使用let's encrypt在後端部署https服務
how to secure nginx with let's encrypt on ubuntu 16.04
大致步驟
安裝certbot客戶端
配置伺服器允許方案 /.well-known資料夾
sudo letsencrypt certonly -a webroot --webroot-path=/var/www/html -d example.com -d www.example.com 這個命令會生成你需要的證書等檔案
配置nginx ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
如果速度很慢多半是python的源被牆了,需要改一下pip配置。
let's encrypt**好,退沃通保平安!
part3 在ios上使用自己頒發的https證書的正確姿勢
在開發環境,也需要進行https的話,需要對afn進行兩個設定:允許不合法的證書和不驗證網域名稱
複製**
https理論與實踐
本文內容分為以下三部分 part1 https協議 普通的http請求,在通訊雙方建立了tcp連線之後,就可以進行了。而https則不同,在建立tcp連線之後,需要先進行ssl協議的握手過程,然後才是http的通訊。ssl的握手過程如下圖所示 alice想要與bob進行https的通訊,需要以下幾步...
https理論與實踐
本文內容分為以下三部分 part1 https協議 普通的http請求,在通訊雙方建立了tcp連線之後,就可以進行了。而https則不同,在建立tcp連線之後,需要先進行ssl協議的握手過程,然後才是http的通訊。ssl的握手過程如下圖所示 alice想要與bob進行https的通訊,需要以下幾步...
https理論及實踐
http協議以明文的方式在網路中傳輸,安全性難以保證,https在http協議的基礎上加入ssl tls層。tls是ssl協議的最新版本,ssl使用ssl數字證書在通訊兩端建立加密鏈路,對兩端通訊資料進行加密,從而保證通訊資料安全。http和https協議比較如下 ssl協議主要涉及非對稱加密和對稱...