Aller au contenu
ecdsa.com
Go crypto/tls clientGo

Message d’erreur

remote error: tls: handshake failure

Dans les clients HTTP, la ligne se présente ainsi : « Get \"https://…\": remote error: tls: handshake failure ». Go utilise la même forme « remote error: tls: <alert> » côté serveur, dans les lignes de journal « http: TLS handshake error from … », lorsqu’un client envoie une alerte.

Go crypto/tls client — the server sent TLS alert 40 (handshake_failure)

Ce que cela signifie

Le message « remote error » signifie que l’autre partie a envoyé une alerte TLS ; ici, le serveur a envoyé l’alerte 40 (handshake_failure) au client Go. Le serveur a rejeté les paramètres proposés par Go (suites de chiffrement, groupes, algorithmes de signature) ou a exigé un certificat client que Go n’a pas envoyé. Go ne peut pas savoir lequel des deux ; le journal du serveur, si.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Comparer les suites de chiffrement

    tls.CipherSuites() liste les suites que Go juge sûres et qu’il propose ; comparez-les avec la configuration du serveur.

    go
    // What does this Go client offer by default?
    for _, s := range tls.CipherSuites() {
    	fmt.Println(s.Name)
    }
  2. 2.

    Envoyer un certificat client pour le TLS mutuel

    Chargez le certificat et la clé avec tls.LoadX509KeyPair, puis placez-les dans tls.Config.Certificates.

    go
    // Mutual TLS: present a client certificate
    cert, err := tls.LoadX509KeyPair("client.pem", "client.key")
    if err != nil {
    	log.Fatal(err)
    }
    client := &http.Client{Transport: &http.Transport{TLSClientConfig: &tls.Config{
    	Certificates: []tls.Certificate{cert},
    }}}
  3. 3.

    Propriétaires de serveurs : moderniser les suites

    TLS 1.3 et les suites TLS 1.2 fondées sur ECDHE fonctionnent avec toutes les versions actuelles de Go.

    text
    Server side: enable TLS 1.3 and TLS 1.2 ECDHE suites with AES-GCM or ChaCha20-Poly1305.

Erreurs associées

Parcourir toute la base de données des erreurs de signature