0

Java RMI over SSLを使用してこれを実行しようとしましたが、後でSSL証明書がホストレベルの認証を提供し、プロセスレベルの認証を提供しないことを発見しました。

また、キーストアのパスワードを構成に保存していました。そのため、証明書は別の攻撃者プロセスによって使用され、認証を受けることができます。

4

1 に答える 1

1

SSL / TLSに使用されるX.509証明書は、ホスト名以外のものを識別するために使用される可能性があります(これは、通常、クライアント証明書に対してすでに実行されています)。

サーバーへのSSL/TLS接続を確立する際には、次の2種類の検証が必要です。

  • 証明書の検証自体:これは、証明書が信頼され、使用時に必要な目的に対して有効であることを検証します。通常は、RFC 3280 /RFC5280で説明されているPKIを使用します。
  • ホスト名の検証:証明書が本物であると信頼すると、クライアントはそれが探していたサーバーのものであることを確認します。これはプロトコル固有です(たとえば、RFC 2818、HTTPSのセクション3.1)が、RFC 6125のほとんどのプロトコルで一般化されています(これは、パスポートの写真が単に受け入れるのではなく、目の前の名前と一致することを確認することに似ています有効なパスポート。)

デフォルトでは、JavaSSLSocketは、何かを追加しない限り、2番目のステップを実行しません。(Java 7では、一部の新しいSSLパラメーターを使用すると、トラストマネージャー内でこれを実行できますが、特定のプロトコルに対してのみ実行できます。)

必要なのは、ホスト名以外のものを使用して他のアプリケーションとプロセスを識別する方法を定義し、これらの命名規則に従って証明書を発行し、クライアントアプリケーションにこれをチェックさせる方法を見つけることです。

https://blogs.oracle.com/lmalventosa/entry/using_the_ssl_tls_based1SSLSocketFactoryで説明されているように、各メソッドでソケットを返す前に、RMIアプリケーションにそのファクトリを使用して、内に独自のID検証メカニズムを実装できる必要があります。

于 2012-09-24T10:33:23.117 に答える