Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Membuat Permintaan HTTPS dengan Sijil Ditandatangani Sendiri dalam Go?

Bagaimana untuk Membuat Permintaan HTTPS dengan Sijil Ditandatangani Sendiri dalam Go?

Susan Sarandon
Lepaskan: 2024-12-08 18:02:12
asal
309 orang telah melayarinya

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

Cara Menghantar Permintaan HTTPs dengan Sijil dalam Go

Apabila membuat permintaan HTTPS kepada pelayan yang dijalankan pada port yang berbeza, ia adalah perkara biasa untuk menghadapi ralat berkaitan sijil. Ini berlaku kerana sijil pelayan ditandatangani oleh pihak berkuasa yang tidak diketahui dan klien HTTP lalai tidak mempercayai sijil yang ditandatangani sendiri.

Untuk menyelesaikan isu ini, kami perlu mengesahkan sijil pelayan secara manual menggunakan sijil CA yang sesuai . Berikut ialah panduan langkah demi langkah tentang cara untuk mencapainya dalam Go:

  1. Dapatkan Sijil CA:

    • Peroleh Sijil CA (cth., 'rootCA.crt') yang digunakan untuk menandatangani pelayan sijil.
  2. Buat Kumpulan Sijil:

    • Mulakan x509.CertPool dan tambah sijil CA padanya menggunakan caCertPool.AppendCertsFromPEM(caCert).
  3. Konfigurasikan Pilihan TLS:

    • Konfigurasikan tls.Config untuk menggunakan sijil kolam untuk mengesahkan pelayan sijil.
    • Tetapkan caCertPool kepada RootCAs dalam tls.Config.
  4. Buat Pelanggan HTTP dengan Pengangkutan Tersuai:

    • Buat http.Client yang menggunakan http.Transport tersuai yang dikonfigurasikan dengan Pilihan TLS dari langkah 3.
    • Tetapkan TLSClientConfig pada pengangkutan ke tls.Config.

Contoh Kod:

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)
    }
}
Salin selepas log masuk

Nota:

Jika anda tidak mempunyai sijil CA, anda boleh mencipta sijil anda sendiri. Rujuk sumber luaran untuk arahan tentang cara menjana sijil yang ditandatangani sendiri.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Permintaan HTTPS dengan Sijil Ditandatangani Sendiri dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan