Aktualisieren Sie eine Verbindung zu TLS in Go
Ich habe eine offene TCP-Verbindung und lese daraus mit einer for-Schleife wie folgt
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 ...
}
Jetzt möchte ich die Verbindung auf TLS wie folgt aktualisieren (TlsConf
enthält ein Zertifikat geladen mittls.LoadX509KeyPair
)
tx.Conn = tls.Server(tx.Conn, tx.Server.Conf.TlsConf)
tx.Text = textproto.NewConn(tx.Conn)
Wenn ich dies tue, erhalte ich einen Segmentierungsfehler auf dem Client, wenn der Server einen Handshake versucht. Ich implementiere einen SMTP-Server und teste ihn mitswaks Verwendung der-tls
Flagge. Die Terminalausgabe vonswaks ist das Folgende
-> STARTTLS
<- 220 Start TLS
Segmentation fault: 11
Da swaks ein getestetes Tool ist und mit der SMTP-Implementierung von nodeJS gearbeitet hat, vermute ich nicht, dass der Fehler auf der Clientseite liegt.
Was habe ich falsch gemacht oder was fehlt?
PS: Was passiert genau, wenn eine TLS-Verbindung von einer bestehenden unsicheren Verbindung aus gestartet wird? Baut der Client eine neue Verbindung an einem anderen Port auf oder wird die Verbindung erneut verwendet?