猿问

Golang http客户端握手失败

尝试获取网页:


    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 页面 - 一切正常。


倚天杖
浏览 179回答 1
1回答

一只名叫tom的猫

该服务器仅支持少数弱密码:TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x39)   DH 1024 bits (p: 128, g: 1, Ys: 128)   FS   WEAKTLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x33)   DH 1024 bits (p: 128, g: 1, Ys: 128)   FS   WEAKTLS_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},    },}
随时随地看视频慕课网APP

相关分类

Go
我要回答