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?

Bagaimana untuk Menyelesaikan Ralat 'x509: sijil yang ditandatangani oleh pihak berkuasa yang tidak diketahui' Apabila Menggunakan Sijil TLS yang Ditandatangani Sendiri?

Patricia Arquette
Lepaskan: 2024-12-09 21:30:11
asal
433 orang telah melayarinya

How to Resolve the

Menyediakan TLS dengan Sijil 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
}
Salin selepas log masuk

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

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!

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