前面講的東西都放在品蔥了,大家自己去補課。
開始講wss的代碼了。
翻開課本v2ray-core\transport\internet\websocket\dialer.go
從 func Dial
這個函數讀起。因爲外層調用必然是 internet.Dial這樣的調用方式進來。
注意到這行代碼
conn, err := dialWebsocket(ctx, dest, streamSettings)
我們跟進去,注意以下代碼
dialer.TLSClientConfig = config.GetTLSConfig(tls.WithDestination(dest))
conn, resp, err := dialer.Dial(uri, wsSettings.GetRequestHeader())
return internet.DialSystem(ctx, dest, streamSettings.SocketSettings)
一行行解釋 翻開課本 v2ray-core\transport\internet\tls\config.go
看函數 GetTLSConfig
我們重點解釋下
config := &tls.Config 保存了重要的配置信息,我們講講各個配置是什麽
config.CipherSuites 保存的加密套件,我個人推薦,把出現RSA,chacha,cbc等字樣的套件刪除!
config.InsecureSkipVerify 表示是否校驗證書,必須校驗啊!不校驗就被中間人攻擊了!像這次GitHub攻擊事件
config.Certificates 保存了各個證書。默認是系統自帶的,可以禁用。通過config.GetCertificate = getGetCertificateFunc
函數設置自己的自定義證書。我個人推薦,禁用系統的,只用自己的證書。
其他的不重要