Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengesahkan Sijil Pelayan dalam Permintaan HTTPS Menggunakan Go?

Bagaimanakah Saya Boleh Mengesahkan Sijil Pelayan dalam Permintaan HTTPS Menggunakan Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-11 07:14:12715semak imbas

How Can I Verify Server Certificates in HTTPS Requests Using Go?

Sahkan Sijil Pelayan dalam Permintaan HTTPS dengan Golang

Apabila mengakses tapak web atau perkhidmatan HTTPS, aplikasi anda mungkin menghadapi ralat sijil SSL jika kepercayaan setempat anda kedai tidak termasuk pihak berkuasa sijil (CA) yang mengeluarkan sijil pelayan. Jika anda ingin mewujudkan sambungan HTTPS selamat tanpa mengabaikan pengesahan sijil, artikel ini menyediakan penyelesaian menggunakan perpustakaan klien HTTP Go.

Untuk mengabaikan pengesahan sijil dan melumpuhkan pemeriksaan sijil, anda boleh menggunakan coretan kod berikut:

tr := &http.Transport{
    TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}

client := &http.Client{Transport: tr}

Walau bagaimanapun, pendekatan ini tidak disyorkan untuk persekitaran pengeluaran kerana ia boleh menimbulkan keselamatan risiko.

Mengesahkan Sijil Pelayan

Untuk mengesahkan sijil pelayan, anda perlu menambah sijil CA pada konfigurasi pengangkutan anda. Di bawah ialah contoh:

package main

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

Menjana Sijil untuk Pelayan Anda

Jika anda tidak mempunyai sijil CA, anda boleh menjana sijil bersama-sama sijil untuk anda pelayan menggunakan arahan berikut:

  1. Jana CA:
openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt
  1. Jana sijil untuk domain anda, yang ditandatangani oleh CA anda:
openssl genrsa -out secure.domain.com.key 2048
openssl req -new -key secure.domain.com.key -out secure.domain.com.csr
# In answer to question `Common Name (e.g. server FQDN or YOUR name) []:` you should set `secure.domain.com` (your real domain name)
openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt

Dengan melengkapkan langkah ini, anda akan mempunyai klien HTTP yang dikonfigurasikan yang mengesahkan sijil pelayan dalam Go. Ini memastikan komunikasi HTTPS selamat dengan pelayan yang ditentukan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesahkan Sijil Pelayan dalam Permintaan HTTPS Menggunakan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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