Maison >développement back-end >Golang >Comment gérer les requêtes HTTPS avec des certificats personnalisés ou non fiables dans Go ?

Comment gérer les requêtes HTTPS avec des certificats personnalisés ou non fiables dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-11 12:05:10654parcourir

How to Handle HTTPS Requests with Custom or Untrusted Certificates in Go?

Envoi de requêtes HTTPS avec des certificats dans Go

Lors de l'interaction avec des services HTTPS qui nécessitent une vérification de certificat, les développeurs peuvent rencontrer des erreurs liées à不知名的授权机构. Pour résoudre ce problème, Go fournit un mécanisme permettant de valider les certificats de serveur à l'aide de certificats CA de confiance.

Pour résoudre le problème, vous devez obtenir le certificat CA de l'autorité de confiance qui a émis le certificat de serveur. Une fois que vous disposez du certificat CA, vous pouvez l'ajouter à la couche de transport de votre client HTTP comme indiqué ci-dessous :

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)
    }
}

De plus, vous pouvez générer un certificat CA personnalisé et signer vos propres certificats pour une communication sécurisée. Les étapes suivantes expliquent comment créer votre propre autorité de certification et votre propre certificat pour un domaine spécifique :

  1. Générer l'autorité de certification :

    openssl genrsa -out rootCA.key 4096
    openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
  2. Générer un certificat pour Domaine :

    openssl genrsa -out secure.domain.com.key 2048
    openssl req -new -key secure.domain.com.key -out secure.domain.com.csr
    openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt

En suivant ces étapes, vous pouvez vérifier les certificats du serveur et établir des connexions HTTPS sécurisées dans vos applications Go.

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