エラー: 従来の共通名フィールドを持つサーバーに接続中
Go を使用して MongoDB サーバーへの接続を確立しようとすると、次のような問題が発生する場合があります。エラー:
failed to connect: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
このエラーは、TLS 認証に使用される証明書に Common Name (CN) フィールドが含まれているが、必要な Subject Alternative Name (SAN) フィールドが欠落していることを示します。 Go の TLS 実装は最近のバージョンでより厳密になり、ホスト検証では CN よりも SAN が優先されるようになりました。
根本原因:
このエラーの根本原因は次のとおりです。 TLS 認証に使用される SSL 証明書の構成が間違っている。証明書には、MongoDB サーバーのホスト名または IP アドレスと一致する DNS SAN フィールドが必要です。
解決策:
このエラーを解決するには、SSL を再生成する必要があります。 DNS SAN フィールドを含む証明書。これは、次の手順を使用して実行できます:
CSR (証明書署名リクエスト) を作成します:
openssl req -new \ -subj "${SUBJ_PREFIX}/CN=${DNS}/emailAddress=${EMAIL}" \ -key "${KEY}" \ -addext "subjectAltName = DNS:${DNS}" \ -out "${CSR}"
ルート CA で CSR に署名します:
openssl ca \ -create_serial \ -cert "${ROOT_CRT}" \ -keyfile "${ROOT_KEY}" \ -days "${CERT_LIFETIME}" \ -in "${CSR}" \ -batch \ -config "${CA_CONF}" \ -out "${CRT}"
結果の証明書を検査します:
openssl x509 -in server.crt -noout -text
これで、次のような SAN セクションを含む証明書が作成されました。
X509v3 Subject Alternative Name: DNS:myserver.com
証明書を再生成したら、それを使用して、MongoDB サーバーへの安全な接続を確立できます。コモンネームエラー。
以上がGo で MongoDB に接続する際の「x509: 証明書は従来の Common Name フィールドに依存しています」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。