15.3. EJB3 RMI + SSL 設定


手順15.4 EJB3 の RMI + SSL 設定の概要

この手順ではサーバーの EJB3 Bean とネットワークの別のマシンで実行しているファットクライアントとの間の Remote Method Invocation トラフィックの SSL 暗号化を設定します。
  1. 暗号化キーと証明書の生成
  2. RMI のセキュアなリモートコネクタの設定
  3. セキュアな RMI コネクタを使用するための EJB3 Bean のアノテート
暗号化キーと証明書の生成については 「暗号化キーと証明書の生成」 で取り上げています。
RMI のセキュアなリモートコネクタの作成

JBoss Application Server プロファイル deploy ディレクトリのファイル ejb3-connectors-jboss-beans.xml には、EJB3 リモートメソッド呼び出しの JBoss Remoting コネクタの定義が含まれています。

例15.2 セキュアな EJB3 コネクタのサンプル

コードサンプルで説明されている Bean は ejb3-connectors-jboss-beans.xml ファイルに追加されます。両方の Bean とも 手順15.1「新しいキーペアの生成、および JBoss server conf ディレクトリのキーストア「localhost.keystore」へのその追加」 で作成されたキーペアを使用して EJB3 に対しセキュアなコネクタを設定する必要があります。
サンプル設定の keyPassword プロパティは、キーペアが作成されたときに指定されるキーペアのパスワードです。
サンプル設定は 3843 ポートで SSL 接続をリッスンするコネクタを作成します。このポートはクライアントからのアクセスに対しサーバーファイアウォールで開く必要があります。
<bean name="EJB3SSLRemotingConnector" class="org.jboss.remoting.transport.Connector">
    <property name="invokerLocator">sslsocket://${jboss.bind.address}:3843</property>
    <property name="serverConfiguration">
      <inject bean="ServerConfiguration" />
    </property>
    <property name="serverSocketFactory">
      <inject bean="sslServerSocketFactory" />
    </property>
  </bean>

  <bean name="sslServerSocketFactory" class="org.jboss.security.ssl.DomainServerSocketFactory">
     <constructor>
        <parameter><inject bean="EJB3SSLDomain"/></parameter>
     </constructor>
  </bean>
  <bean name="EJB3SSLDomain" class="org.jboss.security.plugins.JaasSecurityDomain">
     <constructor>
        <parameter>EJB3SSLDomain</parameter>
     </constructor>
     <property name="keyStoreURL">resource:localhost.keystore</property>
     <property name="keyStorePass">KEYSTORE_PASSWORD</property>
     <property name="keyAlias">ejb-ssl</property>
     <property name="keyPassword">EJB-SSL_KEYPAIR_PASSWORD</property>
  </bean>
Copy to Clipboard Toggle word wrap
SSL トランスポートに対する EJB3 Bean の設定

すべての EJB3 Bean はデフォルトではセキュアでない RMI コネクタを使用します。SSL による Bean のリモート呼び出しを有効にするには、@org.jboss.annotation.ejb.RemoteBinding で Bean をアノテートします。

例15.3 セキュアなリモート呼び出しを有効にするための EJB3 Bean アノテーション

アノテーションは EJB3 Bean を JNDI 名 StatefulSSL にバインドします。リモートインターフェースを実装しているプロキシは、Bean が JNDI から要求されたときにクライアントに返され、SSL でサーバーと通信します。
@RemoteBinding(clientBindUrl="sslsocket://0.0.0.0:3843", jndiBinding="StatefulSSL")
  @Remote(BusinessInterface.class)
  public class StatefulBean implements BusinessInterface
  {
     ...
  }
Copy to Clipboard Toggle word wrap

注記

例15.3「セキュアなリモート呼び出しを有効にするための EJB3 Bean アノテーション」 では、IP アドレスは 0.0.0.0 と指定されており「すべてのインターフェース」という意味です。これを ${jboss.bind.address} システムプロパティの値に変更します。
EJB3 Bean のセキュアおよびセキュアでない呼び出しを有効にする

同じ EJB3 Bean のセキュアおよびセキュアでないリモートメソッド呼び出し両方を有効にできます。 例15.4「セキュアおよびセキュアでない呼び出しの EJB3 Bean アノテーション」 ではこれを行うためのアノテーションを示しています。

例15.4 セキュアおよびセキュアでない呼び出しの EJB3 Bean アノテーション

 @RemoteBindings({
     @RemoteBinding(clientBindUrl="sslsocket://0.0.0.0:3843", jndiBinding="StatefulSSL")
     @RemoteBinding(jndiBinding="StatefulNormal")
  })
  @Remote(BusinessInterface.class)
  public class StatefulBean implements BusinessInterface
  {
     ...
  }
Copy to Clipboard Toggle word wrap

注記

例15.4「セキュアおよびセキュアでない呼び出しの EJB3 Bean アノテーション」 では、IP アドレスは 0.0.0.0 と指定されており「すべてのインターフェース」という意味です。これを ${jboss.bind.address} システムプロパティの値に変更します。
クライアントが JNDI から StatefulNormal を要求する場合、リモートインターフェースを実装している返されたプロキシは暗号化されていないソケットプロトコルによりサーバーと通信します。StatefulSSL が要求される場合、リモートインターフェースを実装している返されたプロキシは SSL によりサーバーと通信します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat