golang學習筆記 HTTPS

2022-04-11 06:02:37 字數 3380 閱讀 5498

https證書

正式發布的時候,是需要購買正規的證書的。測試程式時,如果沒有,我們可以使用openssl來生成私人的證書。

(1)首先我們先生成證書私鑰

openssl genrsa -out server.key 2048

(2)根據私鑰生成公鑰

openssl rsa -in server.key -out server.key.public

(2)根據私鑰生成證書

openssl req -new -x509 -key server.key -outserver.crt -days 365

注意以上命令是生成在當前資料夾下的

golang實現https程式

瀏覽器輸入 進行測試即可。

注意瀏覽器會提示此鏈結不安全,繼續訪問即可,因為這個證書使我們自己生成的,並不被瀏覽器所承認。上面兩個檔案的路徑可以是絕對路徑也可以相對,這裡在同一資料夾下使用的

訪問自己的https服務端

go實現的client端預設也是要對服務端傳過來的數字證書進行校驗的,因為我們的證書並不是知名ca簽發的。所以我們要跳過驗證,如下

對服務端證書進行校驗

多數時候,我們需要對服務端的證書進行校驗,而不是像上面那樣忽略這個校驗。

首先我們來建立我們自己的ca,需要生成乙個ca私鑰和乙個ca的數字證書:

(1)生成ca私鑰

openssl genrsa -out ca.key 2048

(2)生成ca證書

openssl req -x509 -new -nodes -key ca.key -subj "/cn=tonybai.com" -days 5000 -out ca.crt

接下來,生成server端的私鑰,生成數字證書請求,並用我們的ca私鑰簽發server的數字證書:

(1)生成服務端私鑰

openssl genrsa -out server.key 2048

(2)生成證書請求檔案

openssl req -new -key server.key -subj "/cn=localhost" -out server.csr

(3)根據ca的私鑰和上面的證書請求檔案生成服務端證書

openssl x509 -req -in server.csr -ca ca.crt -cakey ca.key -cacreateserial -out server.crt -days 5000

client.go

//

客戶端對伺服器校驗

func main()

//解析證書

• key 是私用金鑰openssl,通常是rsa演算法

• csr 是證書請求檔案,用於申請證書。在製作csr檔案的時,必須使用自己的私鑰來簽署,還可以設定乙個金鑰

• crt是ca認證後的證書文,簽署人用自己的key給你簽署的憑證

對客戶端證書進行校驗

要對客戶端數字證書進行校驗,首先客戶端需要先有自己的證書。

我們以上面的例子為基礎,生成客戶端的私鑰與證書。

(1)生成client私鑰

openssl genrsa -out client.key 2048

(2)生成client請求檔案

openssl req -new -key client.key -subj "/cn=tonybai_cn" -out client.csr

(3)生成client證書

Golang學習筆記

如果乙個method的receiver是 t,你可以在乙個t型別的例項變數v上面呼叫這個method,而不需要 v去呼叫這個method 即不需要 v method 如果乙個method的receiver是t,你可以在乙個 t型別的變數p上呼叫這個method,而不需要 p去呼叫這個method。i...

golang學習筆記

與c語法不同之處 1.引數列表中各個引數型別相同時可以只寫出最後乙個,如 add x,y int int 2.型別在引數名 變數 函式 後面 3.函式的左大括號要跟函式名同一行,否則編譯不過 4.函式定義要先寫關鍵字func在函式開頭 函式外的每個語句都要以func var等等關鍵字開頭 5.在包或...

Golang學習筆記

package main import fmt func main break default func inte ce select case defer gomap struct chan else goto package switch const fallthrough ifrange ty...