Maison >développement back-end >Golang >Comment puis-je vérifier les certificats de serveur dans les requêtes HTTPS à l'aide de Go ?

Comment puis-je vérifier les certificats de serveur dans les requêtes HTTPS à l'aide de Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-11 07:14:12715parcourir

How Can I Verify Server Certificates in HTTPS Requests Using Go?

Vérifiez les certificats de serveur dans les requêtes HTTPS avec Golang

Lorsque vous accédez à des sites Web ou à des services HTTPS, votre application peut rencontrer des erreurs de certificat SSL si votre confiance locale store n'inclut pas l'autorité de certification (CA) qui a émis le certificat du serveur. Si vous souhaitez établir des connexions HTTPS sécurisées sans ignorer la vérification du certificat, cet article propose une solution utilisant la bibliothèque client HTTP de Go.

Pour ignorer la vérification du certificat et la désactiver, vous pouvez utiliser l'extrait de code suivant :

tr := &http.Transport{
    TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}

client := &http.Client{Transport: tr}

Cependant, cette approche n'est pas recommandée pour les environnements de production car elle peut présenter un risque de sécurité.

Vérification du serveur Certificats

Pour vérifier les certificats de serveur, vous devez ajouter le certificat CA à votre configuration de transport. Vous trouverez ci-dessous un exemple :

package main

import (
    "crypto/tls"
    "io/ioutil"
    "log"
    "net/http"
    "crypto/x509"
)

func main() {
    caCert, err := ioutil.ReadFile("rootCA.crt")
    if err != nil {
        log.Fatal(err)
    }
    caCertPool := x509.NewCertPool()
    caCertPool.AppendCertsFromPEM(caCert)

    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: &tls.Config{
                RootCAs:      caCertPool,
            },
        },
    }

    _, err := client.Get("https://secure.domain.com")
    if err != nil {
        panic(err)
    }
}

Génération de certificats pour votre serveur

Si vous n'avez pas de certificat CA, vous pouvez en générer un avec un certificat pour votre serveur à l'aide des commandes suivantes :

  1. Générer CA :
openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
  1. Générer un certificat pour votre domaine, signé par votre CA :
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

En complétant ces étapes, vous disposerez d'un client HTTP configuré qui vérifie les certificats du serveur dans Go. Cela garantit une communication HTTPS sécurisée avec le serveur spécifié.

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