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

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

Barbara Streisand
Barbara Streisandoriginal
2024-12-11 00:34:10357parcourir

How to Verify HTTPS Requests Using Certificates in 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!

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