現在の netty (3.5.2) ベースのサーバーでは、TLS 再ネゴシエーションを使用してクライアントに証明書を要求できます。リソースのタイプに応じて、クライアントに別の証明書セットを要求したいと思います。これは、フィールドが正しく設定された TLS CertificateRequest シグナルをcertificate_authorities
送信するサーバーによって実行できます。私のサーバーで区別したい 2 つのリソース セットは次のとおりです。
- デフォルト: 既知の CA によって署名されたクライアントの証明書を要求するリソース
X509TrustManager
- ユーザーの任意の証明書を表示したいリソース - これは、クライアント証明書のデバッグを支援するように設計されたサービスに役立ちます (お持ちの証明書を送ってください。この件に関して私たちが知っているすべての標準に準拠しているかどうかをお知らせします)。
Java では、信頼できる CA のリストはX509TrustManager.getAcceptedIssuers()メソッドによって設定されます。しかし、SSLContext が設定されると、これを変更する方法はないようです。SSLParameters クラスからいくつかのオプションを利用できると思っていましたが、少なくとも nullcertificate_authorities
リストを設定できるメソッドはありません。
これを許可するための不十分な方法の 1 つは、null 要求された認証局用に新しいポートを開き、リソースをこれらの異なるポートに分離して区別することです。新しいポートを開くのを避けるために誰かが知っているハックはおそらくありますか?