Maison >développement back-end >Golang >Comment vérifier les requêtes HTTPS à l'aide de certificats dans Go ?
Vérification des demandes HTTPS à l'aide de certificats dans Go
Dans une application nécessitant une communication avec une API REST compatible HTTPS servie sur un port différent, il Il est courant de rencontrer des erreurs de validation SSL telles que « x509 : certificat signé par une autorité inconnue ». Cela se produit lorsque l'application ne reconnaît pas l'autorité de certification (CA) de l'API.
Pour résoudre ce problème, vous devez ajouter le certificat CA à la couche de transport de votre demande. Voici un extrait de code Go montrant comment procéder :
package main import ( "crypto/tls" "crypto/x509" "fmt" "io/ioutil" "log" "net/http" ) func main() { // Read the root CA certificate. caCert, err := ioutil.ReadFile("rootCA.crt") if err != nil { log.Fatal(err) } // Create a certificate pool from the CA certificate. caCertPool := x509.NewCertPool() caCertPool.AppendCertsFromPEM(caCert) // Configure the HTTP client with TLS settings. client := &http.Client{ Transport: &http.Transport{ TLSClientConfig: &tls.Config{ RootCAs: caCertPool, }, }, } // Make a GET request to the HTTPS URL. resp, err := client.Get("https://secure.domain.com") if err != nil { log.Fatal(err) } // Process the HTTP response as usual. fmt.Println(resp.Status) }
Si vous n'avez pas créé d'autorité de certification pour signer vos certificats, voici quelques étapes pour vous guider :
Génération une autorité de certification :
openssl genrsa -out rootCA.key 4096 openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
Génération d'un certificat pour Secure.domain.com signé avec l'AC :
openssl genrsa -out secure.domain.com.key 2048 openssl req -new -key secure.domain.com.key -out secure.domain.com.csr
En réponse à la question "Nom commun (par exemple FQDN du serveur ou VOTRE nom) []:", saisissez "secure.domain.com" (votre nom de domaine réel) .
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!