Configurando Ambiente de Produção no JBoss AS 7.1.3 (JBoss EAP 6.0.1) – Parte 4

Postado em

E ai galera blz?

Continuando os posts:

Anteriormente nós configuramos um balanceador de carga ( Apache + Mod Cluster ) , um Domain Controller e dois Host Controllers com uma instância cada. Ativamos também os recursos de cluster.

Hoje vamos aprender como encriptar o tráfego entre o Cliente<— —> Balancer <— —> Instâncias JBoss utilizando SSL.

Atualmente nós temos o seguinte cenário:

env-1

O dados estão trafegando sobre HTTP sem nenhuma criptografia podendo ser interceptado facilmente.

Então a primeira coisa a ser feita é utilizar SSL entre Cliente <—- —-> Balancer:

env-2

Antes de tudo quero deixar claro que vai ocorrer perda de performance já que o tráfego será encriptado.

Vamos gerar os certificado para ser utilizado no Apache Web Server que é o nosso Balancer.  Pelo fato de  utilizar o SSL/HTTPS devemos instalar o Mod SSL. Para isso, execute :

yum install mod_ssl

Vamos utilizar o openssl para geração dos certificados. Instale os pacotes necessários:

yum install openssl ca-certificates

Para melhor organização crie  um diretório dentro de /etc/ssl com o nome de server-certs:

mkdir /etc/ssl/server-certs

O primeiro passo é gerar uma chave privada.  Navegue até o diretório /etc/ssl/server-certs  e execute:

openssl genrsa -des3 -out my-server.key 2048

A chave gerada está encriptada e protegida por uma senha ou seja se nós utilizarmos essa chave no Apache, toda vez que reiniciarmos o serviço essa senha será solicitada causando alguns transtornos. Para solucionarmos essa questão podemos gerar uma chave “desprotegida” baseada na chave privada  my-server.key que não irá solicitar qualquer tipo de senha.

Execute comando abaixo para que a chave seja gerada:

openssl rsa -in my-server.key -out my-server.key.public

Tenha muito cuidado com a chave privada my-server.key, guarde-a em um local seguro e que seja acessível somente pelo root.

O próximo passo é gerar o Certificate Signing Request. Execute o comando abaixo:

openssl req -new -key my-server.key -out my-server.csr

O arquivo my-server.crt deveria ser enviado para a autoridade certificadora, que devolveria o certificado assinado. Neste caso, vamos utilizá-lo para criar um certificado auto assinado válido por 365 dias. Para isso execute:

openssl x509 -req -days 365 -in my-server.csr -signkey my-server.key -out my-server.cer

A criação dos certificados está concluída. Foram gerado os seguintes arquivos:

my-server.key – Chave privada.
my-server.key.public –  Chave sem password.
my-server.csr – Pedido de assinatura do certificado.
my-server.cer – Certificado auto assinado.

Edite o arquivo  vim /etc/httpd/conf.d/mod_cluster.conf  e deixe-o como  abaixo:

<VirtualHost 192.168.0.141:443>

SSLEngine on
SSLCipherSuite AES128-SHA:ALL:!ADH:!LOW:!MD5:!SSLV2:!NULL
SSLVerifyDepth 10
SSLCertificateFile /etc/ssl/server-certs/my-server.cer
SSLCertificateKeyFile /etc/ssl/server-certs/my-server.key.public

<Directory />
Order deny,allow
Allow from all
</Directory>

KeepAliveTimeout 60
ManagerBalancerName mycluster
MaxKeepAliveRequests 0
ServerAdvertise On

EnableMCPMReceive On

</VirtualHost>

<Location /mod_cluster-manager>
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
</Location>

Reinicie o Apache e acesse  por exemplo https://192.168.0.140/cluster e observe que agora os dados já trafegam encriptados. Para verificar se os dados realmente estão encriptados utilize o Wireshark.

Essa foi a parte final. Você pode ter sentido falta de muitos  outros tópicos como configuração de datasource, tuning e algumas outras coisas mas a ideia dessa série foi configurar a infra para um ambiente JBoss moderno.

Nas próximas semanas estarei publicando novos posts relacionados a tuning.
Obrigado e Abraços 🙂

Deixe um comentário