在Go中将连接升级到TLS

我有一个开放的TCP连接,并使用for循环从中读取,如下所示


for {

  // tx.Text is of type textproto.Conn

  // the underlying connection is stored in tx.Conn

  l, err := tx.Text.Reader.ReadLine()


  // do stuff with the text line ...

}

现在,我想像这样将连接升级到TLS(TlsConf包含已加载的证书tls.LoadX509KeyPair)


tx.Conn = tls.Server(tx.Conn, tx.Server.Conf.TlsConf)

tx.Text = textproto.NewConn(tx.Conn)

当我这样做时,当服务器尝试握手时,我在客户端上遇到了分段错误。我执行一个SMTP服务器,并正与测试它swaks使用-tls标志。Swaks的终端输出如下


-> STARTTLS

<-  220 Start TLS

Segmentation fault: 11

由于swaks是经过测试的工具,并且可以与我以前使用过的nodeJS SMTP实现一起使用,因此我不怀疑该错误是在客户端。


我做错了什么或缺少了什么?


PS:当从现有的不安全连接启动TLS连接时,究竟发生了什么?客户端是在其他端口上建立新连接还是重新使用该连接?


江户川乱折腾
浏览 210回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go