Go語言是怎麼實現HTTPS加密協議

2022-09-10 17:06:17 字數 3492 閱讀 4827

go語言

go語言是谷歌推出的一種全新的程式語言,可以在不損失應用程式效能的情況下降低**的複雜性。go語言專門針對多處理器系統應用程式的程式設計進行了優化,使用go編譯的程式可以媲美c或c++**的速度,而且更加安全、支援並行程序。

https是在http下加入ssl(secure sockets layer 安全套接層)層,https的安全基礎是ssl,因此加密的詳細內容就需要ssl。

ssl,及其繼任者傳輸層安全(transport layer security,tls)是為網路通訊提供安全及資料完整性的一種安全協議。tls與ssl在傳輸層對網路連線進行加密。ssl證書申請

客戶端ca對其服務端證書進行校驗過程如下:

一:對其證書不進行校驗

1,簡易的https web 伺服器

只要實現了 serverhttp方法 便可構建web伺服器

client與server進行通訊時 client也要對server返回數字證書進行校驗

因為server自簽證書是無效的 為了client與server正常通訊

通過設定客戶端跳過證書校驗

tlsclientconfig:

true:跳過證書校驗

}

1-1,執行 go run server.go

1-2,瀏覽器訪問 如下:

1-3,繼續點選 新增例外方可繼續進行訪問

出現這種原因:

瀏覽器利用自身的ca對伺服器返回的 數字證書進行合法性校驗時發現 該數字證書是自簽證書,對其該證書不信任及認定為無效證書,因而導致無法繼續訪問

1-4, 執行 go run client.go 便可正常訪問伺服器(因為此時客戶端跳過了證書校驗)

二:對其服務端證書進行校驗

1,瀏覽器本身內建了一些有權威的ca

2,ca證書自身也包含自己的公鑰資訊,及一些證書的相關資訊如該證書是由哪個ca(證書授權機構)頒發的,來自簽發機構的簽名等

3,客戶端對來自服務端證書的校驗就是使用ca證書 校驗對來自服務端證書的簽名是否是 這個ca籤的

3-1 ca校驗服務端數字證書簽名過程:

1,客戶端利用自身ca證書中的簽名演算法對 服務端證書內容部分(c部分)進行相對應的雜湊運算得到雜湊值(也就是對內容利用自身的雜湊演算法進行簽名)

2,客戶端利用得到的雜湊值與服務端數字證書的證書簽名 進行比較

若相同則服務端證書 便是由該ca頒發的 否則不是該ca頒發的

4,**如下

首先準備好服務端的私鑰及證書 客戶端的ca證書

4-1,使用openssl命令生成相關私鑰及證書

1,生成 ca 私鑰

openssl genrsa -out ca.key 2048

2,生成ca證書

openssl req -x509 -new -nodes -key ca.key -subj 「/cn=ca_host」 -days 5000 -out ca.crt

cn=ca_host」:設定該證書 由那台伺服器生成(若只進行客戶端對服務端證書校驗 此處可以隨便填 不影響)

3,生成服務端私鑰

openssl genrsa -out server.key 2048

4,生成服務端證書認證請求

openssl req -new -key server.key -subj 「/cn=gc_host」 -out server.csr

cn=gc_host:此處必須按真實填寫 服務端在哪台伺服器裝置起著就必須填寫哪台裝置的主機名

不同的客戶端裝置在呼叫時 需在自身裝置 /etc/hosts 配置伺服器裝置ip及主機名

因為客戶端在請求url中只識別服務端證書的 cn

證書認證請求並不是證書,需要ca的私鑰進行簽名之後方是證書

5,生成服務端證書

客戶端若要對服務端的數字證書進行校驗 需傳送請求之前 載入ca證書

*/func main()

tr := &http.transport, //客戶端載入ca證書

2 1 1 BeanFactory是怎麼加資源的

其實這是個偽命題,beanfactory 本身並不能主動載入 bean 配置。beandefinitionreader持有 beanfactory 引用,讀取配置資源並解析成 beandefinition 然後註冊到 beanfactory中。乙個最簡單的beanfactory 的使用樣例只需要幾行...

Nginx(七)實現http到https的加密

前提 需要有這個編譯模組 configure prefix usr local nginx with http ssl module with file aio cd etc pki tls certs make cert.pem 製作證書 cp cert.pem usr local nginx c...

https的加密解密是怎麼寫的?

原文 至 文章中有些不對的地方,比如用證書對改隨機碼進行加密,這個是不對,證書本身並沒有加密的的功能,加密的演算法應該還是tsl ssl決定的。我們都知道https能夠加密資訊,以免敏感資訊被第三方獲取。所以很多銀行 或電子郵箱等等安全級別較高的服務都會採用https協議。https簡介 https...