Pular para o conteúdo principal
Version: 4.21.0

Configuração do Apache Tomcat com Certificado SSL

Introdução

O intuito desta documentação é auxiliar a configuração do Certificado SSL dentro do Apache Tomcat, possibilitando a utilização de um ambiente Fusion dentro do protocolo HTTPS.

112

Atenção

Não recomendamos o uso de certificados do tipo auto-assinados.

Atenção

Esse material de apoio foi desenvolvido com base na documentação oficial do Apache Tomcat e diversas configurações e/ou parâmetros podem sofrer alterações com o tempo, principalmente os métodos de aplicação do protocolo HTTPS, onde o resultado final varia dependendo da emissora do certificado e o Apache Tomcat em sua versão utilizada. Por isso, recomendamos que leve em consideração junto com esse material, a documentação oficial, que pode ser acessada clicando aqui.

Nota

Alguns processos de instalação são do tipo padrão, entretanto é exigido uma experiência prévia em informática de quem instalará a solução.

Nota

Caso possua o NGINX ou tenha interesse em utilizá-lo, recomendamos que aplique a configuração do certificado SSL dentro do NGINX. Para isso, basta acessar o nosso guia de Configuração do Apache Tomcat com o NGINX.

Configuração no Tomcat

Nota

Neste material, utilizamos as portas 8080 e 443 para HTTP e HTTPS, respectivamente.

⚙️ Configuração de HTTPS no Tomcat

Para iniciar o procedimento, deve-se abrir o server.xml (localizado na pasta conf do tomcat) e inserir o parâmetro redirectPort="443" no seu Connector HTTP, para que possamos direcionar à porta de destino HTTPS, conforme exemplo abaixo:

<Connector  port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxPostSize="-1"
redirectPort="443"
maxParameterCount="1000"
discardFacades="false"
/>

🔒Configuração do Conector HTTPS

Crie uma pasta chamada certificado dentro da pasta conf do Tomcat. Em seguida, insira os arquivos relacionados ao certificado nesta pasta. Os arquivos necessários variam conforme o tipo de certificado utilizado:

Tipo 1: Certificado com extensão .crt

📄 Arquivos necessários:

ArquivoDescrição
server.crtCertificado do servidor, emitido pela Autoridade Certificadora (CA).
server.keyChave privada usada para a criptografia do certificado.
chain.crtCadeia de certificação: inclui certificados intermediários e o raiz.
Nota

💡 A cadeia é necessária para que navegadores e clientes consigam validar o certificado até uma CA raiz confiável.

🔧 Exemplo de configuração para certificados .crt:

<Connector 
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="443"
maxThreads="150"
SSLEnabled="true"
secure="true"
scheme="https"
>
<SSLHostConfig>
<Certificate
certificateKeyFile="C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/conf/certificado/server.key"
certificateFile="C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/conf/certificado/server.crt"
certificateChainFile="C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/conf/certificado/chain.crt"
type="RSA"
/>
</SSLHostConfig>
</Connector>
Atenção

Note que nos parâmetros certificateFile, certificateKeyFile e certificateChainFile, deve-se alterar o valor para o caminho que contém o seu certificado SSL, sua chave privada e a cadeia de certificados do seu domínio, respectivamente.

Nota

O parâmetro certificateChainFile é a junção da cadeia de certificados do domínio. Essa cadeia é uma sequência de certificados que permitem verificar a autenticidade de um certificado SSL/TLS.

O arquivo chain.crt é a junção dos seguintes certificados:

  • Certificado do Servidor: O certificado que autentica o servidor.
  • Certificados Intermediários: Um ou mais certificados que estabelecem a ligação entre o certificado do servidor e o certificado de autoridade raiz.
  • Certificado Raiz: O certificado da CA raiz, que é amplamente confiável e está pré-instalado nos navegadores e sistemas operacionais.

Tipo 2: Certificado com extensão .pem

📄 Arquivos necessários:

ArquivoDescrição
fullchain.pemContém o certificado do servidor e a cadeia completa (intermediários + raiz).
privkey.pemChave privada do certificado.
Nota

💡 O arquivo fullchain.pem geralmente é fornecido por autoridades como Let's Encrypt. Ele substitui os arquivos server.crt + chain.crt de forma unificada.

🛠️ Exemplo de configuração para certificados .pem:

<Connector 
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="443"
maxThreads="150"
SSLEnabled="true"
secure="true"
scheme="https"
>
<SSLHostConfig>
<Certificate
certificateFile="C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/conf/certificado/fullchain.pem"
certificateKeyFile="C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/conf/certificado/privkey.pem"
type="RSA"
/>
</SSLHostConfig>
</Connector>
Nota

💡 Nos parâmetros certificateFile e certificateKeyFile, informe o caminho correto dos arquivos .pem contendo o certificado (com cadeia inclusa) e a chave privada.

Como o fullchain.pem já contém a cadeia de certificação, o parâmetro certificateChainFile não é necessário para certificados .pem.

Tipo 3 : Certificado com extensão .pfx

📄 Arquivos necessários:

ArquivoDescrição
meucertificado.pfxArquivo unificado contendo contendo todas as credenciais.

🛠️ Exemplo de configuração para certificados .pfx:

<Connector 
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="443"
maxThreads="150"
SSLEnabled="true"
secure="true"
scheme="https"
>
<SSLHostConfig>
<Certificate
certificateKeystoreFile="C:/Program Files/Apache Software Foundation/Tomcat 10.1.x/conf/certificado/meucertificado.pfx"
certificateKeystoreType="PKCS12"
certificateKeystorePassword="SENHA_DO_CERTIFICADO"
certificateKeyAlias="ALIAS_DO_CERTIFICADO"
/>
</SSLHostConfig>
</Connector>
Atenção

O parâmetro certificateKeyAlias é obrigatório apenas se houver múltiplos certificados dentro do arquivo .pfx. Caso haja apenas um certificado, este parâmetro pode ser dispensado.

Para descobrir o alias correto, siga os passos abaixo:

  • Abra o Prompt de Comando (CMD);
  • Navegue até a pasta bin da instalação do Java, o caminho padrão deverá ser: C:\Program Files\Amazon Corretto\jdk21.0.5_11\bin;
  • Execute o comando: keytool -v -list -storetype PKCS12 -keystore "C:\caminho\do\certificado\meucertificado.pfx;
  • Insira a senha do certificado quando solicitado.

O valor exibido após Alias name *é o que deve ser informado no parâmetro certificateKeyAlias.

No final das configurações, o seu arquivo server.xml deve conter dois conectores configurados — um para HTTP (porta 8080) e outro para HTTPS (porta 443). Confira abaixo um exemplo visual de como o server.xml deve estar configurado corretamente:

113

Redirecionamento HTTP para HTTPS

Para que seu ambiente possua redirecionamento de HTTP para HTTPS, edite o arquivo web.xml, localizado na pasta conf do Tomcat, desça até o final do mesmo e adicione a configuração abaixo, antes do fechamento da tag <web-app>.

<security-constraint>
<web-resource-collection>
<web-resource-name>Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

No final das configurações, o seu web.xml deve ficar conforme a imagem:

114

Validando as Configurações

Para validar todo o procedimento, reinicie o Apache Tomcat com todas as configurações aplicadas e faça o acesso em seu ambiente.

Nota

Note que, a partir de agora, a URL de acesso ao Fusion ficará sem a porta do Tomcat configurada.
Exemplo de como era: http://<domain>:8080/fusion
Exemplo de como deve ficar: https://<domain>/fusion

Atenção

Caso possua problemas com a validação do seu certificado SSL, entre em contato com a empresa emissora.

Ao acessar o ambiente, clique no cadeado localizado no canto esquerdo da URL.

Se apresentar a mensagem “A conexão é segura”, significa que o ambiente Fusion está utilizando um certificado SSL válido, emitido por uma autoridade certificadora confiável e que não está expirado.

Atenção

Se o ambiente estiver utilizando um certificado self-signed (autoassinado, geralmente criado localmente para testes ou homologação), o navegador poderá exibir um aviso como “A conexão não é totalmente segura” ou mensagens semelhantes, indicando que o site não é confiável para navegação pública. Isso não impede o funcionamento do sistema, mas sinaliza que o certificado não foi emitido por uma entidade certificadora reconhecida.

Durante o processo, caso surjam dúvidas, a equipe de suporte da Neomind estará à disposição para prestar auxílio.