当前位置: 首页 > 知识库问答 >
问题:

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

钮出野
2023-03-14

我试图通过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内容类型:text/xml;charset=utf-8授权:基本{username:password in base64}内容长度:405 SOAPAction:“http://videoos.net/2/XProtectCSServerCommand/IServerCommandService/Login“连接:保持活动190fc316-6412-41c4-8a9c-d468cc7bee9d

在这之后,我希望得到一个身份验证令牌,但是我得到的是一个

> Write to server failed: read tcp server-ip:port->server-ip:443:
> read: connection reset by peer

我做错了什么?仅供参考,我在python中使用了相同的消息,通过套接字我可以获得令牌。有人能帮我在Go lang做同样的事吗?谢谢

共有1个答案

云默
2023-03-14

从服务器使用端口443这一事实判断,我假设服务器需要TLS连接。要获得这样的连接,可以使用tls。拨号

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

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

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

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

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

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

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

但请再次注意,这会删除TLS提供的大部分安全性。有关使用net禁用此请求发送的更多详细信息,请查看此答案。http

 类似资料:
  • 我正在开发一个Springboot应用程序,该应用程序需要支持本地(通过基于DAO的提供程序)和多个LDAP服务器(管理配置,存储在数据库中)进行身份验证。 对于单个LDAP提供程序,我的配置方法如下所示: 通过其他类似的帖子,这似乎可以通过创建多个LDAP提供者来实现,Spring security将在每个提供者之间循环,直到找到成功的登录。我将关联的LDAP配置记录作为外键关联到用户表上。 有

  • 我在Linux上使用android Studio,然后从git导入了我的项目(它是从windows推送的)。但是由于某种未知的原因,IDE抛出了以下错误: [496677]警告-拉德尔。项目ProjectSetUpTask-[658549]警告-nal。AbstractExternalSystemTask-原因:对等方未通过com身份验证。intellij。openapi。外部系统。模型Exter

  • 我有Geo Trust签署的https证书。所有浏览器打开我的网站非常好。我的应用程序通过https授权,大多数时候一切都好。但有时用户无法连接并出现错误: 上一个用户拥有Windows7x86和Java1.7_45u。它发生在随机的OSs和随机的java更新上,我不知道原因。有时它不会发生,但通常如果用户有这样的错误没有帮助。 我不能添加证书到用户的密钥,因为这是用户应用程序。 目标url是au

  • 在我的LaravelV5.4项目中,我有两个模型:用户和管理员。 在config/auth.php中,我向警卫和提供者添加了admin,如下所示: 现在在AdminController类中,我想使用Auth::true函数,但默认情况下它使用用户表。我可以在config/auth.php中更改默认值,如下所示,它可以工作,但在这种情况下,我不能为用户使用auth::trunt。 我想将用户设置为默

  • 我无法登录我的系统。当我在我的web表单中插入数据并点击登录按钮时,我的系统不工作。(数据是正确的)。 用户实体: 用户存储库: 安全配置: 错误消息:

  • 问题内容: 我正在编写一个要求用户登录的Spring Web应用程序。我公司有一个Active Directory服务器,我想将其用于此目的。但是,我在使用Spring Security连接服务器时遇到了麻烦。 我正在使用Spring 2.5.5和Spring Security 2.0.3,以及Java 1.6。 如果我将LDAP URL更改为错误的IP地址,它不会引发异常或任何异常,因此我想知道