Apache Tomcat
Realiza deploy de certificados em servidores Apache Tomcat via SSH, usando um agente CLM como intermediário.
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ção | Formato | Compatível com CLM? |
|---|---|---|
| Tomcat ≤ 8.5 com JKS (Java KeyStore) | JKS / PKCS12 | ❌ Não suportado |
| Tomcat 8.5+ com APR/OpenSSL | PEM | ✅ Suportado |
| Tomcat 9+ com NIO2 e PEM | PEM | ✅ 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
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:
| Campo | Descrição |
|---|---|
| Host / IP | Endereço do servidor Tomcat |
| SSH Port | Porta SSH (padrão: 22) |
| SSH User | Usuário com permissão de escrita nos caminhos configurados |
| SSH Password | Senha do usuário (opcional se usar chave SSH) |
Caminhos dos arquivos de certificado:
| Campo | Exemplo | Descrição |
|---|---|---|
| Certificate file path | /etc/tomcat/ssl/meu-site.crt | Caminho definido em certificateFile ou SSLCertificateFile no server.xml |
| Private key file path | /etc/tomcat/ssl/meu-site.key | Caminho definido em certificateKeyFile ou SSLCertificateKeyFile no server.xml |
| CA Chain file path | /etc/tomcat/ssl/meu-site-chain.crt | Cadeia 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:
| Campo | Valor |
|---|---|
| Reload command | systemctl 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:
- Conecta ao servidor via SSH usando o agente configurado
- Grava os arquivos nos caminhos configurados (certificado, chave, cadeia)
- 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.