diff --git a/server/service.go b/server/service.go index 543d0f39..fc7baafa 100644 --- a/server/service.go +++ b/server/service.go @@ -161,10 +161,10 @@ func NewService(cfg config.ServerCommonConf) (svr *Service, err error) { svr.websocketListener = frpNet.NewWebsocketListener(websocketLn) // frp wss listener - wssListener := svr.muxer.Listen(1, 1, func(data []byte) bool { + wssLn := svr.muxer.Listen(1, 1, func(data []byte) bool { return int(data[0]) == 0x16 }) - svr.wssListener = frpNet.NewWssListener(wssListener) + svr.wssListener = frpNet.NewWssListener(wssLn) // Create http vhost muxer. if cfg.VhostHttpPort > 0 { diff --git a/utils/net/conn.go b/utils/net/conn.go index 668477e7..81a27b84 100644 --- a/utils/net/conn.go +++ b/utils/net/conn.go @@ -223,7 +223,7 @@ func ConnectServerByProxy(proxyURL string, protocol string, addr string) (c net. case "websocket": return ConnectWebsocketServer(addr, "http", "ws") case "wss": - return ConnectWebsocketServer(addr, "https", "wss") + return ConnectWssServer(addr, "https", "wss") default: return nil, fmt.Errorf("unsupport protocol: %s", protocol) } diff --git a/utils/net/wss.go b/utils/net/wss.go index cf469269..2137c4f2 100644 --- a/utils/net/wss.go +++ b/utils/net/wss.go @@ -1,6 +1,7 @@ package net import ( + // "crypto/tls" "errors" "fmt" "net" @@ -9,7 +10,7 @@ import ( "time" "github.com/fatedier/frp/utils/log" - + "golang.org/x/net/websocket" ) @@ -50,9 +51,8 @@ func NewWssListener(ln net.Listener) (wl *WssListener) { Addr: ln.Addr().String(), Handler: muxer, } - - certFile := "a.cert" - keyFile := "a.key" + certFile := "a_cert.pem" + keyFile := "a_key.pem" go wl.server.ServeTLS(ln, certFile, keyFile) return @@ -96,6 +96,10 @@ func ConnectWssServer(addr string, httpProtocol string, wsProtocol string) (Conn Timeout: 10 * time.Second, } + // cfg.TlsConfig = &tls.Config{ + // InsecureSkipVerify: true, + // } + conn, err := websocket.DialConfig(cfg) if err != nil { return nil, err