Segurança Tomcat: Guia Completo de Implementação SSL/TLS

Um guia detalhado para configurar o certificado SSL/TLS no seu servidor Tomcat.

Uma etapa crucial para proteger o Tomcat é a implementação de um certificado SSL, que garante que sua aplicação web seja acessível via HTTPS.

Existem várias abordagens para isso.

  • Você pode realizar o encerramento SSL em um balanceador de carga.
  • Pode-se implementar o SSL na camada da CDN.
  • É possível utilizar servidores web como Apache ou Nginx como front-end, configurando o SSL neles.

Contudo, se você não estiver utilizando nenhuma das opções acima, ou se precisar implementar o SSL diretamente no Tomcat, as instruções a seguir serão úteis.

Neste artigo, abordaremos os seguintes passos:

  • Geração do CSR (Solicitação de Assinatura de Certificado).
  • Importação do certificado em um arquivo keystore.
  • Ativação do SSL no Tomcat.
  • Configuração do protocolo TLS.
  • Alteração da porta de escuta do Tomcat para 443.
  • Teste de vulnerabilidade SSL do Tomcat.

Vamos começar…

Preparativos para o Certificado SSL/TLS

O primeiro passo é gerar um CSR e enviá-lo para uma autoridade certificadora para assinatura. Utilizaremos a ferramenta `keytool` para gerenciar os certificados.

  • Acesse o servidor onde o Tomcat está instalado.
  • Navegue até o diretório de instalação do Tomcat.
  • Crie uma nova pasta chamada `ssl`.
  • Execute o comando abaixo para criar um keystore:
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks

Observe que existem duas variáveis que podem ser ajustadas:

  • `alias`: É recomendável que seja um nome descritivo para fácil identificação futura. Um nome de domínio é uma boa opção.
  • `filename`: Similarmente, usar o nome de domínio como nome do arquivo é uma boa prática.

Exemplo:

[[email protected] ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks
Digite a senha do keystore:
Redigite a nova senha:
Qual o seu primeiro e último nome?
[Unknown]: bloggerflare.com
Qual o nome de sua unidade organizacional?
[Unknown]: Blogging
Qual o nome de sua organização?
[Unknown]: Geek Flare
Qual o nome de sua Cidade ou Localidade?
[Unknown]:
Qual o nome de seu Estado ou Província?
[Unknown]:
Qual o código de duas letras do país para esta unidade?
[Unknown]:
CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Unknown, ST=Unknown, C=Unknown está correto?
[no]: yes

Digite a senha da chave para <bloggerflare>
(RETURN se for a mesma senha do keystore):

[[email protected] ssl]#

É crucial prestar atenção à pergunta sobre “nome e sobrenome”. Essa pergunta pode ser confusa, pois ela se refere ao nome de domínio que você deseja proteger, e não ao seu nome pessoal.

Após inserir todas as informações necessárias, um arquivo keystore será criado no diretório de trabalho atual.

O próximo passo é gerar o CSR com o keystore criado, utilizando o seguinte comando:

keytool -certreq -alias bloggerflare -keyalg RSA -file bloggerflare.csr -keystore bloggerflare.jks

Este comando gera o CSR que deve ser enviado à autoridade de certificação para que seja assinado. Se você estiver apenas testando, pode usar um provedor de certificado GRATUITO ou escolher um pago.

Tendo o certificado assinado, o próximo passo é importá-lo no keystore com os seguintes comandos:

  • Importar o certificado raiz fornecido pela autoridade de certificação:
keytool -importcert -alias root -file root -keystore bloggerflare.jks
  • Importar o certificado intermediário:
keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks

Observação: É fundamental importar o certificado raiz e intermediário antes de importar o certificado do domínio. Se houver vários certificados intermediários, todos eles devem ser importados.

  • Importar o certificado de domínio:
keytool -importcert -file bloggerflare.cer -keystore bloggerflare.jks -alias bloggerflare

Após a execução deste comando, você deverá receber uma confirmação de que a instalação foi bem-sucedida.

A resposta do certificado foi instalada no keystore.

Excelente! Agora que o keystore do certificado está pronto, vamos prosseguir para a próxima etapa.

Se você é novo em SSL e tem interesse em aprender mais, inscreva-se neste curso online: Operações SSL/TLS.

Habilitando SSL no Tomcat

Partindo do princípio que você ainda está logado no servidor Tomcat, navegue até a pasta `conf`.

  • Faça um backup do arquivo `server.xml`.
  • Localize a seção `
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
  • Lembre-se de substituir o nome e a senha do keystore pelos seus.
  • Reinicie o Tomcat para que as alterações tenham efeito. O Tomcat agora estará acessível via HTTPS.

Ótimo!

Porta HTTPS Padrão

Por quê mudar?

Como visto na captura de tela anterior, o Tomcat está acessível através da porta 8080 com HTTPS, o que não é o padrão, e existem outras razões para mudar a porta:

  • Evitar que os usuários precisem usar uma porta personalizada na URL.
  • O navegador poderá exibir avisos de segurança se o certificado for emitido sem o número da porta.

Portanto, o objetivo é configurar o Tomcat para escutar na porta 443, permitindo o acesso via https:// sem a necessidade de especificar a porta.

Para isso, edite o arquivo `server.xml` com seu editor de texto preferido.

  • Localize a linha `
  • Altere o valor da porta de 8080 para 443.
  • A configuração deve ficar assim:
<Connector port="443" protocol="HTTP/1.1"
connectionTimeout="20000"
SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
redirectPort="8443" />
  • Reinicie o Tomcat e acesse seu aplicativo através de HTTPS sem especificar o número da porta na URL.

Perfeito, o resultado é um sucesso!

Teste de Vulnerabilidade SSL/TLS

Finalmente, vamos realizar um teste para assegurar que seu servidor não seja vulnerável a ameaças online.

Existem várias ferramentas online disponíveis para esse propósito, e neste caso utilizaremos o SSL Labs, que foi mencionado anteriormente.

  • Acesse o site do SSL Labs e insira a URL do seu site para iniciar o teste.

E o resultado é VERDE – uma classificação A.

É sempre recomendável revisar o relatório completo, buscando possíveis vulnerabilidades e corrigindo-as.

Isso é tudo por hoje.

Espero que este guia tenha sido útil para você entender o procedimento de proteção do seu Tomcat com um certificado SSL/TLS. Se você está interessado em aprender mais, recomendo este curso.