Maison  >  Article  >  développement back-end  >  Pourquoi Golang 1.9.2 sur Windows XP signale-t-il « x509 : certificat signé par une autorité inconnue » alors que les navigateurs ne le font pas ?

Pourquoi Golang 1.9.2 sur Windows XP signale-t-il « x509 : certificat signé par une autorité inconnue » alors que les navigateurs ne le font pas ?

DDD
DDDoriginal
2024-11-12 15:52:02617parcourir

Why Does Golang 1.9.2 on Windows XP Report

Golang HTTP x509 : erreur concernant l'autorité inconnue pour les certificats

Dans un passé récent, des individus ont rencontré des difficultés lorsqu'ils tentaient d'accéder à leurs systèmes backend en utilisant Golang 1.9.2 sur Windows XP. Bien qu'ils fonctionnent parfaitement sur des systèmes d'exploitation plus modernes tels que Windows et Linux, les utilisateurs exécutant leur code sous Windows XP ont rencontré l'erreur suivante : "x509 : certificat signé par une autorité inconnue."

Tests basés sur un navigateur utilisant Firefox ESR et Les navigateurs Chromium ont révélé que ces navigateurs ne soulevaient aucun problème lié aux certificats lors de l'accès à la même URL à partir du même environnement Windows XP. Notamment, le certificat SSL concerné reste valide et est signé par une autorité de certification de confiance.

Certaines personnes ont essayé de résoudre ce problème en remplaçant la validation TLS à l'aide du paramètre InsecureSkipVerify :

import ("net/http"; "crypto/tls")

tr := &http.Transport{
    TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
resp, err := client.Get("https://someurl:443/")

Cependant, cette méthode s'est révélée inefficace. Il est essentiel de noter que le remplacement de la validation TLS doit être abordé avec prudence car cela expose l'application à des menaces potentielles telles que des attaques de l'homme du milieu.

Si vous rencontrez le même problème, assurez-vous que vous avoir défini correctement le paramètre InsecureSkipVerify. Vous l'avez peut-être défini par inadvertance sur "InsecureSkyVerify". Voici l'extrait de code correct :

// NewAPIClient - creates a new API client
func NewAPIClient() Client {
    c := &APIClient{}

    tr := &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
    }
    c.client = &http.Client{Transport: tr}
    return c
}

N'oubliez pas que le remplacement de la validation TLS ne doit être envisagé qu'à des fins de test ou en conjonction avec des mesures de vérification personnalisées strictes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn