golang tcpハンドシェイクからclientCert.Subject.CommonNameを取得するにはどうすればよいですか?

王林
リリース: 2024-02-06 09:36:03
転載
430 人が閲覧しました

如何从 golang tcp 握手中获取 clientCert.Subject.CommonName?

質問の内容

さまざまな証明書を使用して TLS TCP エンドポイントに接続するクライアントが多数あります。 RequireAndVerifyClientCert:

を使用しようとしています リーリー

したがって、どのサーバー証明書とキーを使用するかを指示する前に、 ConnectionState().PeerCertificates[0] にアクセスし、最初に clientCert.Subject.CommonName を読み取ることができます。つまり、各 CommonName 証明書には、異なるサーバー側の証明書とキーが必要です。すべての接続に 1 つのサーバー証明書とキーが使用されるだけではありません。

リーリー

しかし、この変換は失敗します: (*tls.Conn)ConnectionState を呼び出すことができません。または、別の tcp.Server 呼び出しを行いますが、len(PeerCertificates)はゼロです。以前試したことがあります:

GetConfigForClient: func(hello *tls.ClientHelloInfo) (*tls.Config, エラー) {

tls.RequireAndVerifyClientCert またはそれ以外に渡しますが、*tls.ClientHelloInfo には必要な情報がありません。


正解


クライアント証明書に基づいてどのサーバー証明書を使用するかを決定する方法はありません。

TLS ハンドシェイクでは、サーバーは最初にサーバー証明書を送信し、次にクライアント証明書を要求します。その後、クライアントはクライアント証明書をサーバーに送信します。

以上がgolang tcpハンドシェイクからclientCert.Subject.CommonNameを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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