Comment envoyer une requête HTTPs avec un certificat dans Go
Lorsque vous effectuez des requêtes HTTPS à un serveur exécuté sur un port différent, il est courant rencontrer des erreurs liées au certificat. Cela se produit car le certificat du serveur est signé par une autorité inconnue et le client HTTP par défaut ne fait pas confiance aux certificats auto-signés.
Pour résoudre ce problème, nous devons vérifier manuellement le certificat du serveur à l'aide du certificat CA approprié. . Voici un guide étape par étape sur la façon d'accomplir cela dans Go :
Obtenir le certificat CA :
Créez un pool de certificats :
Configurer les options TLS :
Créez un client HTTP avec un transport personnalisé :
Exemple de code :
package main import ( "crypto/tls" "crypto/x509" "io/ioutil" "log" "net/http" ) func main() { // Read the CA certificate from file caCert, err := ioutil.ReadFile("rootCA.crt") if err != nil { log.Fatal(err) } // Create a certificate pool and add the CA cert caCertPool := x509.NewCertPool() caCertPool.AppendCertsFromPEM(caCert) // Configure TLS options tlsConfig := &tls.Config{ RootCAs: caCertPool, } // Create an HTTP client with custom transport client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: tlsConfig, }, } // Send an HTTPs request _, err = client.Get("https://secure.domain.com") if err != nil { panic(err) } }
Remarque :
Si vous n'avez pas de certificat CA, vous pouvez créer le vôtre. Reportez-vous à des ressources externes pour obtenir des instructions sur la façon de générer des certificats auto-signés.
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!