Maison > développement back-end > Golang > Comment effectuer des requêtes HTTPS avec des certificats auto-signés dans Go ?

Comment effectuer des requêtes HTTPS avec des certificats auto-signés dans Go ?

Susan Sarandon
Libérer: 2024-12-08 18:02:12
original
318 Les gens l'ont consulté

How to Make HTTPS Requests with Self-Signed Certificates in Go?

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 :

  1. Obtenir le certificat CA :

    • Acquérir le Certificat d'autorité de certification (par exemple, « rootCA.crt ») utilisé pour signer le certificat du serveur. certificat.
  2. Créez un pool de certificats :

    • Initialisez un x509.CertPool et ajoutez-y le certificat CA à l'aide caCertPool.AppendCertsFromPEM(caCert).
  3. Configurer les options TLS :

    • Configurer un fichier tls.Config pour utiliser le certificat pool pour vérifier le certificat du serveur.
    • Définissez caCertPool sur RootCA dans le tls.Config.
  4. Créez un client HTTP avec un transport personnalisé :

    • Créez un http.Client qui utilise un http.Transport personnalisé configuré avec les options TLS de l'étape 3.
    • Définissez TLSClientConfig sur le transport vers le tls.Config configuré.

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)
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal