5

空のDNリストを持つ証明書要求メッセージを受信したときのSSL/TLSクライアントの適切な動作は何ですか?

自然に見える2つの可能性があります:1)空の証明書メッセージを送り返す2)すべての可能な証明書の中から証明書を選択する(またはユーザーに選択を促す)

正しい動作は1つだけですか、それともどちらのオプションでも問題ありませんか?私の目標は、コード(.Net、WCF)でサーバーに証明書を提供することです。証明書を送信しないという一見デフォルトの動作をオーバーライドするために、クライアント側で変更を加える必要があるかどうかを判断しようとしています。 DNリストを実際に送信するには、サーバー側で変更を加える必要があります。

ブラウザはオプション2を選択するようですが、WCFと.Netを使用するコードはオプション1を使用しています。ストアから証明書を選択できますが、TLSハンドシェイクで送信されていません。

TLS 1.0および1.2仕様(RFC 2246および5246)は、この状況に関するガイダンスを提供していないようです。

4

1 に答える 1

5

これは実際には、TLS1.0仕様とTLS1.1 / 1.2異なる領域です。

特に、TLS 1.1のセクション7.4.4(証明書要求)に以下が追加されました。

certificate_authoritiesリストが空の場合、反対の外部の取り決めがない限り、クライアントは適切なClientCertificateTypeの証明書を送信できます(MAY)。

私の経験では(少なくともブラウザとJava / JSSEで)、空のリストについて何も言われていなくても、これはSSLv3とTLS1.0でも実際に機能しました。

何をするかを選択するのはまだ実装の裁量です(" [...]は[...] "を送信する可能性があります)。

いずれの場合も、空でないCAリストを使用しても、複数のクライアント証明書がCA条件に一致する場合は、自動的に、またはUIを介して選択を行う必要があります。これも実装に依存し、フレームワークに応じてカスタマイズできます。

于 2013-03-05T12:32:01.213 に答える