Configurando SSL/TLS no JBoss/Tomcat

Segurança sempre soa como uma falácia na maioria dos projetos de software. É como aquele pessoal que não gosta ou não sabe testar: eles sabem que a coisa existe e que é preciso ou muito recomendável a usar, mas no fim das contas dão de ombros e se funcionar funcionou.

Isso acontece muito quando o âmbito é segurança. Qual cliente ou usuário não se preocupa com segurança? Ao menos um controle de acesso com autenticação através de usuário e senha eles sempre exigem. E qualquer desenvolvedor que se preze se preocupa com isso.

Quando pensamos em segurança em aplicações Java temos que conhecer bem como funciona a arquitetura de segurança da plataforma Java, que é bem completa a útil. A divisão se dá em três “áreas” distintas, que são: JCA – Java Cryptography Architecture – Define classes e interfaces que são responsáveis por trabalhar com criptografia e descriptografia de dados e informações; JSSE – Java Secure Socket Extension – Usa a JCA para criar conexões seguras para troca de dados e informações; e JAAS – Java Authentication and Authorization Service – Responsável por autenticação e autorização nas aplicações Java. Neste post vou abordar somente um pouco do JSSE, para saber mais sobre JAAS veja no arquivo do blog.

O SSL (Secure Socket Layer) e o TLS (Transport Layer Security) são protocolos criptográficos usados para garantir a comunicação segura entre serviços de internet. Não vou entrar em detalhes sobre os protocolos e nem nas suas diferenças, para maiores informações sugiro esta leitura.

A necessidade fundamental de uma implementação com SSL é garantir a privacidade e integridade dos dados trafegados entre as aplicações que estão se comunicando. E isso é realizado através da autenticação das aplicações e da utilização de algoritmo criptográfico nos dados que estão sendo trafegados.

Dizer isso é meio bonitinho mas ninguém consegue compreender como isso ocorre de verdade, o que acontece por “por baixo dos panos”. Vamos imaginar um cliente utilizando um browser qualquer para acessar uma aplicação instalada num servidor JBoss, com certificado SSL implantado. Quando a comunicação entre eles é iniciada o servidor envia uma chave pública ao browser, que usa esta chave para criar uma chave privada temporária que é enviada de volta ao servidor. Desta forma as duas partes, servidor e browser, usarão estas chaves para estabelecer uma comunicação segura. Para saber mais sobre chaves públicas, privadas, criptografia simétrica e assimétrica veja a minha apresentação sobre certificação digital.

Vamos então por a mão na massa e configurar a aplicação.

Continue lendo “Configurando SSL/TLS no JBoss/Tomcat”

Event Servers

A mais ou menos um ano atrás, dei uma virada na minha carreira e atividades quando sai da Consist e entrei na Inflor, foi quando deixei de trabalhar diretamente com aplicações JavaEE (especificando e desenvolvendo principalmente) para trabalhar mais voltado a integrações e processos, apesar destas aplicações ainda serem completamente JavaEE (EJBs, JMS, etc) as ferramentas para este trabalho tiram o gostinho de quem gosta de desenvolver. Mas onde quero chegar é, neste um ano trabalhei sempre com o BEA Weblogic Server usando bastante o Workshop, Portal e o Integration e pude encontrar muitos pontos fortes, diferenciais e também muitos bugs super estranhos.

Depois de uma passada habitual pelo Blog do Luca, fiquei sabendo em primeira mão do lançamento do Event Server da BEA, junto veio de tabela uma nova versão do Real Time Server.

Estou rodando esse brinquedinho aqui em casa mas ainda não consegui ver diferenças significativas entre o WLS8.1 e WLS9.2 que tenho aqui, como ainda não simulei uma grande quantidade de eventos para testa-lo, ficarei com a dúvida se esta é mais uma técnica milagrosa da BEA para vender mais algumas centenas de licenças ou se o novo servidor realmente suportará os 50.000 eventos complexos e simultâneos, como se propõe a fazer. Pelo que pude ver no site do Event Server, ele tem um novo Dashboard que me pareceu muito interessante e útil, só que ainda não consegui usa-lo, se alguém souber como por favor me avise ou se alguém já estiver usando-o, deixe um comentário :D