-
1. Re: Apache com mod_cluster e SSL com JBoss7
mauriciomag Apr 24, 2013 8:25 PM (in response to adrianoschmidt)E ai Adriano...
Acho que com essa deve fechar o ambiente quase que por completo...
Chegamos em um momento de decisão rsrs Como voce deve saber utilizar SSL causa uma queda na performance pelo fato da encriptação dos dados.
Atualmente voce tem o seguinte cenário:
O dados estão trafegando sobre HTTP sem nenhuma criptografia podendo ser interceptado fácilmente.
Como eu disse voce terá que tomar uma decisão nesse momento. Vale a pena encriptar o tráfego entre o Balancer (Apache) e as Instâncias JBoss? Eu digo isso pois já vamos ter o primeir overhead entre o Cleinte e o Balancer:
Seria mais viável na minha opnião utilizar SSL somente entre o client e o Balancer(Apache) e depois protoger a rede na comunicação entre o Domain Controller e os Host Controllers. Novamente quero repetir que vai ocorrer perda de performance já que o tráfego será encriptado.
Cenário 1:
Cliente<--- SSL---> Balancer <---AJP ---> Instâncias JBoss
Cenário 2:
Cliente<--- SSL---> Balancer <---SSL---> Instâncias JBoss
O que acha?
Abraço
-- Mauricio Magnani
-
2. Re: Apache com mod_cluster e SSL com JBoss7
adrianoschmidt Apr 24, 2013 8:30 PM (in response to mauriciomag)Não sei se eu entendi muito bem..
Vou te dizer como está hoje...
O cliente acessa o site http://www.siteexemplo.com e aí cai no apache.. caindo no apache ele é redirecionado para o ssl e depois para a aplicação em si...
Porém, hoje está usando só o apache e só um jboss... agora vou colocar o ambiente com apache com mod_cluster e vários jboss.. e gostaria de manter a mesma segurança existente...
Consegui explicar direito minha situação?
Att,
Adriano
-
3. Re: Apache com mod_cluster e SSL com JBoss7
mauriciomag Apr 24, 2013 8:36 PM (in response to adrianoschmidt)Sim é isso que quis dizer...
Atualmente você tem isso:
Cliente<--- HTTPS---> Balancer <---AJP ou HTTP---> Instância JBoss ( Atual )
Eu estou propondo isso:
Cliente<--- HTTPS---> Balancer <--- AJP ---> Instância JBoss ( O que eu recomendo )
Mas pode ser feito isso se for necessário encriptar o tráfego entre o Apache e o JBoss:
Cliente<--- HTTPS---> Balancer <--- SSL---> Instância JBoss ( O mais seguro, mas com mais perda de performance -- Não recomendo na sua situação)
Sacou?! rsrs
Abraços
-
4. Re: Apache com mod_cluster e SSL com JBoss7
adrianoschmidt Apr 24, 2013 8:35 PM (in response to adrianoschmidt)Hoje o http.conf tem isso:
<VirtualHost *:80>
ServerName siteexemplo.com.br
RedirectPermanent / https://siteexemplo.com.br
UseCanonicalName Off
</VirtualHost>
e no ssl.conf
<VirtualHost *:443>
ServerName siteexemplo.com.br
DocumentRoot /var/www/html/siteexemplo
[.]
</VirtualHost>
ou seja.. o http redireciona para o ssl que redireciona para a aplicação... caso o usuário digite diretamente no browser https://siteexemplo.com.br ele já vai pro sslconf e depois pra aplicação...
Att,
Adriano
-
5. Re: Apache com mod_cluster e SSL com JBoss7
adrianoschmidt Apr 24, 2013 8:38 PM (in response to mauriciomag)Entendi... Se o que eu tenho é o você disse, quero fazer isso que você propôs.. pois vai manter a mesma segurança que tem atualmente..
Atualmente você tem isso:
Cliente<--- HTTP---> Balancer <---AJP ou HTTP---> Instância JBoss ( Atual )
Eu estou propondo isso:
Cliente<--- HTTPS---> Balancer <--- AJP ---> Instância JBoss ( O que eu recomendo )
Tenho uma dúvida sobre esse HTTPS ali... eu não posso forçar o cliente a digitar https no browser.. isso não vai acontecer neh?
Att,
Adriano
-
6. Re: Apache com mod_cluster e SSL com JBoss7
mauriciomag Apr 24, 2013 9:39 PM (in response to adrianoschmidt)A OK Eu até corrigi o meu desenho voce já tem o SSL então.... vai ficar a mesma coisa praticamente... vou te ensinar a gerar os certificados.. saca só:
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_sslVamos utilizar o openssl para geração dos certificados. Instale os pacotes necessários:
yum install openssl ca-certificatesPara melhor organização crie um diretório dentro de /etc/ssl com o nome de server-certs:
mkdir /etc/ssl/server-certsO primeiro passo é gerar uma chave privada. Navegue até o diretório /etc/ssl/server-certs e execute:
openssl genrsa -des3 -out my-server.key 2048A 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.publicTenha 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.csrO 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.cerA 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 ipapache: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://ipapache/mod_cluster-manager e observe que agora os dados já trafegam encriptados.
Pronto Brother
Espero que tenha ajudado.
Abraços
--Mauricio Magnani
-
7. Re: Apache com mod_cluster e SSL com JBoss7
mauriciomag Apr 24, 2013 8:46 PM (in response to adrianoschmidt)1 of 1 people found this helpfulTenho uma dúvida sobre esse HTTPS ali... eu não posso forçar o cliente a digitar https no browser.. isso não vai acontecer neh?
Do jeito que está ai vai sim....
Eu não testei isso mas tenta algo do tipo:
<VirtualHost *:80>
ServerName siteexemplo.com.br
RedirectPermanent / https://siteexemplo.com.br
UseCanonicalName Off
</VirtualHost>
<VirtualHost ipapache:443>
ServerName siteexemplo.com.br
DocumentRoot /var/www/html/siteexemplo
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>
Me diz ai se funcionou assim..
Abs
-
8. Re: Apache com mod_cluster e SSL com JBoss7
adrianoschmidt Apr 25, 2013 12:20 AM (in response to mauriciomag)Deu tudo certo Mauricio!!!
Mais uma vez obrigado!! Acho q já te disse uns 39472397293 obrigados nessa semana hahah
Abração!!!
Adriano Schmidt
-
9. Re: Apache com mod_cluster e SSL com JBoss7
mauriciomag Apr 25, 2013 7:13 AM (in response to adrianoschmidt)E ai Adriano,
Fico feliz que tenha dado tudo certo
Cara eu gosto muito de compartilhar o conhecimento pois cada vez que ajudo eu também aprendo... pode contar sempre comigo por aqui!
Se eu tiver o conhecimento sempre vou passar pode ter certeza.
Grande Abraço
--Mauricio Magnani
-
10. Re: Apache com mod_cluster e SSL com JBoss7
adrianoschmidt May 2, 2013 1:53 PM (in response to mauriciomag)Fala Maurício,
Eu tinha feito testes bem básicos com o SSL e aí funcionou.
Eu fiz a porta 80 apontar para a 443, e a 443 apontava para o mod_cluster-manager.. show de bola!!
<VirtualHost *:80>
ServerName test002
RedirectPermanent / https://192.168.16.136
UseCanonicalName Off
</VirtualHost>
<VirtualHost *:443>
ServerName test002
RedirectPermanent / https://192.168.16.136/mod_cluster-manager
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>
maaaas, quando alterei de:
RedirectPermanent / https://192.168.16.136/mod_cluster-manager
para:
RedirectPermanent / https://192.168.16.136/systemprops
não funcionou..
E ao acessar a URL https://192.168.16.136/mod_cluster-manager eu vi que não apareciam o slave01 e o slave02 lá...
Voltei o mod_cluster.conf para:
<VirtualHost 192.168.16.136:80>
<Directory />
Order deny,allow
Allow from all
</Directory>
ServerName teste001
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>
reiniciei o apache e os jboss e os slaves apareceram no mod_cluster-manager...
voltei o mod_cluster.conf para usar SSL e os slaves não apareceram..
O que estou fazendo de errado?
Outro detalhe.. quando eu inicio com SSL acontece o seguinte:
[root@localhost ~]# /etc/init.d/httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[Thu May 02 09:25:59 2013] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
[ OK ]
e no error_log acontece o seguinte:
[Thu May 02 10:50:50 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Thu May 02 10:50:50 2013] [notice] Digest: generating secret for digest authentication ...
[Thu May 02 10:50:50 2013] [notice] Digest: done
[Thu May 02 10:50:50 2013] [notice] Advertise initialized for process 8185
[Thu May 02 10:50:50 2013] [notice] Apache/2.2.15 (Unix) DAV/2 mod_cluster/1.2.3.Final mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations
Tem ideia do que estou fazendo errado?
Att,
Adriano Schmidt
-
11. Re: Apache com mod_cluster e SSL com JBoss7
adrianoschmidt May 2, 2013 2:29 PM (in response to mauriciomag)Deixei o mod_cluster.conf mais simples:
<VirtualHost 192.168.16.136: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>
ServerName teste001
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>
E quando inicio o slave01 acontece o seguinte:
[Server:server-one] 15:20:29,999 ERROR [org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) Error [null: null: {4}] sending command INFO to proxy 192.168.16.136/192.168.16.136:443, configuration will be reset
[Server:server-one] 15:20:40,017 ERROR [org.jboss.modcluster.mcmp.impl.DefaultMCMPHandler] (ContainerBackgroundProcessor[StandardEngine[jboss.web]]) Error [null: null: {4}] sending command INFO to proxy 192.168.16.136/192.168.16.136:443, configuration will be reset
-
12. Re: Apache com mod_cluster e SSL com JBoss7
adrianoschmidt May 2, 2013 4:23 PM (in response to adrianoschmidt)consegui resolver \o)
<VirtualHost 192.168.16.136:80>
<Directory />
Order deny,allow
Allow from all
</Directory>
ServerName teste001
KeepAliveTimeout 60
ManagerBalancerName mycluster
MaxKeepAliveRequests 0
ServerAdvertise On
EnableMCPMReceive On
RedirectPermanent / https://192.168.16.136/
</VirtualHost>
<VirtualHost 192.168.16.136: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>
ServerName teste001
RedirectPermanent / https://192.168.16.136/cluster
</VirtualHost>
<Location /mod_cluster-manager>
SetHandler mod_cluster-manager
Order deny,allow
Allow from all
</Location>
só não sei se essa eh a melhor forma :/
Att,
Adriano
-
13. Re: Apache com mod_cluster e SSL com JBoss7
rylphs Jun 4, 2013 12:25 PM (in response to adrianoschmidt)Mauricio,
Aproveitando a thread (e sua boa vontade), estou tentando implementar o SSL na conexão entre o balanceador e as instâncias do JBoss. Estou fazendo isso somente pra aprender e nesse caso não me preocupo com o overhead. Olhando na documentação do mod_cluster (http://docs.jboss.org/mod_cluster/1.2.0/html/UsingSSL.html), lá fala que existem duas conexões entre o balanceador e as instâncias e que ambas podem ser criptografadas. Você sabe quais são as duas? Eu precisaria implementar o SSL nas duas?
Obrigado.
-
14. Re: Apache com mod_cluster e SSL com JBoss7
mauriciomag Jun 4, 2013 8:20 PM (in response to rylphs)Oi Raphael,
Boa vontade até sobra rsrs o tempo que é curto
Então quando ele diz:
There are 2 connections between the cluster and the front-end. Both could be encrypted. That chapter describes how to encrypt both connections.
Acredito que ele esteja se referindo ao seguite cenário: Client | Front-end <-- SSL --> Apache <-- SSL --> JBoss Instances. Ou seja nesse capítulo ele explica como critografar essas conexões entre o Client para Balancer (Apache) e depois Entre o Balancer para as Instâncias JBoss.
Como voce mesmo já sabe o overhead causado pela critpgrafia é custoso. Em ambientes "profissionais" normalmente o JBoss é colocado em uma DMZ então raramente é necessário ativar o SSL entre o Apache e as instâncias JBoss.
Mas tudo vai depender de como voce montou a sua "infra".
Imagine a seguinte situação: Um Domain Controller no servidor 171.x.x.10 , Um Host Controller no servidor 171.x.x.20 e outro Host Controller no 171.x.x.30. Cada um desses elementos em um servidor específico em ambiente de Cloud por exemplo a Amazon EC2. Se o ambiente não estiver utilizando uma VPC o tráfego poderia ser interceptado e alterado em um ataque do tipo man-in-the-middle e nós seríamos enganados sem saber rsrs
Então uma pergunta chave aqui você está utilizando em seus testes Domain ou Standalone? pois posso te passar o melhor para cada Modelo.
Abs