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

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

DDD
DDDオリジナル
2024-10-28 08:13:02670ブラウズ

 Why Does My Go TLS Dial Fail with

Go TLS ダイヤル: 従来の共通名フィールドに依存する X509 証明書との接続に失敗しました

この問題は、サーバーに接続しようとすると発生しますGolang では TLS を使用しており、サーバーの証明書は識別のために従来の Common Name (CN) フィールドに依存しています。標準の Golang ライブラリは、代わりにサブジェクト代替名 (SAN) をチェックします。

原因:

デフォルトでは、Golang ランタイムは、最善の方法でサーバー証明書に SAN が存在することを検証します。セキュリティ慣行。証明書に SAN がなく、識別のために CN フィールドに依存している場合、Go ランタイムは接続を拒否し、次のエラー メッセージを表示します:

failed to connect: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0

解決策:

この問題を解決するには、次の 2 つのオプションがあります:

1. SAN を使用するようにサーバー証明書を変更する:

クライアントが接続に使用するホスト名または IP アドレスに対応する SAN を含めるようにサーバー証明書を再生成します。これには、認証局 (CA) と OpenSSL コマンドを使用して、適切な SAN で証明書を作成することが含まれます。

2. CN マッチングを一時的に無効にする:

GODEBUG 環境変数を次のように設定することで、Go ランタイムの SAN チェックを一時的に無効にすることができます:

GODEBUG=x509ignoreCN=0 go run your_program.go

注: CN マッチングを無効にすることは、CN を含む証明書は受け入れられるが SAN は受け入れられないため、TLS 接続のセキュリティが低下するため、推奨される解決策ではありません。

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

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