Я пытался установить соединение WebSocket через TLS (то есть с шифрованием). Я использую Golang с Гориллой. Соединение WebSocket реализуется как исходное соединение HTTP, которое обновляется до соединения по протоколу WebSocket. Код выглядит так:
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
}
Затем мы настраиваем маршрутизацию:
func main() {
//...
setupRoutes()
log.Fatal(http.ListenAndServe(":8080", nil))
}
Достаточно ли изменить последнюю строку на:
...http.ListenAndServeTLS(...)
другими словами, чтобы использовать TLS для установления sh первого соединения? Достаточно ли этого подхода для защиты всей связи через WebSocket от начала до конца? Должен ли я быть уверен, что вся передача пакетов в течение продолжительности соединения также защищена TLS? Если нет, то как настроить его в Golang / Gorilla Framework?