ssl - 为什么我会收到超大记录 TLS 错误?

标签 ssl go tls1.2

我正在尝试使用 go-xmpp连接到 DuckDuckGo's XMPP services .

下面是我的测试用例:

package main

import (
    "crypto/tls"
    "log"

    "github.com/mattn/go-xmpp"
)

const (
    svr = "dukgo.com"
    usr = "testtesttest"
    pwd = "test123"
)

func main() {
    xmpp.DefaultConfig = tls.Config{
        ServerName:         svr,
        InsecureSkipVerify: false,
    }

    options := xmpp.Options{
        Host:     svr,
        User:     usr,
        Password: pwd,
    }

    _, err := options.NewClient()
    if err != nil {
        log.Fatal(err)
    }
}

正在执行 log.Fatal block 并返回以下错误消息:

2016/08/24 16:32:27 tls: oversized record received with length 28012
exit status 1

谷歌搜索错误指向我在 Docker 中的相同错误,所以这并不是很有帮助。这个错误是什么意思?我该怎么做才能解决这个问题?

最佳答案

就像您正在使用的 go-xmpp 包的示例一样,它也需要用于 tls 的端口。

所以如果没有 out 它将尝试连接到 HTTP 端点并给你这个错误。当端点仅支持具有未知 CA 证书的 HTTP 或 HTTPS 时,您将看到类似这样的错误。

请注意,您使用的包还支持无 TLS,仔细检查 DuckGo xmpp 要求并更改您的代码以匹配它们。

类似这样的其他帖子

例子

https://github.com/mattn/go-xmpp/blob/master/_example/example.go

// Server has the port
var server = flag.String("server", "talk.google.com:443", "server")
var username = flag.String("username", "", "username")
var password = flag.String("password", "", "password")
var status = flag.String("status", "xa", "status")
var statusMessage = flag.String("status-msg", "I for one welcome our new codebot overlords.", "status message")
var notls = flag.Bool("notls", false, "No TLS")
var debug = flag.Bool("debug", false, "debug output")
var session = flag.Bool("session", false, "use server session")

// Omitted code

var talk *xmpp.Client
var err error
options := xmpp.Options{Host: *server,
    User:          *username,
    Password:      *password,
    NoTLS:         *notls,
    Debug:         *debug,
    Session:       *session,
    Status:        *status,
    StatusMessage: *statusMessage,
}

talk, err = options.NewClient()

关于ssl - 为什么我会收到超大记录 TLS 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39126345/

相关文章:

java - 使用 BouncyCaSTLe 进行简单的 HTTPS 查询

ssl - 通过 DNS 对多个子域和 IP 地址使用 autocert

go - 库伯内斯 403 : Cannot patch pods in the namespace

go - float 类型的 map 键

node.js - ERR_SSL_PROTOCOL_ERROR 仅适用于某些用户(nodejs,express)

linux - 内部 Linux 设备上的 SSL

go - 键入断言嵌套接口(interface)

Spring Security 问题 - 在 subjectDN 中找不到匹配模式

ssl - PayPal 网站支付专业版 TLS

java - Java 请求中的 HTTPS SSL GET 失败