ここに別のレガシー サポートの問題があります。
各コンポーネントが自己署名証明書を持ち、サーバー/クライアントのトラストストアに追加されるサーバー複数クライアントネットワークがあります。ここでは認証局を使用していません。
ここでの問題は、セキュリティを強化するためにすべての証明書をアップグレードする必要があることです。新しいクライアントには新しい証明書が付属し、サーバーにも新しい証明書が含まれます。
私たちの問題は、古いクライアントをどのように扱うかです。古いクライアントのキーストアをアップグレードすることは、最後の手段です。
うまくいかないこと:
サーバーのトラストストアに新しい証明書と古い証明書の両方を追加する: クライアントもサーバーを認証しており、サーバー証明書はクライアントのトラストストアに存在しません。
新しいクライアントに新しいポートを使用する: 新しいクライアントに新しいポートを使用し、古いクライアントには古いポートを継続することを検討しましたが、問題は、この問題に直面している複数のアプリケーションがあるため、複数の新しいポートを検索する必要があることです。他の製品では使用されていません。
FWIW: サーバーは Java で、クライアントは C++ である
EJPの回答後の編集
私はおそらくここで非常にばかげた質問をしていますが、確認したかっただけです。バインドされたソケットの SSL コンテキストを編集する方法はまったくありません。正しい?
また、ハンドシェイク時に使用するサーバー証明書を選択できますか? chooseClientAlias()
メソッドと方法は知っchooseServerAlias()
ていますが、ここでは、クライアントの Hello メッセージが送信されるまで、どの証明書を使用すればよいかわかりません。