为了账号安全,请及时绑定邮箱和手机立即绑定

尝试对服务器进行身份验证时,对等方重置连接

尝试对服务器进行身份验证时,对等方重置连接

Go
呼如林 2023-04-24 16:42:03
我正在尝试通过 Go 客户端对自己进行身份验证。这是我到目前为止所做的func main() {    servAddr := "192.168.7.13:443"    tcpAddr, err := net.ResolveTCPAddr("tcp", servAddr)    if err != nil {        fmt.Println("ResolveTCPAddr failed:", err.Error())        os.Exit(1)    }    conn, err := net.DialTCP("tcp", nil, tcpAddr)    if err != nil {        fmt.Println("Dial failed:", err.Error())        os.Exit(1)    }    _, err = conn.Write([]byte(postReq))    if err != nil {        fmt.Println("Write to server failed:", err.Error())        os.Exit(1)    }    fmt.Println(postReq)    reply := make([]byte, 1024)    _, err = conn.Read(reply)    if err != nil {        fmt.Println("Write to server failed:", err.Error())        os.Exit(1)    }    fmt.Println("reply from server=", string(reply))    conn.Close()}这是我正在写给连接的消息:POST /ManagementServer/ServerCommandService.svc HTTP/1.1 主机:192.xxx.xx.xx 内容类型:文本/xml;charset=utf-8 授权:基本 {username:password in base64} Content-Length:405 SOAPAction:“ http://videoos.net/2/XProtectCSServerCommand/IServerCommandService/Login ” 连接:Keep-Alive 190fc316-6412-41c4- 8a9c-d468cc7bee9d在此之后,我希望获得身份验证令牌,但我却得到了> Write to server failed: read tcp server-ip:port->server-ip:443:> read: connection reset by peer我究竟做错了什么?仅供参考,我在 python 中使用相同的消息,并且通过套接字我可以获得令牌。有人可以帮我在 Go 语言中做同样的事情吗?谢谢
查看完整描述

1 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

从事实来看,您的服务器使用 port 443,我假设服务器需要 TLS 连接。要获得这样的连接,您可以使用tls.Dial

conn, err := tls.Dial("tcp", servAddr, nil) // servAddr not tcpAddr

此连接将处理 TLS 加密所需的基础步骤,例如 TLS 握手,并允许您Write发送要发送的字节,而不必自己进行加密。

正如您提到的证书验证错误,使用

conn, err := tls.Dial("tcp", servAddr, &tls.Config{InsecureSkipVerify: true})

将禁用此验证。请注意,这会删除 TLS 提供的大部分安全性。

请注意,我建议您使用它net/http来发送简单的 HTTP 请求。要在此处禁用证书验证,您可以使用

http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}

但同样要注意,这会消除 TLS 提供的大部分安全性。


查看完整回答
反对 回复 2023-04-24
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信