Maison >développement back-end >Golang >Comment vérifier les certificats HTTPS dans Golang en cas d'erreurs SSL ?
Lorsque vous effectuez des requêtes HTTPS vers des serveurs avec des certificats personnalisés, il est essentiel de vérifier leur authenticité pour garantir une communication sécurisée.
Dans l'un de ces scénarios, une application exécutée sur un port distinct rencontrait une erreur SSL lors d'une tentative d'accès à une API REST hébergée sur HTTPS. La cause de cette erreur était une autorité de certification non reconnue.
Pour résoudre ce problème, il est crucial d'ajouter l'autorité de certification au transport lors des requêtes HTTPS. L'extrait de code suivant montre comment y parvenir :
package main import ( "crypto/tls" "io/ioutil" "log" "net/http" "crypto/x509" ) func main() { // Read the root CA certificate from file caCert, err := ioutil.ReadFile("rootCA.crt") if err != nil { log.Fatal(err) } // Create an X.509 certificate pool and add the CA certificate caCertPool := x509.NewCertPool() caCertPool.AppendCertsFromPEM(caCert) // Configure the TLS client to trust the CA tlsConfig := &tls.Config{ RootCAs: caCertPool, } // Create a new HTTP client with the modified TLS configuration client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: tlsConfig, }, } // Make an HTTPS request using the client _, err = client.Get("https://secure.domain.com") if err != nil { panic(err) } }
Alternativement, si aucun certificat d'autorité de certification préexistant n'est disponible, la solution suggère de générer votre propre autorité de certification et d'émettre des certificats signés par cette autorité de certification. Les commandes suivantes fournissent une approche étape par étape :
Génération de l'autorité de certification :
openssl genrsa -out rootCA.key 4096 openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
Génération du certificat pour secure.domain.com signé par l'autorité de certification :
openssl genrsa -out secure.domain.com.key 2048 openssl req -new -key secure.domain.com.key -out secure.domain.com.csr #In answer to question `Common Name (e.g. server FQDN or YOUR name) []:` you should set `secure.domain.com` (your real domain name) openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt
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!