Ralat: Menyambung ke Pelayan dengan Medan Nama Biasa Legasi
Apabila cuba mewujudkan sambungan ke pelayan MongoDB menggunakan Go, anda mungkin menghadapi ralat:
failed to connect: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
Ralat ini menunjukkan bahawa sijil yang digunakan untuk pengesahan TLS mengandungi medan Common Name (CN) tetapi tidak mempunyai medan Nama Alternatif Subjek (SAN) yang diperlukan. Pelaksanaan TLS Go telah menjadi lebih ketat dalam versi terbaharu dan ia kini mengutamakan SAN berbanding CN untuk pengesahan hos.
Punca Punca:
Punca ralat ini terletak pada salah konfigurasi sijil SSL yang digunakan untuk pengesahan TLS. Sijil harus mempunyai medan SAN DNS yang sepadan dengan nama hos atau alamat IP pelayan MongoDB.
Penyelesaian:
Untuk menyelesaikan ralat ini, anda perlu menjana semula SSL sijil dengan medan SAN DNS. Ini boleh dicapai menggunakan langkah berikut:
Buat CSR (Permintaan Menandatangani Sijil):
openssl req -new \ -subj "${SUBJ_PREFIX}/CN=${DNS}/emailAddress=${EMAIL}" \ -key "${KEY}" \ -addext "subjectAltName = DNS:${DNS}" \ -out "${CSR}"
Tandatangan CSR dengan Root CA Anda:
openssl ca \ -create_serial \ -cert "${ROOT_CRT}" \ -keyfile "${ROOT_KEY}" \ -days "${CERT_LIFETIME}" \ -in "${CSR}" \ -batch \ -config "${CA_CONF}" \ -out "${CRT}"
Periksa Sijil Hasil:
openssl x509 -in server.crt -noout -text
Anda kini sepatutnya mempunyai sijil dengan bahagian SAN seperti:
X509v3 Subject Alternative Name: DNS:myserver.com
Setelah anda menjana semula sijil, anda boleh menggunakannya untuk mewujudkan sambungan selamat ke pelayan MongoDB tanpa menghadapi Ralat Nama Biasa.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan \'x509: sijil bergantung pada medan Nama Biasa warisan\' Ralat Semasa Menyambung ke MongoDB dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!