Golang TLS在TCP通信中的规模太小

时间:2017-02-21 15:51:56

标签: sockets ssl encryption go tls1.2

我尝试使用TLS设置tcp套接字系统,并且我有大量数据作为响应。我知道TLS只支持2 ^ 14字节的数据,但大多数时候我会有更多这样的数据,例如,有一部分代码返回170.000用户。我想知道如何用TLS解决这个问题。当然我想在客户端和服务器之间进行某种加密。我目前的代码是tls的基本实现。

func Handle() {
    conf := TLS()
    listener, err = tls.Listen("tcp", "0.0.0.0:7777", &conf)
    checkError(err)
    defer listener.Close()

    for {
        conn, err := listener.Accept()
        checkError(err)
        go handleRequest(conn, db)

    }
}

func TLS() tls.Config {
    cert, err := tls.LoadX509KeyPair("certs/publickey.cer", "certs/private.key")
    checkError(err)
    tlsConfig := tls.Config{Certificates: []tls.Certificate{cert}}
    tlsConfig.Time = func() time.Time { return time.Now() }
    tlsConfig.Rand = rand.Reader
    return tlsConfig
}

在客户端:

func withTls() {
    conn, err := tls.Dial(
        "tcp",
        "127.0.0.1:7777",
        &tls.Config{
            InsecureSkipVerify: true,
            ServerName:         "127.0.0.1",
        })
    checkError(err)
    conn.Write([]byte(text))

    var buf [16000]byte
    n, err := conn.Read(buf[0:])
    checkError(err)
    conn.Close()
}

您提供加密的优惠是什么?如果没有客户端上的TLS,我得到了服务器的整个响应。加密很重要,因为服务器之间存在通信。

目前的速度平均为15ms / req,我想保持这个速度,这取决于数据大小,但它与TLS无关。

0 个答案:

没有答案