Rumah >pembangunan bahagian belakang >Golang >Mengapa Sambungan TLS Saya Gagal dengan Sijil Ditandatangani Sendiri dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Sambungan TLS Saya Gagal dengan Sijil Ditandatangani Sendiri dan Bagaimana Saya Boleh Membetulkannya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-19 15:58:17778semak imbas

Why Does My TLS Connection Fail with a Self-Signed Certificate and How Can I Fix It?

Menyelesaikan Masalah Sambungan TLS dengan Sijil Ditandatangani Sendiri

Isu: Mewujudkan sambungan TLS menggunakan pelayan yang ditandatangani sendiri sijil gagal dengan ralat menunjukkan sijil yang tidak diketahui pihak berkuasa.

Kod Berkaitan:
Pelanggan:

CA_Pool := x509.NewCertPool()
severCert, err := ioutil.ReadFile("./cert.pem")
CA_Pool.AppendCertsFromPEM(severCert)

config := tls.Config{RootCAs: CA_Pool}

Pelayan:

cert, err := tls.LoadX509KeyPair("./cert.pem", "./key.pem")
config := tls.Config{Certificates: []tls.Certificate{cert}}

Ralat Mesej:

client: dial: x509: certificate signed by unknown authority 
(possibly because of "x509: invalid signature: parent certificate
cannot sign this kind of certificate" while trying to verify 
candidate authority certificate "serial:0")

Punca Punca:
Sijil yang ditandatangani sendiri yang dihasilkan tidak mempunyai set bendera IsCA, yang menunjukkan bahawa ia bukan sijil perantaraan atau akar . Akibatnya, Kumpulan CA pelanggan tidak dapat mengesahkan sijil yang ditandatangani sendiri sebagai pihak berkuasa yang sah.

Penyelesaian:
Untuk membetulkan isu ini, pastikan bendera IsCA adalah ditetapkan apabila menjana sijil yang ditandatangani sendiri menggunakan x509.CreateCertificate. Kod yang betul untuk penjanaan sijil adalah seperti berikut:

certTemplate := &x509.Certificate{
    IsCA: true,
    KeyUsage: x509.KeyUsageCertSign,
    // ... other certificate parameters
}

Dengan menetapkan IsCA:true, sijil yang ditandatangani sendiri boleh berfungsi dengan betul sebagai pihak berkuasa sijil, membolehkan pelanggan mengesahkan kesahihannya.

Atas ialah kandungan terperinci Mengapa Sambungan TLS Saya Gagal dengan Sijil Ditandatangani Sendiri dan Bagaimana Saya Boleh Membetulkannya?. 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