ホームページ  >  記事  >  バックエンド開発  >  Go TLS 接続が「x509: 証明書は従来の Common Name フィールドに依存しています」で失敗するのはなぜですか?

Go TLS 接続が「x509: 証明書は従来の Common Name フィールドに依存しています」で失敗するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 02:22:31902ブラウズ

Why Does My Go TLS Connection Fail with

MongoDB への TLS 接続を確立しようとすると、「x509: 証明書は従来の Common Name フィールドに依存しています」エラーで失敗する

Go を使用すると、「接続に失敗しました: x509: 証明書は従来の Common Name フィールドに依存しています」エラーが発生する場合があります。この問題は、証明書の ID に関して共通名 (CN) フィールドよりもサブジェクト代替名 (SAN) を優先するように更新された証明書検証チェックに起因します。

根本原因:

TLS 認証に使用される証明書は、ホストの識別においてより安全であると考えられている SAN ではなく、従来の Common Name フィールドに依存しています。 Go の現在のバージョンでは、SAN の使用を強制する、より厳格な証明書検証チェックが行われています。

解決策:

この問題を解決するには、次のことを確認して証明書自体を修正する必要があります。 SAN が含まれていること。これには、適切な SAN フィールドを含む新しい証明書を生成するか、それらを含めるように既存の証明書を再構成する必要があります。

ソースを修正する:

  1. CSR (証明書署名要求): OpenSSL などのツールを使用して、目的のホスト名の SAN フィールドを含む CSR を作成します。
  2. ルート CA で CSR に署名します。 CSR に署名するための元の証明書を発行したルート認証局 (CA)。含まれる SAN を使用して新しい証明書を作成します。

新しい証明書の検査:

次のコマンドを使用して証明書を検査し、新しく生成された証明書に SAN フィールドが存在することを確認します。

openssl x509 -in server.crt -noout -text

注:

証明書を生成したらSAN では、これを Go コードで使用して、「x509: 証明書はレガシー共通名フィールドに依存しています」エラーが発生することなく TLS 接続を確立できます。新しい証明書が使用されるようにするには、Go コード内の証明書ファイルを更新し、接続プロセスを再起動する必要がある場合があります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。