Pular para o conteúdo principal

Apache Tomcat

Realiza deploy de certificados em servidores Apache Tomcat via SSH, usando um agente CLM como intermediário.

Compatibilidade
O store Unix do CLM entrega certificados no formato **PEM** (arquivos `.crt` e `.key`). O suporte depende de como o Tomcat está configurado — veja a tabela de compatibilidade abaixo antes de prosseguir.

Compatibilidade por versão e configuração

Versão / ConfiguraçãoFormatoCompatível com CLM?
Tomcat ≤ 8.5 com JKS (Java KeyStore)JKS / PKCS12❌ Não suportado
Tomcat 8.5+ com APR/OpenSSLPEM✅ Suportado
Tomcat 9+ com NIO2 e PEMPEM✅ Suportado
Tomcat 10+ (padrão PEM)PEM✅ Suportado
Se o seu Tomcat usa JKS (Java KeyStore), o deploy via store Unix não é compatível. O JKS requer conversão do formato PEM para PKCS12/JKS antes da instalação, o que não é suportado pelo Provedor Unix. Suporte a Java Keystores está planejado para uma versão futura do CLM.

Como identificar a configuração do seu Tomcat

Verifique o arquivo server.xml do Tomcat:

grep -A5 "SSLCertificateFile\|keystoreFile\|certificateFile" /etc/tomcat*/conf/server.xml
# ou
grep -A5 "SSLCertificateFile\|keystoreFile\|certificateFile" /opt/tomcat/conf/server.xml

Configuração com JKS — ❌ Não suportado

<Connector port="443"
keystoreFile="/etc/tomcat/keystore.jks"
keystorePass="senha" />

Configuração com APR/OpenSSL — ✅ Suportado

<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
SSLCertificateFile="/etc/tomcat/ssl/meu-site.crt"
SSLCertificateKeyFile="/etc/tomcat/ssl/meu-site.key" />

Configuração com NIO2 + PEM (Tomcat 9+) — ✅ Suportado

<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol">
<SSLHostConfig>
<Certificate certificateFile="/etc/tomcat/ssl/meu-site.crt"
certificateKeyFile="/etc/tomcat/ssl/meu-site.key"
type="RSA" />
</SSLHostConfig>
</Connector>

Pré-requisitos

  • Tomcat configurado com APR/OpenSSL ou NIO2 + PEM (veja compatibilidade acima)
  • Agente CLM Linux instalado e online com acesso SSH ao servidor de destino
  • Usuário SSH com permissão de escrita nos caminhos de destino dos arquivos
  • Diretório de destino dos certificados criado no servidor

Preparar o servidor

Criar o diretório de certificados

mkdir -p /etc/tomcat/ssl
chmod 755 /etc/tomcat/ssl

Identificar os caminhos dos certificados

Use os caminhos definidos no server.xml conforme identificado acima.

Permissões do usuário SSH

O usuário SSH configurado no store precisa ter permissão de escrita no diretório dos certificados. Se estiver usando um usuário não-root:

# Ajusta permissão do diretório para o usuário
chown root:<usuario> /etc/tomcat/ssl/
chmod 770 /etc/tomcat/ssl/

# Libera o restart do Tomcat via sudo sem senha
echo "<usuario> ALL=(ALL) NOPASSWD: /bin/systemctl restart tomcat" >> /etc/sudoers
Reload vs Restart no Tomcat
Diferente do Nginx e Apache, o Tomcat não suporta reload de certificados sem reiniciar o serviço. Use `systemctl restart tomcat` no Reload command, o que causa uma breve interrupção do serviço durante a aplicação do novo certificado. Planeje a renovação em janelas de manutenção quando necessário.

Criar via tela de Stores

Etapa 1 — Provider

Selecione Provedor Unix.

Etapa 2 — Agent

Selecione o agente Linux que realizará a conexão SSH com o servidor de destino.

Etapa 3 — Configuration

Conexão SSH:

CampoDescrição
Host / IPEndereço do servidor Tomcat
SSH PortPorta SSH (padrão: 22)
SSH UserUsuário com permissão de escrita nos caminhos configurados
SSH PasswordSenha do usuário (opcional se usar chave SSH)

Caminhos dos arquivos de certificado:

CampoExemploDescrição
Certificate file path/etc/tomcat/ssl/meu-site.crtCaminho definido em certificateFile ou SSLCertificateFile no server.xml
Private key file path/etc/tomcat/ssl/meu-site.keyCaminho definido em certificateKeyFile ou SSLCertificateKeyFile no server.xml
CA Chain file path/etc/tomcat/ssl/meu-site-chain.crtCadeia de intermediários (opcional)
Os caminhos corretos são os definidos no `server.xml` do Tomcat nas diretivas `certificateFile` e `certificateKeyFile` (NIO2) ou `SSLCertificateFile` e `SSLCertificateKeyFile` (APR). Consulte a seção [Como identificar a configuração do seu Tomcat](#como-identificar-a-configuração-do-seu-tomcat).

Configuração de serviço:

CampoValor
Reload commandsystemctl restart tomcat

Se o usuário SSH não for root, use sudo systemctl restart tomcat e configure o sudoers conforme descrito em Permissões do usuário SSH.

Etapa 4 — Review

Defina o Repository Name, confirme as configurações e clique em Create Repository.


Como funciona o deploy

Quando um certificado é instalado ou renovado, o CLM:

  1. Conecta ao servidor via SSH usando o agente configurado
  2. Grava os arquivos nos caminhos configurados (certificado, chave, cadeia)
  3. Executa o Reload command para reiniciar o Tomcat e aplicar o novo certificado

Instalar um certificado

Na tela de detalhes do Store, clique em Instalar Certificado, selecione o certificado do inventário e confirme.


Resolução de problemas

Deploy falha no passo 1

O agente não conseguiu escrever o arquivo no destino. Verifique:

# Confirma que o diretório existe
ls -la /etc/tomcat/ssl/

# Testa escrita com o usuário SSH configurado
su - <usuario> -c "touch /etc/tomcat/ssl/teste && echo OK && rm /etc/tomcat/ssl/teste"

Se retornar Permission denied, ajuste as permissões conforme descrito em Permissões do usuário SSH.

Tomcat não aplica o novo certificado após o deploy

Verifique se o server.xml aponta para os mesmos caminhos configurados no store e reinicie manualmente:

systemctl restart tomcat
systemctl status tomcat

Erro "keystoreFile not found"

Indica que o Tomcat está configurado com JKS, que não é compatível com o Provedor Unix. Consulte a seção de Compatibilidade.