Rumah > Artikel > pembangunan bahagian belakang > Mengapa sambungan Go MongoDB saya membuang ralat sijil x509, dan bagaimana saya boleh membetulkannya menggunakan SAN?
Memahami Ralat Sijil x509
Apabila menyambung ke pelayan MongoDB menggunakan Go, ralat boleh berlaku disebabkan isu pengesahan sijil. Ralat ini disebabkan apabila sijil x509 yang digunakan untuk pengesahan TLS bergantung pada medan Nama Biasa (CN) warisan dan bukannya Nama Alternatif Subjek (SAN).
Penyelesaian: Menggunakan SAN dalam Sijil
Untuk menyelesaikan isu ini, sijil mesti dijana semula dengan SAN dan bukannya medan CN. SAN menyediakan cara yang lebih selamat dan fleksibel untuk mengenal pasti domain atau nama hos pelayan.
Menjana Sijil dengan SAN
Gunakan OpenSSL untuk menjana CSR (Permintaan Menandatangani Sijil) dan tandatanganinya dengan akar CA:
<code class="sh">openssl req -new \ -subj "${SUBJ_PREFIX}/CN=${DNS}/emailAddress=${EMAIL}" \ -key "${KEY}" \ -addext "subjectAltName = DNS:${DNS}" \ -out "${CSR}" openssl ca \ -create_serial \ -cert "${ROOT_CRT}" \ -keyfile "${ROOT_KEY}" \ -days "${CERT_LIFETIME}" \ -in "${CSR}" \ -batch \ -config "${CA_CONF}" \ -out "${CRT}"</code>
Konfigurasi CA
Konfigurasikan CA dengan pilihan berikut:
[ ca ] default_ca = my_ca [ my_ca ] ... copy_extensions = copy [ my_cert ] basicConstraints = CA:FALSE nsComment = "generated by https://github.com/me/my-pki" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer [ policy_match ] # ensure CSR fields match that of delivered Cert countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional
Mengesahkan Sijil
Periksa sijil pelayan yang terhasil menggunakan OpenSSL:
<code class="sh">openssl x509 -in server.crt -noout -text</code>
Sijil kini harus mengandungi bahagian SAN:
X509v3 Subject Alternative Name: DNS:myserver.com
Dengan mengemas kini sijil dengan SAN, sambungan TLS kini sepatutnya berjaya diwujudkan tanpa mencetuskan mesej ralat yang berkaitan dengan medan CN warisan.
Atas ialah kandungan terperinci Mengapa sambungan Go MongoDB saya membuang ralat sijil x509, dan bagaimana saya boleh membetulkannya menggunakan SAN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!