我尝试使用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无关。