Configurando um Proxy Reverso / Balanceador de Carga com Apache e HTTPS no JBoss AS 7.1.2 – Parte 2

Postado em Atualizado em

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

Fonte: http://httpd.apache.org/docs/2.2/mod/mod_ssl.html

6 comentários em “Configurando um Proxy Reverso / Balanceador de Carga com Apache e HTTPS no JBoss AS 7.1.2 – Parte 2

    victor neves disse:
    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

    victor neves disse:
    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

    victor neves disse:
    13 de setembro de 2012 às 9:32

    putz, num deu certo, mas voce entendeu!!! rsrsrsrsrs

    Mauricio Magnani respondido:
    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

    Aleks disse:
    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.

      Mauricio Magnani Jr respondido:
      23 de outubro de 2013 às 22:48

      Opa Aleks a sim faltou mesmo hehe quando der tempo arrumo 🙂

      Vlw

Deixar mensagem para Mauricio Magnani Cancelar resposta