综合精品一区_超碰激情在线_a在线播放不卡_暖暖在线中文免费日本_成人免费毛片app_精品三级久久_欧美天堂在线观看_blacked蜜桃精品一区_涩涩视频免费网站_在线亚洲伦理

全球微頭條丨https 原理分析進階-模擬https通信過程
2023-06-28 14:23:51 來源:

大家好,我是藍胖子,之前出過一篇https的原理分析 ,完整的介紹了https概念以及通信過程,今天我們就來比較完整的模擬實現https通信的過程,通過這篇文章,你能了解到https核心的概念以及原理,https證書是如何申請的,以及如何用golang實現https通信,https雙向認證。

本章代碼已經上傳到github


(資料圖片僅供參考)

https://github.com/HobbyBear/codelearning/tree/master/httpsdemo
https原理回顧

在開始之前,讓我們來了解下https相關的核心知識,可以作為上篇https原理分析的補充。學習一個東西一定要先知道為什么要用它,我總結了兩點:

1,https 第一個好處是使原本的http明文傳輸變成了密文傳輸,增加了安全性。

2,https第二好處是采用數字證書來解決了身份認證問題,起碼對端通信是經過ca認證的。

那么https又是通過什么技術來實現上述兩點的呢?

數字證書原理

我先聊聊數字證書的實現原理,在https的握手階段,服務端會發送自身的證書給客戶端,客戶端會去驗證這個證書的有效性,有效性是這樣保證的:

數字證書上會寫明證書的簽名算法和證書的簽名,如下圖所示

證書經過簽名算法中指定的SHA-256算法將證書內容進行hash得到消息摘要,然后再將這個摘要值經過RSA算法用證書頒發機構的私鑰進行加密就得到了證書的簽名。

而客戶端拿到這個證書就會用證書頒發機構的公鑰去解密簽名,然后按SHA-256算法也對證書內容進行hash,也得到一個消息摘要值,客戶端就去比對自己計算的消息摘要和公鑰解密簽名得到的消息摘要是否一致,一致則說明證書未被篡改并且是證書頒發機構頒發的。

有同學可能會疑惑,證書頒發機構的公鑰是從哪里獲取的,證書頒發機構的公鑰就在頒發機構其自身的證書里,如下圖所示。

https密文加密原理

知道了數字證書的驗證原理,我們來看看https通信中涉及到的加密過程,在https的握手階段,服務端會選擇一個與客戶端都支持的密鑰套件用于后續的加密,密鑰套件一般會有如下組件:

密鑰交換算法:用于在客戶端和服務器之間安全地交換加密密鑰。常見的密鑰交換算法有RSA和Diffie-Hellman等。

對稱加密算法:用于對通信數據進行加密和解密。常見的對稱加密算法有AES、DES和3DES等。

摘要算法:用于生成和驗證消息的完整性。常見的摘要算法有MD5和SHA-256等。

https采用非對稱加密的方式交換密鑰,然后使用對稱加密的方式對數據進行加密,并且對消息的內容采用摘要算法得到消息摘要,這樣對端在解密數據后可以通過相同的消息摘要算法對計算后的消息摘要和傳過來的消息摘要進行對比,從而判斷數據是否經過篡改。

具體步驟如下:

客戶端向服務器發送一個初始的握手請求,該請求中包含了客戶端支持的密碼套件列表。服務器收到握手請求后,會從客戶端提供的密碼套件列表中選擇一個與自己支持的密碼套件相匹配的套件。服務器將選定的密碼套件信息返回給客戶端。客戶端收到服務器返回的密碼套件信息后,會選擇一個與服務器相匹配的密碼套件。客戶端生成一個隨機的對稱加密密鑰,并使用服務器的公鑰對該密鑰進行加密。客戶端將加密后的對稱加密密鑰發送給服務器。服務器使用自己的私鑰對接收到的加密的對稱加密密鑰進行解密。客戶端和服務器現在都擁有了相同的對稱加密密鑰,可以使用該密鑰進行加密和解密通信數據。客戶端和服務器使用對稱加密密鑰對通信數據進行加密和解密,并使用摘要算法對數據進行完整性驗證。

通過以上步驟,客戶端和服務器可以建立一個安全的HTTPS連接,并使用密碼套件來保護通信的安全性。

模擬證書頒發

接下來,我們就要開始實現下https的通信了,由于只是實驗,我們不會真正的去為我的服務器去申請一個數字證書,所以我們暫時在本地用openssl來模擬下證書頒發的邏輯。

模擬根認證ca機構

我們知道證書頒發的機構是ca,而ca根證書是默認信任的,一般內置在瀏覽器和操作系統里,所以首先來生成一個根證書,并且讓系統默認信任它。

先生成ca的私鑰

openssl genpkey -algorithm RSA -out ca_private.key 

然后生成ca的證書請求

openssl req -new -key ca_private.key -out ca_csr.csr

生成ca證書

openssl x509 -req -in ca_csr.csr -signkey ca_private.key -out ca_cert.crt

我用的是mac系統,所以我這里演示下mac系統如何添加證書信任,

打開鑰匙串應用-> 將證書拖進登錄那一欄 -> 右擊證書點擊顯示簡介-> 將信任那一欄改為始終信任

模擬ca機構向服務器頒發證書

生成 服務器自身的私鑰

openssl genpkey -algorithm RSA -out final_private.key

接著就是生成證書請求,和前面生成證書請求不同,因為目前主流瀏覽器都要求證書需要設置subjectAltName,如果沒有設置SAN會報證書錯誤。

所以我們要換種方式生成證書請求,首先創建一個文件,比如我創建一個san.txt的文件

[req]default_bits = 4096distinguished_name = req_distinguished_namereq_extensions = v3_req[req_distinguished_name]countryName = countrystateOrProvinceName = provincelocalityName = cityorganizationName = company name## 換成自己的域名commonName = lanpangzi.com  [v3_req]subjectAltName = @alt_names[alt_names]## 換成自己的域名DNS.1=*.lanpangzi.comDNS.2=*.lanpangzi2.com

到時候上述文件只需要更換為自己的域名即可。由于我的域名設置為了.lanpangzi.com 和.lanpangzi2.com,所以我還要改下本地的hosts文件。

## /etc/hosts127.0.0.1 www.lanpangzi2.com127.0.0.1       www.lanpangzi.com

接著生成服務器證書請求

openssl req -new -key final_private.key -out final_csr.csr -config san.txt -sha256

生成服務器證書

openssl x509 -req -days 365 -in final_csr.csr -CA ca_cert.crt -CAkey ca_private.key -set_serial 01 -out final_csr.crt -extfile san.txt -extensions v3_req
golang實現https服務驗證證書

經過了上述步驟后算是生成了一個由ca機構頒發的證書,然后我們用golang代碼實現一個https服務器。需要為https服務器傳入證書以及服務器自身的私鑰。

func main() {     http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {        fmt.Fprintf(w, "Hello, World!\n")     })     fmt.Println(http.ListenAndServeTLS(":443",        "./final_csr.crt",        "./final_private.key", nil))  }

接著實現下客戶端代碼

func main() {     client := &http.Client{Transport: tr}     resp, err := client.Get("https://www.lanpangzi.com")     if err != nil {        fmt.Println("Get error:", err)        return     }     defer resp.Body.Close()     body, err := ioutil.ReadAll(resp.Body)     fmt.Println(string(body))  }

啟動服務端和客戶端后能看到服務正常返回了。

/private/var/folders/yp/g914gkcd54qdm5d0qyc9ljm00000gn/T/GoLand/___go_build_codelearning_httpsdemo_clientHello, World!

說明證書配置已經成功,而客戶端驗證證書的邏輯已經在本文開始講解了。

golang實現https雙向認證

上述代碼只是實現了https的單向認證,即客戶端對服務端的域名進行認證,在某些情況下,服務端也需要檢驗客戶端是否合法,所以下面我們就來看下如何用golang實現雙向認證的。首先我們還是要用ca位客戶端頒發一個證書。

模擬ca機構向客戶端頒發證書

生成 服務器自身的私鑰

openssl genpkey -algorithm RSA -out client_private.key

創建一個san_client.txt的文件

[req]default_bits = 4096distinguished_name = req_distinguished_namereq_extensions = v3_req[req_distinguished_name]countryName = countrystateOrProvinceName = provincelocalityName = cityorganizationName = company name## 換成自己的域名commonName = lanpangziclient.com  [v3_req]subjectAltName = @alt_names[alt_names]## 換成自己的域名DNS.1=*.lanpangziclient.comDNS.2=*.lanpangziclient2.com

到時候上述文件只需要更換為自己的域名即可。由于我的域名設置為了.lanpangzi.com 和.lanpangzi2.com,所以我還要改下本地的hosts文件。

## /etc/hosts127.0.0.1 www.lanpangziclient2.com127.0.0.1       www.lanpangziclient.com

接著生成服務器證書請求

openssl req -new -key client_private.key -out client_csr.csr -config san_client.txt -sha256

生成服務器證書

openssl x509 -req -days 365 -in client_csr.csr -CA ca_cert.crt -CAkey ca_private.key -set_serial 01 -out client_csr.crt -extfile san_client.txt -extensions v3_req

服務端和客戶端需要做下改動,服務端默認不會去校驗客戶端身份,但是現在改成強制校驗

func main() {       s := &http.Server{        Addr: ":443",        Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {           fmt.Fprintf(w, "Hello, World!\n")        }),        TLSConfig: &tls.Config{           ClientAuth: tls.RequireAndVerifyClientCert,        },     }       fmt.Println(s.ListenAndServeTLS("./final_csr.crt",        "./final_private.key"))  }

客戶端代碼請求時需要帶上自己的證書

func main() {     cliCrt, err := tls.LoadX509KeyPair("./client_csr.crt", "./client_private.key")     if err != nil {        fmt.Println("Loadx509keypair err:", err)        return     }     tr := &http.Transport{        TLSClientConfig: &tls.Config{           Certificates: []tls.Certificate{cliCrt},        },     }     client := &http.Client{Transport: tr}     resp, err := client.Get("https://www.lanpangzi.com")     if err != nil {        fmt.Println("Get error:", err)        return     }     defer resp.Body.Close()     body, err := ioutil.ReadAll(resp.Body)     fmt.Println(string(body))  }

這樣就完成了一個https的雙向認證。

關鍵詞:
責任編輯:zN_2843
    国产无码精品久久久| 法国空姐在线观看免费| 污片免费在线观看| 成人软件在线观看| 日本不卡高清视频| 91精品国产一区二区| 成人欧美一区二区三区黑人免费| 日韩女优在线视频| 亚洲天堂一区二区| 极品尤物av久久免费看| 亚洲国产成人精品电影| 视频一区二区三区在线观看 | 日韩一级淫片| 95精品视频在线| 丝袜美腿精品国产二区| 福利视频免费在线观看| 亚洲国产av一区二区三区| 一区二区三区午夜视频| 色婷婷av一区| 成人免费看片网址| 国产视频不卡在线| 老牛精品亚洲成av人片| 亚洲同性同志一二三专区| 久久久久久久久久久av| 日本888xxxx| 国产刺激高潮av| 捆绑调教美女网站视频一区| 亚洲成色777777在线观看影院| 水蜜桃亚洲精品| 国产乡下妇女做爰毛片| 久久久久久久久99精品大| 日韩欧美中文在线| 国产成人女人毛片视频在线| 一区二区三区在线播放视频| 妖精一区二区三区精品视频| 亚洲一区二区四区蜜桃| 成人黄色在线免费| 国产美女免费网站| 日本午夜精品久久久| 亚洲人成网站在线| 国产精品久久久久久av| 深爱五月激情网| 国产成人澳门| 一区二区三区在线高清| 国产日韩欧美自拍| 日韩精品电影一区二区三区| 久久爱www成人| 午夜不卡在线视频| 国产精品播放| 欧美日韩中文字幕在线观看| 国产大片一区| 欧美日韩欧美一区二区| 亚洲欧洲国产日韩精品| 中文字幕二区三区| 日韩经典一区二区| 国产一区二区三区中文| 蜜臀av午夜一区二区三区| 天天色综合久久| 99久久婷婷国产精品综合| 欧美激情精品久久久久久| 香蕉视频999| 色综合.com| 一区二区中文视频| 91精品在线看| 国产大片免费看| 综合久久综合| 精品奇米国产一区二区三区| 成人午夜视频免费观看| 精品乱子伦一区二区| 国产经典欧美精品| 欧美激情欧美狂野欧美精品| 亚洲av无码一区东京热久久| 秋霞蜜臀av久久电影网免费| 一本久久精品一区二区| 日韩免费中文专区| 岳乳丰满一区二区三区| 国产美女精品一区二区三区| 九九综合九九综合| 大尺度做爰床戏呻吟舒畅| 牛牛影视一区二区三区免费看| 精品久久在线播放| 欧美精品一区二区三区四区五区| 国产一区二区视频免费| 韩国三级在线一区| 欧美精品久久久久久久久| 国产又粗又猛又色| 国产欧美日韩在线一区二区| 欧美视频在线一区| 8x8x华人在线| 26uuu亚洲电影| 国产精品美女久久久久av爽李琼| 91热福利电影| 亚洲黄色三级视频| 全国精品久久少妇| 久久91亚洲人成电影网站| av2014天堂网| 久久精品国产99久久| 日韩一级片网址| 每日在线更新av| 欧美日韩免费电影| 亚洲一区二区三区在线| 色噜噜一区二区| 亚洲乱码国产乱码精品精软件| 91女神在线视频| 国产欧美日韩免费看aⅴ视频| 精品国产精品国产精品| 午夜亚洲激情| 麻豆成人在线看| 亚洲国产第一区| 欧美国产美女| 亚洲精品久久久久| 51自拍视频在线观看| 中文字幕av一区二区三区人| 日韩一级大片在线| 一级在线免费视频| 欧美人与动xxxxz0oz| 91精品国产综合久久香蕉的特点| 精品久久久久久无码中文野结衣 | 日韩性生活视频| 人妻av一区二区| 日韩不卡一区| 精品视频久久久久久| 精品人妻一区二区三区免费| 成人亚洲一区二区| 亚洲精品综合精品自拍| 成人欧美精品一区二区| 成人影院在线| 亚洲欧美一区二区精品久久久| 最好看的中文字幕| 久久在线播放| 在线电影av不卡网址| 亚洲av片不卡无码久久| 伊人成人在线视频| 九九精品在线播放| 国产91在线播放九色| 久久久久久黄| 欧美一乱一性一交一视频| 青青青在线视频| 国产中文字幕精品| 成人精品久久一区二区三区| 天天综合久久综合| 久久综合色综合88| 久久精品magnetxturnbtih| 亚洲av无码国产精品久久不卡 | 中文字幕一区二区三区欧美日韩| 伊人精品在线观看| 国产精品扒开腿做爽爽| 欧美亚洲视频| 欧美亚洲国产日韩2020| 国产在线拍揄自揄拍| 成人免费不卡视频| 成人欧美一区二区三区视频| www.av导航| 亚洲国产中文字幕在线视频综合| 好吊色视频988gao在线观看| 精品亚洲a∨一区二区三区18| 欧美美女直播网站| 九九久久久久久| 永久亚洲成a人片777777| 久久综合伊人77777| 无码黑人精品一区二区| 国产剧情一区在线| 99精彩视频在线观看免费| 国产精品系列视频| 一区二区三区波多野结衣在线观看 | 国产91精品精华液一区二区三区| 亚洲影院高清在线| 女人18毛片一区二区三区| 午夜精彩视频在线观看不卡| www.日本在线播放| 国产精品入口久久| 综合激情国产一区| 午夜精品福利在线视频| 成人一级片在线观看| 精品日本一区二区三区| 精品成人免费一区二区在线播放| 欧美性欧美巨大黑白大战| 亚洲欧美自偷自拍另类| 综合久久99| 欧美在线一级视频| 中文字幕av在线免费观看| 一区二区三区精品久久久| 精品人妻少妇一区二区| 国产探花一区在线观看| 欧美成人激情在线| 国产又色又爽又黄的| 国产欧美一区二区三区沐欲 | 99精品在线看| 天天综合天天做天天综合| 女性隐私黄www网站视频| 亚洲91视频| 97国产在线视频| 中文字幕欧美在线观看| 亚洲国产一区二区三区青草影视| 国产欧美高清在线| 一个色综合网| 国产a级全部精品| 国产黄a三级三级看三级| 色呦呦日韩精品| 亚洲av无日韩毛片久久| 香蕉亚洲视频| 亚洲999一在线观看www| 伊人色综合一区二区三区影院视频 | 五月天中文字幕在线| 亚洲福利电影| 国产精品视频午夜| 五月天丁香视频| 69堂国产成人免费视频| 少妇精品一区二区三区| 国产一区二区福利视频| 欧美精品二区三区四区免费看视频| 9999在线精品视频| 亚洲美女视频网| 久草免费在线视频观看| 国产精品色在线观看| www在线观看免费| 亚洲理论电影网| 国产精品第一第二| 秋霞视频一区二区| 欧美一区二区黄| 超碰人人人人人人人| 久久久久久一级片| 欧美大片在线播放| 韩国精品一区二区三区| 成人福利在线视频| 在线国产成人影院| 精品亚洲夜色av98在线观看| 黄色一级片中国| 一区在线播放视频| 国产 porn| 日韩中文欧美在线| 鲁丝片一区二区三区| 日韩高清一级| 欧美极品少妇xxxxⅹ裸体艺术 | 狠狠色狠狠色综合日日91app| 麻豆91蜜桃| 美女一区2区| 久久久久久一区二区三区| 国产白浆在线观看| 日韩欧美专区在线| 999精品视频在线观看播放 | 91色琪琪电影亚洲精品久久| 黄色日韩网站| 色噜噜狠狠色综合网图区| 波多野结衣视频在线看| 色就色 综合激情| 受虐m奴xxx在线观看| 久久久久久久久蜜桃| 欧美日韩在线一| 亚洲狼人精品一区二区三区| 成人自拍偷拍| 久久午夜影院| 欧美亚洲免费电影| 日本综合字幕| 亚洲视频日韩精品| 日本欧美www| 欧美日韩五月天| 国产亚洲精品久久久久久豆腐| 国产精品短视频| 午夜啪啪小视频| 国产一区二区三区在线观看免费视频 | 久久精品一区二| 日本一不卡视频| 亚洲精品高清视频| **女人18毛片一区二区| 亚洲综合中文字幕在线观看| 国产精品qvod| 日产精品久久久一区二区福利| 精品欧美一区二区三区在线观看| 国产一区二区三区在线| 国产精品呻吟久久| 精品国产亚洲一区二区三区在线观看| 久久久久久久久久久久久久免费看| 天天影视色香欲综合网老头| 丰腴饱满的极品熟妇| 国产精品色噜噜| 精品国产乱码久久久久久1区二区| 国产mv日韩mv欧美| 久久久999视频| 捆绑调教美女网站视频一区| 成人在线免费高清视频| 一本一本久久| 日日骚一区二区网站| 综合一区av| 久草一区二区| 日韩欧美网站| 国产精品传媒毛片三区| 精品国产aⅴ| 91丝袜脚交足在线播放| 天海翼精品一区二区三区| 国产精品自产拍高潮在线观看| baoyu135国产精品免费| 日本久久久a级免费| www久久久| 欧日韩在线观看| 国产一区2区在线观看| 91精品国产高清| 成年永久一区二区三区免费视频| 国内精品久久久久久久| 欧美日韩国产网站| 欧美激情精品久久久久久免费印度 | 亚洲图片欧美在线| 亚洲国产精品久久久久| 中文字幕777| 日韩精品在线观看视频| 国产女人高潮毛片| 亚洲人成在线电影| 老司机午夜福利视频| 日韩中文字幕视频在线| 天堂网2014av| 九色成人免费视频| 精品久久福利| 国产99视频在线观看| 国产伦乱精品| 91亚洲va在线va天堂va国| av在线不卡顿| 麻豆传媒一区| 亚洲国产国产亚洲一二三| 亚洲视频精品一区| 久久久久国产精品午夜一区| 成品人视频ww入口| 国产剧情av麻豆香蕉精品| 天美星空大象mv在线观看视频| 成人白浆超碰人人人人| 成年人性生活视频| 综合激情成人伊人| 久久久久久久久福利| 色综合久久久久久久久| 国产91av视频| 日韩免费观看高清完整版 | 亚洲中无吗在线| 亚洲一区二区三区加勒比| 久久精品日产第一区二区 | 国产精品一区二区女厕厕 | 亚洲精品免费av| 天天做天天爱天天综合网| 亚洲国产精品www| 欧美aaaaa成人免费观看视频| 春日野结衣av| 91麻豆产精品久久久久久 | 中文字幕五月天| 欧美精品三级日韩久久| 中文天堂在线播放| 在线观看精品国产视频| 欧美xnxx| 国产在线高清精品| 婷婷色综合网| 香蕉视频在线网址| 国产美女精品一区二区三区| 韩国三级丰满少妇高潮| 亚洲精品乱码久久久久| 欧美精品一级片| 欧美tickling网站挠脚心| 亚洲国产精品久久人人爱潘金莲| 欧美成人精品在线播放| 亚洲一区网址| 国产精品免费视频一区二区 | youjizz.com日本| 一区二区三区高清在线| 免费在线观看日韩| 亚洲国产天堂久久国产91| 污视频在线免费| 欧美在线视频一区二区| 精品国产一区二区三区小蝌蚪| 日韩精品一区二区三区四区五区 | 美女精品在线观看| 日韩 欧美 高清| 国产精品乱人伦一区二区| 成人做爰视频网站| 日韩你懂的在线观看| 国产91久久久| 日本一区二区在线播放| 国产精品久久久久久久| 黄色片免费在线观看视频| 91在线播放网址| 成人在线观看免费高清| 欧美一卡二卡在线| 日本wwwxxxx| 国产精品福利网站| 欧美va亚洲va日韩∨a综合色| 黄色一级视频在线播放| 国产精品你懂的| 欧美成人综合色| 亚洲欧美在线一区| 精品国产三级| 精品综合在线| 精品在线一区二区三区| 稀缺呦国内精品呦| 欧美视频一区二| 精品人妻aV中文字幕乱码色欲| 91精品国产91久久久久久最新 | 激情欧美一区二区三区中文字幕| 日韩高清在线观看| 日批视频免费看| 欧美色图天堂网| 色欲av永久无码精品无码蜜桃| 国产精品一区二区三区久久| 亚洲一级影院| 男女视频在线看| 精品久久久久久久久久久 |