Java RMI over SSLを使用してこれを実行しようとしましたが、後でSSL証明書がホストレベルの認証を提供し、プロセスレベルの認証を提供しないことを発見しました。
また、キーストアのパスワードを構成に保存していました。そのため、証明書は別の攻撃者プロセスによって使用され、認証を受けることができます。
Java RMI over SSLを使用してこれを実行しようとしましたが、後でSSL証明書がホストレベルの認証を提供し、プロセスレベルの認証を提供しないことを発見しました。
また、キーストアのパスワードを構成に保存していました。そのため、証明書は別の攻撃者プロセスによって使用され、認証を受けることができます。
SSL / TLSに使用されるX.509証明書は、ホスト名以外のものを識別するために使用される可能性があります(これは、通常、クライアント証明書に対してすでに実行されています)。
サーバーへのSSL/TLS接続を確立する際には、次の2種類の検証が必要です。
デフォルトでは、JavaSSLSocket
は、何かを追加しない限り、2番目のステップを実行しません。(Java 7では、一部の新しいSSLパラメーターを使用すると、トラストマネージャー内でこれを実行できますが、特定のプロトコルに対してのみ実行できます。)
必要なのは、ホスト名以外のものを使用して他のアプリケーションとプロセスを識別する方法を定義し、これらの命名規則に従って証明書を発行し、クライアントアプリケーションにこれをチェックさせる方法を見つけることです。
https://blogs.oracle.com/lmalventosa/entry/using_the_ssl_tls_based1SSLSocketFactory
で説明されているように、各メソッドでソケットを返す前に、RMIアプリケーションにそのファクトリを使用して、内に独自のID検証メカニズムを実装できる必要があります。