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
Libérer: 2024-12-19 15:58:17
original
751 Les gens l'ont consulté

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}
Copier après la connexion

Serveur :

cert, err := tls.LoadX509KeyPair("./cert.pem", "./key.pem")
config := tls.Config{Certificates: []tls.Certificate{cert}}
Copier après la connexion

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")
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal