https理論與實踐

2021-09-11 20:59:59 字數 1647 閱讀 1165

本文內容分為以下三部分

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協議主要涉及非對稱加密和對稱...