Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyelesaikan Ralat 'x509: sijil yang ditandatangani oleh pihak berkuasa yang tidak diketahui' Apabila Menggunakan Sijil TLS yang Ditandatangani Sendiri?
Dalam mewujudkan sambungan TLS dengan sijil pelayan yang ditandatangani sendiri, pengguna sering menemui sijil "x509: yang ditandatangani oleh ralat pihak berkuasa yang tidak diketahui". Isu ini timbul apabila pelanggan gagal mengiktiraf sijil yang ditandatangani sendiri sebagai pihak berkuasa yang dipercayai.
Untuk menyelesaikan ralat ini, isunya terletak pada proses penjanaan sijil. Coretan kod yang disediakan mencipta sijil yang ditandatangani sendiri tetapi mengabaikan untuk menetapkan bendera "IsCA:true". Bendera ini menetapkan sijil sebagai Pihak Berkuasa Sijil (CA), membolehkannya menandatangani sijil lain.
Kod yang diperbetulkan hendaklah menyerupai yang berikut:
Menjana Sijil:
func generateCertificate() { key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader) if err != nil { log.Fatal(err) } subject := x509.Certificate{ SerialNumber: big.NewInt(42), Subject: pkix.Name{ Organization: []string{"My Organization"}, }, } template := x509.Certificate{ SerialNumber: big.NewInt(43), Subject: subject.Subject, KeyUsage: x509.KeyUsageCertSign, IsCA: true, // Setting IsCA to true designates the certificate as a CA ExtKeyUsage: []x509.ExtKeyUsage{x509.ExtKeyUsageServerAuth}, } cert, err := x509.CreateCertificate(rand.Reader, &template, &template, &key.PublicKey, key) if err != nil { log.Fatal(err) } // Save the certificate and key to pem files }
Pelanggan Konfigurasi:
func clientSetup() (*tls.Config, error) { cert, err := ioutil.ReadFile("./cert.pem") if err != nil { return nil, err } certpool := x509.NewCertPool() certpool.AppendCertsFromPEM(cert) config := &tls.Config{ RootCAs: certpool, InsecureSkipVerify: true, //!!! Skip certificate verification for testing purposes only } return config, nil }
Nota: Untuk persekitaran pengeluaran, pengesahan sijil hendaklah didayakan untuk memastikan keaslian pelayan.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'x509: sijil yang ditandatangani oleh pihak berkuasa yang tidak diketahui' Apabila Menggunakan Sijil TLS yang Ditandatangani Sendiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!