Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengesahkan Permintaan HTTPS Menggunakan Sijil dalam Go?

Bagaimana untuk Mengesahkan Permintaan HTTPS Menggunakan Sijil dalam Go?

Barbara Streisand
Lepaskan: 2024-12-11 00:34:10
asal
419 orang telah melayarinya

How to Verify HTTPS Requests Using Certificates in Go?

HTTPS Minta Pengesahan Menggunakan Sijil dalam Go

Dalam aplikasi yang memerlukan komunikasi dengan API REST yang didayakan HTTPS yang disampaikan pada port lain, ia adalah perkara biasa untuk menghadapi ralat pengesahan SSL seperti "x509: sijil yang ditandatangani oleh pihak berkuasa yang tidak diketahui." Ini berlaku apabila aplikasi tidak mengenali pihak berkuasa sijil (CA) API.

Untuk menyelesaikan isu ini, anda perlu menambah sijil CA pada lapisan pengangkutan permintaan anda. Berikut ialah coretan kod Go yang menunjukkan cara melakukannya:

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

Jika anda belum membuat CA untuk menandatangani sijil anda, berikut ialah beberapa langkah untuk membimbing anda:

Menjana CA:

openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
Salin selepas log masuk

Menjana Sijil untuk Secure.domain.com Ditandatangani dengan CA:

openssl genrsa -out secure.domain.com.key 2048
openssl req -new -key secure.domain.com.key -out secure.domain.com.csr
Salin selepas log masuk

Sebagai jawapan kepada soalan "Nama Biasa (cth. pelayan FQDN atau nama ANDA) []:", masukkan "secure.domain.com" (domain sebenar anda nama).

openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Permintaan HTTPS Menggunakan Sijil 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