Go で MongoDB に接続する際の「x509: 証明書は従来の Common Name フィールドに依存しています」エラーを修正する方法

Patricia Arquette
リリース: 2024-10-28 05:51:30
オリジナル
932 人が閲覧しました

How to Fix

エラー: 従来の共通名フィールドを持つサーバーに接続中

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 フィールドを含む証明書。これは、次の手順を使用して実行できます:

  1. CSR (証明書署名リクエスト) を作成します:

    openssl req -new \
        -subj "${SUBJ_PREFIX}/CN=${DNS}/emailAddress=${EMAIL}" \
        -key "${KEY}" \
        -addext "subjectAltName = DNS:${DNS}" \
        -out "${CSR}"
    ログイン後にコピー
  2. ルート CA で CSR に署名します:

    openssl ca \
        -create_serial \
        -cert "${ROOT_CRT}" \
        -keyfile "${ROOT_KEY}" \
        -days "${CERT_LIFETIME}" \
        -in "${CSR}" \
        -batch \
        -config "${CA_CONF}" \
        -out "${CRT}"
    ログイン後にコピー
  3. 結果の証明書を検査します:

    openssl x509 -in server.crt -noout -text
    ログイン後にコピー

これで、次のような SAN セクションを含む証明書が作成されました。

X509v3 Subject Alternative Name: 
    DNS:myserver.com
ログイン後にコピー

証明書を再生成したら、それを使用して、MongoDB サーバーへの安全な接続を確立できます。コモンネームエラー。

以上がGo で MongoDB に接続する際の「x509: 証明書は従来の Common Name フィールドに依存しています」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート