JBoss Certified Application Administrator (JBCAA) – Parte 2

Postado em Atualizado em

Continuando os meus estudos para JBCAA, hoje vamos abordar mais um tópico.

3 – Configuração dos conectores do JBoss Web (incluindo HTTPS)  ( Configure JBoss Web Connectors (including HTTPS) )

No Study Guide, podemos verificar as seguintes informações para esse tópico:

● JB336 JBoss for Administrators course
● JBoss EAP Administration and Configuration Guide3
● JBoss Web Documentation4
http://community.jboss.org/wiki/SecureTheJmxConsole
http://community.jboss.org/wiki/SSLSetup
● Creating an SSL Keystore Using the Java Keytool5
http://java.sun.com/javase/6/docs/technotes/tools/index.html#security (look for keytool)
● Example configurations included with JBoss EAP

Vamos iniciar abordando a segurança no Jmx-Console, que já é bem conhecida pelos administradores mais experientes.

O primeiro passo é visualizar o web.xml, da app jmx-console.war, e verificar se o atributo  <security-constraint> não está comentado, e com as devidas configurações, abaixo temos uma exemplo em que tudo está correto:

Localização do arquivo:  JBOSS_HOME/server/instance01/deploy/jmx-console.war/WEB-INF/web.xml

<security-constraint>
 <web-resource-collection>
   <web-resource-name>HtmlAdaptor</web-resource-name>
   <description>An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application
   </description>
   <url-pattern>/*</url-pattern>
 </web-resource-collection>
 <auth-constraint>
    <role-name>JBossAdmin</role-name>
 </auth-constraint>
 <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
 </user-data-constraint>
</security-constraint>

<login-config>
  <auth-method>BASIC</auth-method>
  <realm-name>JBoss JMX Console</realm-name>
</login-config>

<security-role>
  <role-name>JBossAdmin</role-name>
</security-role>

Agora devemos verificar o arquivo jboss-web.xml, o <security-domain>, deve estar sem o  comentário, como abaixo:

Localização do arquivo: JBOSS_HOME/server/instance01/deploy/jmx-console.war/WEB-INF/jboss-web.xml

<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 5.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">

<jboss-web>
<!-- Uncomment the security-domain to enable security. You will need to edit the htmladaptor login configuration to setup the login modules used to authentication users. -->
   <security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>

Obs: Segundo a security note – CVE-2010-0738, devemos remover do JBOSS_HOME/server/instance01/deploy/jmx-console.war/WEB-INF/web.xml  os métodos HTTP:

  <http-method>GET</http-method>
  <http-method>POST</http-method>

Deve-se ainda adicionar ao JBOSS_HOME/server/instance01/deploy/jmx-console.war/WEB-INF/web.xml , o atributo CONFIDENTIAL que garante o uso de HTTPS, que vamos ativar posteriormente.

<user-data-constraint>
   <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>

Para finalizar, verificamos se os arquivos aonde estão armazenados os roles e users estão corretos.

Localização do Arquivo: JBOSS_HOME/server/instance01/conf/props/jmx-console-roles.properties

  # A sample roles.properties file for use with the UsersRolesLoginModule
  admin=JBossAdmin,HttpInvoker

Localização do Arquivo: JBOSS_HOME/server/instance01/conf/props/jmx-console-users.properties

  # A sample users.properties file for use with the UsersRolesLoginModule
  admin=admin

Application Policy do Jmx-Console:

 <application-policy name="jmx-console">
   <authentication>
     <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag="required">
       <module-option name="usersProperties">props/jmx-console-users.properties</module-option>
       <module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
     </login-module>
   </authentication>
</application-policy>

Como já disse anteriormente, eu nunca fiz a prova e realmente não sei o que vai ser cobrado,  então  a aprenderem o máximo que puderem sobre os assuntos mencionados no study guide. Como recomendação para essa parte eu aconselho que os precedimentos acima sejam repetidos para o web-console e jbossws, qualquer dificuldade nessas tarefas deixem comentários.

Vamos gerar o nosso certificado ( keystore ), e habilitar o connetor HTTPS. Para obter o certificado execute o comando abaixo:

   keytool -genkey -alias example -keystore example.keystore -keypass 123456 -keyalg RSA

Por convenção geralmente o .keystore, fica armazenado no diretório JBOSS_HOME/server/instance01/conf/ .

Para visualizar informações do certificado execute:

  keytool -v -list -keystore example.keystore
Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: example
Creation date: Jan 29, 2012
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Mauricio Magnani, OU=Home, O=Home, L=SP, ST=SP, C=BR
Issuer: CN=Mauricio Magnani, OU=Home, O=Home, L=SP, ST=SP, C=BR
Serial number: 4f25c7bf
Valid from: Sun Jan 29 20:27:11 BRST 2012 until: Sat Apr 28 19:27:11 BRT 2012
Certificate fingerprints:
MD5:  70:2F:D1:5E:23:E2:1A:3C:DF:E4:76:1D:82:28:AE:0A
SHA1: 03:EF:60:BF:2D:33:D1:29:6A:67:44:07:28:4B:09:E5:6F:56:70:D2
Signature algorithm name: SHA1withRSA
Version: 3

*******************************************
*******************************************

Finalmente vamos ativer o connector HTTPS, isso é bem simples, no arquivo JBOSS_HOME/server/instance01/deploy/jbossweb.sar/server.xml, descomente e altere o bloco abaixo:

<!-- SSL/TLS Connector configuration using the admin devl guide keystore-->
<Connector protocol="HTTP/1.1" SSLEnabled="true" port="8443" address="${jboss.bind.address}"
scheme="https" secure="true" clientAuth="false" keystoreFile="${jboss.server.home.dir}/conf/example.keystore"
keystorePass="123456" sslProtocol = "TLS" />

Agora acesse a url https://localhost:8443/ , e verifique se tudo está funcionando.

Não percam a próxima parte🙂

abraços!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s