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

Golang http客户端握手失败

Golang http客户端握手失败

Go
倚天杖 2021-11-08 14:41:46
尝试获取网页:    tr := &http.Transport{        TLSHandshakeTimeout: 30 * time.Second,        DisableKeepAlives: true,    }    client := &http.Client{Transport: tr}    req, err := http.NewRequest("GET", "https://www.fl.ru/", nil)    if err != nil {        log.Fatalf("%s\n", err);    }    resp, err := client.Do(req);    if err != nil {        log.Fatalf("%s\n", err);    }    defer resp.Body.Close()获取https://www.fl.ru/:远程错误:握手失败。如果我尝试获取另一个 HTTPS 页面 - 一切正常。
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

该服务器仅支持少数弱密码:


TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x39)   DH 1024 bits (p: 128, g: 1, Ys: 128)   FS   WEAK

TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x33)   DH 1024 bits (p: 128, g: 1, Ys: 128)   FS   WEAK

TLS_RSA_WITH_RC4_128_SHA (0x5)   WEAK

如果您确实必须连接到该服务器,Go 确实支持列表中的最后一个密码,但默认情况下不支持。使用新的 tls.Config 创建一个客户端,指定您想要的密码:


t := &http.Transport{

    Proxy: http.ProxyFromEnvironment,

    Dial: (&net.Dialer{

        Timeout:   30 * time.Second,

        KeepAlive: 30 * time.Second,

    }).Dial,

    TLSHandshakeTimeout: 10 * time.Second,

    TLSClientConfig: &tls.Config{

        CipherSuites: []uint16{tls.TLS_RSA_WITH_RC4_128_SHA},

    },

}


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

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