15.3. Configuração EJB3 RMI + SSL
Procedimento 15.4. Configure o RMI + SSL para uma Visão Geral do EJB3
- Geração de chaves de criptografia e certificado
- Configure um conector remoto de segurança para o RMI
- Anote os EJB3 beans para uso do conector RMI de segurança
O ejb3-connectors-jboss-beans.xml do arquivo num diretório deploy do perfil do Servidor do Aplicativo JBoss contém as definições do conector do JBoss Remoting para a invocação de método remoto EJB3.
Exemplo 15.2. Amostra do Conector EJB3 de Segurança
ejb3-connectors-jboss-beans.xml. Ambos os beans são solicitados para configurar um conector de segurança para o EJB3 usando o par chave criado no Procedimento 15.1, “Gere o novo par chave e adicione-o ao "localhost.keystore" do armazenamento chave no diretório config do servidor do JBoss.”.
keyPassword na configuração de amostra é a senha especificada do par chave quando o par chave foi criado.
<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>
Todos os EJB3 beans usam o conector RMI por padrão. Anote o bean com o @org.jboss.annotation.ejb.RemoteBinding para ativar a invocação remota de um bean através do SSL.
Exemplo 15.3. A anotação EJB3 bean para ativar a invocação remota de segurança
StatefulSSL do nome JNDI. A implementação proxy da interface remota, retornada a um cliente quando o bean é solicitado a partir do JNDI, comunica-se com o servidor através do SSL.
@RemoteBinding(clientBindUrl="sslsocket://0.0.0.0:3843", jndiBinding="StatefulSSL")
@Remote(BusinessInterface.class)
public class StatefulBean implements BusinessInterface
{
...
}Nota
Você pode ativar ambas invocações do método remoto de segurança e insegurança. O Exemplo 15.4, “Anotação do EJB3 para invocação de segurança e sem segurança” demonstra as anotações para isto.
Exemplo 15.4. Anotação do EJB3 para invocação de segurança e sem segurança
@RemoteBindings({
@RemoteBinding(clientBindUrl="sslsocket://0.0.0.0:3843", jndiBinding="StatefulSSL")
@RemoteBinding(jndiBinding="StatefulNormal")
})
@Remote(BusinessInterface.class)
public class StatefulBean implements BusinessInterface
{
...
}
Nota
0.0.0.0, significando "todas as interfaces" no Exemplo 15.4, “Anotação do EJB3 para invocação de segurança e sem segurança”. Altere isto para o valor da propriedade de sistema ${jboss.bind.address}.
StatefulNormal a partir do JNDI, o roxy retornado implementando a interface remota comunica-se com o servidor através do protocolo do soquete descriptografado. Caso o StatefulSSL for solicitado, o proxy retornado implementando a interface remota comunica-se com o servidor através do SSL.