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