我一直在嘗試通過 TLS 建立 WebSocket 連接(因此使用加密)。我將 Golang 與 Gorilla 一起使用。WebSocket 連接作為初始 HTTP 連接實(shí)現(xiàn),該連接升級為 WebSocket 協(xié)議連接。代碼是這樣的:func wsEndpoint(w http.ResponseWriter, r *http.Request) { // upgrade ws, err := upgrader.Upgrade(w, r, nil) if err != nil { //... } log.Println("Client Connected") err = ws.WriteMessage(1, []byte("Hi Client!")) if err != nil { //... } // listen indefinitely for new messages coming }然后我們設(shè)置路由:func main() { //... setupRoutes() log.Fatal(http.ListenAndServe(":8080", nil))}將最后一行更改為:...http.ListenAndServeTLS(...)那么換句話說使用TLS建立第一個(gè)連接?這種方法是否足以保護(hù)從開始到結(jié)束通過 WebSocket 進(jìn)行的整個(gè)通信?我是否應(yīng)該確定連接期間的所有數(shù)據(jù)包傳輸也受 TLS 保護(hù)?如果沒有,如何在 Golang / Gorilla 框架中進(jìn)行設(shè)置?
2 回答

胡子哥哥
TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用 http.ListenAndServeTLS 加密用于 HTTP 協(xié)議和 WebSocket 協(xié)議的底層網(wǎng)絡(luò)連接。
該方法保護(hù)了底層網(wǎng)絡(luò)連接上的整個(gè)通信,包括所有 WebSocket 流量。
Gorilla 服務(wù)器代碼使用 net/http 服務(wù)器提供的網(wǎng)絡(luò)連接。Gorilla 服務(wù)器代碼確實(shí)創(chuàng)建了新的網(wǎng)絡(luò)連接。
http.ListenAndServeTLS 是一個(gè)輔助函數(shù),它調(diào)用較低級別的函數(shù)和方法。它還可以直接調(diào)用那些較低級別的函數(shù)和方法。

ABOUTYOU
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
解決此問題的一種方法是使用 certbot 設(shè)置像 nginx 這樣的反向代理來生成證書。
這是它的工作原理
[ Client ] ----------> [ nginx ] --------------> [ golang server ] Encrypted Not encrypted
- 2 回答
- 0 關(guān)注
- 378 瀏覽
添加回答
舉報(bào)
0/150
提交
取消