Configurando um Proxy Reverso / Balanceador de Carga com Apache e HTTPS no JBoss AS 7.1.2 – Parte 2
Olá amigos,
Continuando o post anterior, hoje vamos aprender a instalar o Apache Web Server no Linux CentOS 6.3, Instalar o Mod_SSl e gerar os certificados auto assinados.
Normalmente para garantir a autenticidade de servidores são utilizados certificados assinados por autoridade certificadoras (Certificate Authority), por exemplo pagseguro . Nesse caso a CA é a VeriSign.
No entanto para realização de testes podemos gerar certificados auto assinados. Então vamos lá.
Vamos utilizar o openssl para geração dos certificados. Para isso 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 Generating RSA private key, 2048 bit long modulus .......+++ ........................................+++ e is 65537 (0x10001) Enter pass phrase for my-server.key: Verifying - Enter pass phrase for my-server.key:
A chave gerada está encriptada e protegida por uma senha ou seja se nós utilizarmos essa chave no Apache por exemplo, 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 Generating RSA private key, 2048 bit long modulus .......+++ ........................................+++ e is 65537 (0x10001) Enter pass phrase for my-server.key: Verifying - Enter pass phrase for my-server.key:
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 Enter pass phrase for my-server.key: You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:BR State or Province Name (full name) []:SP Locality Name (eg, city) [Default City]:SaoPaulo Organization Name (eg, company) [Default Company Ltd]:Home Organizational Unit Name (eg, section) []:JBossDivers Common Name (eg, your name or your server's hostname) []:localhost Email Address []:mauriciomagnanijr@gmail.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:123456 An optional company name []:123456
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.crt Signature ok subject=/C=BR/ST=SP/L=SaoPaulo/O=Home/OU=JBossDivers/CN=localhost/emailAddress=mauriciomagnanijr@gmail.com Getting Private key Enter pass phrase for my-server.key:
Pronto 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.crt – Certificado auto assinado.
Agora o próximo passo é a instalação do Apache Web Server. Execute:
yum install httpd
Pronto! O Apache Web Server já está instalado. Instale o Mod SSL:
yum install mod_ssl
Agora o nosso servidor já está pronto para as primeiras configurações. Edite o arquivo /etc/httpd/conf/httpd.conf e no final do arquivo adicione a seguinte configuração:
<VirtualHost localhost:443> SSLEngine On SSLCertificateFile /etc/ssl/server-certs/my-server.crt SSLCertificateKeyFile /etc/ssl/server-certs/my-server.key.public SSLProtocol All -SSLv2 SSLCipherSuite HIGH:MEDIUM:!aNULL:+MD5 DocumentRoot "/var/www/html/ssl" ServerName localhost:443 </VirtualHost>
Reinicie o serviço:
service httpd restart
Acesse a url do servidor utilizando o protocolo https, como por exemplo https://192.168.0.197/ ou https://myserver.com.br/. No primeiro acesso você verá a seguinte tela ou algo similar:
Isso ocorre por que o certificado é auto assinado e não foi enviado para a autoridade certificadora. Simplesmente clique em “Entendo os riscos” e vá até a paginá inicial do Apache Web Server que nesse momento já estará utilizando https.
Missão Cumprida!!
Na próxima parte vamos instalar o JBoss AS 7.1.2 e configurar o Mod JK para que ele possa trabalhar em conjunto com o Apache + https.
Espero que tenha ajudado.
Abraços
13 de setembro de 2012 às 9:27
eu faço de um jeito diferente, não chego a utilizar o virtualHost, eu apenas faço include dos módulos proxy e no meu arquivo de configuração deixo assim:
SetHandler balancer-manager
ProxyRequests off
BalancerMember ajp://172.16.253.123:8009 route=jboss1
BalancerMember ajp://172.16.253.124:8009 route=jboss1
ProxyPass balancer://cluster/nome_da_aplicacao stickysession=JSESSIONID
ProxyPassReverse balancer://cluster/nome_da_aplicacao
e funciona tranquilo, a diferença é que aqui (ambiente de teste e homologação) não está configurado o SSL…
é muito simples e (muito) fácil, quando quero instalar um novo apache com load balance eu faço ctrl+c ctrl+v disso ai e altero os IPs e tá tudo certo! =D hehe
abraços!
Debian rules!!! 😉 hehe
13 de setembro de 2012 às 9:31
??????? o wordpress ocultou as tags?!!?!?!?!??! vou tentar postar de uma maneira diferente:
SetHandler balancer-manager
ProxyRequests off
BalancerMember ajp://172.16.253.123:8009 route=jboss1
BalancerMember ajp://172.16.253.124:8009 route=jboss1
ProxyPass balancer://cluster/evoucher stickysession=JSESSIONID
ProxyPassReverse balancer://cluster/evoucher
ProxyPass balancer://cluster/nome_da_aplicacao stickysession=JSESSIONID
ProxyPassReverse balancer://cluster/nome_da_aplicacao
estou pensando com meus botões, se o wordpress ocultou as tags, ele precisa, de alguma forma, ler e reconhecer essas tags …. será que….. isso não abre brecha para um injection?!?! =OOO hehehe
13 de setembro de 2012 às 9:32
putz, num deu certo, mas voce entendeu!!! rsrsrsrsrs
13 de setembro de 2012 às 11:01
E ai Victor cara bacana hein… assim também funciona perfeitamente… eu uso os VHosts por que tenho várias apps no meu Apache…
Vlw pela contribuição que olhar os comentário com certeza pode fazer do jeito que vc fez 🙂
Abraços
17 de outubro de 2013 às 16:40
Mauricio, acho que no seu exemplo, faltou colocar a tag [IfModule ssl_module] dentro do virtual host.
23 de outubro de 2013 às 22:48
Opa Aleks a sim faltou mesmo hehe quando der tempo arrumo 🙂
Vlw