TSSLSocket first resolves the specified hostname from NewTSSLSocket, and then passes the IP to tls.Dial. This is wrong because tls.Dial performs TLS certificate checks and needs the original hostname. The result is that TLS support is completely broken as the only way to make a successful connection is to disable the hostname check.
I'd propose (and will upload a patch in a minute) that TSSLSocket gets an field hostPort (in additon to addr) which contains the unresolved hostname. Open() then used one of the two fields, depending on which one was specified in the constructor.