Maison >développement back-end >Golang >Pourquoi ma connexion TLS échoue-t-elle avec un certificat auto-signé et comment puis-je y remédier ?

Pourquoi ma connexion TLS échoue-t-elle avec un certificat auto-signé et comment puis-je y remédier ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-19 15:58:17780parcourir

Why Does My TLS Connection Fail with a Self-Signed Certificate and How Can I Fix It?

Dépannage des connexions TLS avec des certificats auto-signés

Problème : Établissement d'une connexion TLS à l'aide d'un serveur auto-signé le certificat échoue avec une erreur indiquant un certificat inconnu autorité.

Code pertinent :
Client :

CA_Pool := x509.NewCertPool()
severCert, err := ioutil.ReadFile("./cert.pem")
CA_Pool.AppendCertsFromPEM(severCert)

config := tls.Config{RootCAs: CA_Pool}

Serveur :

cert, err := tls.LoadX509KeyPair("./cert.pem", "./key.pem")
config := tls.Config{Certificates: []tls.Certificate{cert}}

Erreur Message :

client: dial: x509: certificate signed by unknown authority 
(possibly because of "x509: invalid signature: parent certificate
cannot sign this kind of certificate" while trying to verify 
candidate authority certificate "serial:0")

Cause première :
Le certificat auto-signé généré n'a pas l'indicateur IsCA défini, indiquant qu'il ne s'agit pas d'un certificat intermédiaire ou racine . Par conséquent, le pool d'autorités de certification du client n'est pas en mesure de vérifier que le certificat auto-signé est une autorité valide.

Solution :
Pour corriger ce problème, assurez-vous que l'indicateur IsCA est défini lors de la génération du certificat auto-signé à l’aide de x509.CreateCertificate. Le code correct pour la génération de certificat est le suivant :

certTemplate := &x509.Certificate{
    IsCA: true,
    KeyUsage: x509.KeyUsageCertSign,
    // ... other certificate parameters
}

En définissant IsCA:true, le certificat auto-signé peut correctement servir d'autorité de certification, permettant au client de vérifier son authenticité.

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