Como implementar SSL no Apache Tomcat?

Um guia passo a passo para configurar o certificado SSL/TLS no servidor Tomcat.

Uma das tarefas essenciais para proteger o Tomcat é configurar o certificado SSL, para que o aplicativo da Web seja acessível por HTTPS.

Há muitas maneiras de conseguir isso.

  • Você pode encerrar o SSL em um balanceador de carga
  • Implemente SSL no nível CDN
  • Use servidores web como Apache, Nginx, etc. na frente e implemente SSL lá

No entanto, se você não estiver usando nenhum dos itens acima ou usando isso como front-end ou precisar implantar SSL diretamente no Tomcat, o seguinte o ajudará.

Neste artigo, faremos como abaixo.

  • Gerar CSR (solicitação de assinatura de certificado)
  • Importar certificado em um arquivo keystore
  • Habilitar SSL no Tomcat
  • Configurar protocolo TLS
  • Altere o Tomcat para escutar na porta 443
  • Testar a vulnerabilidade do Tomcat para SSL

Vamos começar…

Preparando-se para o certificado SSL/TLS

O primeiro passo seria gerar um CSR e obtê-lo assinado pelo autoridade de certificação. Usaremos o utilitário keytool para gerenciar os certificados.

  • Entrar no servidor Tomcat
  • Vá para o caminho de instalação do tomcat
  • Crie uma pasta chamada ssl
  • Execute o comando para criar um keystore
keytool -genkey -alias domainname -keyalg RSA -keysize 2048 -keystore filename.jks

Há duas variáveis ​​nos comandos acima que você pode querer alterar.

  Como limpar seus fones de ouvido
  • Alias ​​– é melhor mantê-lo significativo para que no futuro você possa reconhecê-lo rapidamente. Eu prefiro mantê-lo como um nome de domínio.
  • Nome do arquivo – novamente, é bom manter o nome de domínio.
  • Ex:

    [[email protected] ssl]# keytool -genkey -alias bloggerflare -keyalg RSA -keysize 2048 -keystore bloggerflare.jks
    Enter keystore password:
    Re-enter new password:
    What is your first and last name?
    [Unknown]: bloggerflare.com
    What is the name of your organizational unit?
    [Unknown]: Blogging
    What is the name of your organization?
    [Unknown]: Geek Flare
    What is the name of your City or Locality?
    [Unknown]:
    What is the name of your State or Province?
    [Unknown]:
    What is the two-letter country code for this unit?
    [Unknown]:
    Is CN=bloggerflare.com, OU=Blogging, O=Geek Flare, L=Unknown, ST=Unknown, C=Unknown correct?
    [no]: yes
    
    Enter key password for <bloggerflare>
    (RETURN if same as keystore password):
    
    [[email protected] ssl]#

    Preste atenção na pergunta sobre nome e sobrenome. Isso é um pouco enganador, eu acho. Não é o seu nome, mas o nome de domínio que você deseja proteger.

    Depois de fornecer todas as informações, ele criará um arquivo keystore em um diretório de trabalho atual.

    Em seguida, seria gerar um novo CSR com o keystore recém-criado com o comando abaixo.

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

    Isso criará um CSR que você precisa enviar para a autoridade de certificação para que seja assinado. Se você estiver brincando, considere usar um provedor de certificado GRATUITO ou escolha um premium.

      Como verificar a conta de e-mail do Waze

    Eu tenho o certificado assinado e continuarei a importar para o keystore com o comando abaixo.

    • O certificado raiz de importação é fornecido pelo provedor
    keytool -importcert -alias root -file root -keystore bloggerflare.jks
    • Importar certificado intermediário
    keytool -importcert -alias intermediate -file intermediate -keystore bloggerflare.jks

    Observação: sem importar root e intermediário, você não poderá importar o certificado de domínio para o keystore. Se você tiver mais de um intermediário, precisará importar todos eles.

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

    e, você receberá uma confirmação de que foi instalado.

    A resposta do certificado foi instalada no keystore

    Ótimo, então o keystore de certificado está pronto agora. Vamos para o próximo passo.

    Se você é novo no SSL e está interessado em saber mais, inscreva-se neste curso online – Operações SSL/TLS.

    Habilitar SSL no Tomcat

    Supondo que você ainda esteja logado no servidor Tomcat, vá para a pasta conf

    • Faça um backup do arquivo server.xml
    • Vá para a seção
    SSLEnabled="true" scheme="https" keystoreFile="ssl/bloggerflare.jks" keystorePass="chandan" clientAuth="false" sslProtocol="TLS"
    • Não se esqueça de alterar o nome e a senha do arquivo keystore com o seu
    • Reinicie o tomcat e você verá que o Tomcat está acessível por HTTPS

    Doce!

    Porta HTTPS padrão

    Por quê?

    Bem, se você observar a captura de tela acima, estou acessando o Tomcat acima de 8080 com https que não é padrão e mais alguns motivos.

    • Você não quer pedir aos usuários que usem a porta personalizada
    • O navegador dará um aviso quando o certificado for emitido no nome de domínio sem a porta
      Tudo que um profissional de marketing deve saber

    Portanto, a ideia é fazer com que o Tomcat escute na porta 443 para que seja acessível apenas por https:// sem o número da porta.

    Para fazer isso, edite server.xml com seu editor favorito

    • Vá para
    • Alterar porta de 8080 para 443
    • 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 com https sem nenhum número de porta

    Impressionante, é um sucesso!

    Teste de vulnerabilidade SSL/TLS

    Por fim, faremos um teste para garantir que não seja vulnerável a ameaças online.

    Existem muitas ferramentas online que discuti aqui, e aqui vou usar o SSL Labs.

    E é VERDE – uma classificação.

    No entanto, é sempre uma boa ideia rolar para baixo no relatório e ver se você encontra alguma vulnerabilidade e corrigi-la.

    Então isso foi tudo por hoje.

    Espero que isso ajude você a conhecer o procedimento de proteção do Tomcat com certificado SSL/TLS. Se você está interessado em aprender mais, então eu recomendo este curso.