Tomcat + SSL: HOW-TO

Neste trabalho será apresentado o Secure Socket Layer (SSL), um protocolo que permite aos clientes (normalmente os navegadores Web) e servidores comunicarem-se sobre uma conexão segura. Posteriormente, será apresentada a instalação e configuração segura, por meio do uso de SSL, da ferramenta livre Tomcat, um servidor de aplicações desenvolvido pela Apache Foundation.

[ Hits: 57.727 ]

Por: Paulo Afonso Parreira Júnior em 23/05/2008


SSL - Secure Socket Layer



O protocolo SSL foi desenvolvido pela Netscape em 1994, e permite aos clientes (normalmente os navegadores Web) e servidores HTTP comunicarem-se sobre uma conexão segura. O SSL oferece encriptação, autenticação e integridade dos dados no intuito de proteger a informação trocada em redes públicas inseguras. Há várias versões do SSL, a saber:
  • SSL 2.0: possui algumas fraquezas de segurança, não sendo muito utilizado atualmente;
  • SSL 3.0: é universalmente suportado;
  • Tranport Layer Security (TLS): é um melhoramento do SSL 3.0, tem sido adotado como um padrão na Internet e amplamente suportado por quase todos os softwares recentes.

A encriptação protege dados contra uso não autorizado, utilizando algoritmos criptográficos, antes da transmissão. O dado é criptografado em um lado (cliente ou servidor), transmitido, decifrado pelo outro lado e, então, processado.

A autenticação é um método para verificar a identidade do remetente. A primeira vez que um navegador Web ou outro cliente tenta se comunicar com um servidor Web sobre uma conexão segura, o servidor apresenta ao cliente um conjunto de credenciais na forma de um certificado.

Como o próprio nome indica (Camada de Socket Seguro), conexões SSL agem como sockets conectados por TCP. Portanto, podemos pensar em conexões SSL como conexões TCP seguras desde que o lugar do SSL na pilha de protocolos é imediatamente acima do TCP e logo abaixo da camada de aplicação, como mostra a Figura 2-1.


Figura 2.1 - SSL e a pilha de protocolos TCP/IP (Fonte: [1]).


2.1 SSL e Tomcat

É importante salientar que a configuração do Tomcat para fazer uso do protocolo SSL somente é necessária quando o Tomcat está rodando como um servidor stand-alone.

São chamados standalone, ou stand-alone (literalmente "ficam em pé por si só") os programas completamente auto-suficientes: para seu funcionamento não necessitam de um software auxiliar, como um interpretador, sob o qual terão de ser executados (WIKIPÉDIA, 2008).

Quando o Tomcat estiver rodando unicamente como um servlet contêiner sobre um servidor web dedicado, como Apache ou Microsoft IIS, geralmente é necessário configurar o servidor web primário para tratar as conexões SSL dos usuários.

O servidor primário negociará com os clientes e então redirecionará as requisições destinadas ao Tomcat após tê-las descriptografado. Da mesma forma, o Tomcat responderá ao servidor primário que irá criptografar a resposta gerada pelo Tomcat antes de enviá-la ao cliente. Neste contexto, o servidor Tomcat não participa do processo criptográfico. A Figura 2-2 e a Figura 2-3 representam os dois cenários de comunicação segura apresentados anteriormente.


Figura 2.2 - Tomcat como servidor stand-alone.


Figura 2.3 - Tomcat rodando sobre o servidor web Apache.


Neste trabalho, o cenário abordado é apresentado na Figura 2-2, onde o servidor Tomcat roda como um servidor stand-alone.

2.2. Certificados

Para implementar SSL, um servidor deve possuir um certificado digital associado a cada interface de rede (endereço IP) que aceitará conexões seguras. Um certificado digital serve para, na Internet ou em uma rede local, verificar se uma pessoa ou servidor é quem ela/ele realmente diz ser. Pode-se dizer que um certificado digital é uma carteira de identidade virtual. Em um certificado digital há informações pessoais da pessoa ou servidor, mas a principal informação presente em um certificado é a sua chave pública.

A criptografia usada na Internet se baseia no sistema de chaves. O algoritmo usado na criptografia faz com que sejam geradas duas chaves, uma pública e outra privada (também chamada de secreta). A chave pública, que está presente no certificado digital, é usada para criptografar dados a serem enviados ao dono do certificado. Já a chave privada, que só o dono do certificado conhece, serve para descriptografar a informação que foi criptografada com a sua chave pública. É importante notar que não é possível descriptografar a informação sem ter a chave privada e não é computacionalmente fácil deduzir a chave privada, através da chave pública.

Certificados são emitidos e validados por autoridades confiáveis conhecidas como Autoridades Certificadoras (CAs). Um certificado representa a identidade da chave pública de uma pessoa/servidor. É um documento assinado que tem por finalidade dizer: "Eu certifico que a chave pública presente neste documento pertence à entidade nomeada neste documento. Assinado CA". Algumas CAs bastante conhecidas são a Verisign.
e Entrust:
Neste contexto, é necessário criar um certificado que possa ser utilizado pelo Tomcat. As próximas subseções descrevem como isto pode ser feito.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. SSL - Secure Socket Layer
   3. JSSE - Java Secure Socket Extension
   4. Instalando o Servidor Tomcat
   5. Configuração Tomcat + SSL
   6. Considerações finais
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Terceirização de segurança gera dúvidas em profissionais de TI

Enganando invasores com Honeyperl

Enviando alertas do Snort por SMS

FproxyAdmin - Gerenciador WEB do Proxy

Nmap - Comandos úteis para um administrador de sistemas Linux

  
Comentários
[1] Comentário enviado por foguinho.peruca em 24/05/2008 - 13:26h

Olá!

Excelente artigo, muito bem detalhado e explicado. vou usar ele de base para alguns projetos que eu estou executando.

[]s
Jeff

[2] Comentário enviado por marcosmiras em 26/05/2008 - 09:36h

Cara se não sabe o quanto eu pastei para fazer isso algum tempo atrás... Legal você ter postado esse artigo, pode ajudar muito nego aí... hehe
[]'s

[3] Comentário enviado por pauloafpjunior em 27/05/2008 - 18:04h

Olá pessoal.

Espero que o tutorial seja uma boa contribuição para a comunidade de SL. Agradeço pelos comentários.

Abraços,
Paulo Júnior.

[4] Comentário enviado por luizrobertofj em 11/08/2008 - 04:25h

Que bom seria se todo artigo seguisse seu padrão.
Parabéns!

[5] Comentário enviado por pauloafpjunior em 11/08/2008 - 07:34h

Olá Luiz.

Obrigado pelo comentário. Que bom que tu gostou do artigo.

Até mais,
Paulo Júnior.

[6] Comentário enviado por luizvieira em 12/03/2010 - 14:23h

Olá Paulo, algumas dúvidas se puder ajudar-me:
- tenho duas aplicações rodando num server, uma em java é o que valida o login e senha e gera um token, enviando a URL para a outra aplicação via navegador, mas comos dados do usuário e o token gerado visível. O que quero saber é se com o SSL esse URL seria criptofgeafada ao ser enviada pelo navegado.
- o tomcat faria a decodificação dessa URL criptografada de forma que seja acessível para minha segunda aplicação?

Estou com essas dúvdia prq um cliente não quer o método de token, então pensei na possibilidade de usar o token + SSL pelo tomcat.
Se puder ajudar, agradeço :-)

E parabéns pelo artigo, muito bem escrito!
[ ]'s
Luiz

[7] Comentário enviado por pauloafpjunior em 12/03/2010 - 14:38h

Olá Luiz.

Obrigado.

Utilizando SSL, todo o tráfego de dados entre cliente e servidor será criptografado. Você pode colocar esse token em uma estrutura de dados, serializá-la e depois enviar pela rede, pois a conexão estará segura. Na outra ponta você receberá a mesma estrutura de dados decriptografada e pronta para ser utilizada.

Att,
Paulo Junior





Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts