Proteger o Apache Solr é crucial para impedir a interceptação de dados de busca sensíveis. A configuração padrão opera em HTTP, deixando brechas de segurança, mas é possível implementar criptografia de ponta a ponta usando certificados gratuitos adaptáveis a diferentes níveis de segurança.
Apache Solr SSL é a configuração que permite ao motor de busca operar sob o protocolo HTTPS criptografado (porta 8983). Utilizando a autoridade certificadora Let’s Encrypt, é possível automatizar a emissão de certificados tanto para domínios (validade padrão) quanto para IPs públicos (com rotação acelerada de chaves), garantindo integridade na transmissão de dados.
RESUMO DO TUTORIAL
- Flexibilidade: Escolha entre certificado para Domínio (Padrão) ou IP Público.
- Ciclo de Vida: Opções de renovação padrão (90 dias) ou Alta Segurança (6 dias).
- Modernização: Configuração direta de arquivos PEM, sem necessidade de Java Keystore complexos.
Pré-requisitos do sistema
Para seguir este guia, você precisa de um servidor Linux (Ubuntu ou Debian) com acesso root/sudo. O Apache2 deve estar instalado funcionando como proxy reverso e o Apache Solr já deve estar rodando na porta padrão.
ALERTA: Certifique-se de que as portas 80 e 443 estejam abertas no firewall. O Let’s Encrypt precisa acessá-las para validar a propriedade do servidor.
1. Instale o Certbot e dependências
A ferramenta oficial para gerenciar certificados é o Certbot.
- Atualize a lista de pacotes do sistema:
- Instale o núcleo do Certbot e o plugin Apache:
2. Escolha sua estratégia de certificação
Nesta etapa, você deve escolher a rota adequada à sua infraestrutura.
Opção A: Certificado Padrão (Domínio + 90 Dias)
Ideal para servidores de produção padrão com DNS configurado (ex: https://www.google.com/url?sa=E&source=gmail&q=solr.seudominio.com).
- Solicite o certificado automatizado:sudo certbot –apache -d solr.seudominio.com
- Siga as instruções de tela (e-mail e aceite dos termos). O certificado será salvo em /etc/letsencrypt/live/solr.seudominio.com/.
Opção B: Alta Segurança (IP + Rotação de 6 Dias)
Ideal para ambientes “Zero Trust” ou acesso direto via IP, forçando a troca de chaves a cada 6 dias.
NOTA: O Let’s Encrypt emite certificados válidos por 90 dias. A estratégia de “6 dias” consiste em forçar a renovação via script para garantir que as chaves criptográficas sejam trocadas semanalmente.
- Gere o certificado para o IP (requer parada temporária do Apache se usar porta 80):sudo certbot certonly –standalone -d 1.2.3.4 –preferred-challenges http –pre-hook “systemctl stop apache2” –post-hook “systemctl start apache2”
- Crie o script de automação de ciclo curto:sudo nano /etc/cron.d/certbot-short-cycle
- Cole a regra de agendamento:
O certificado será salvo em /etc/letsencrypt/live/1.2.3.4/ (ou o nome do seu IP).
3. Configure o SSL no Apache Solr
Agora vamos instruir o Solr a usar os arquivos gerados. As versões modernas (9.x+) leem arquivos PEM diretamente.
- Edite o arquivo de ambiente do Solr (geralmente em /etc/default/solr.in.sh ou /opt/solr/bin/solr.in.sh):sudo nano /etc/default/solr.in.sh
- Adicione as configurações de SSL.Atenção: Substitua CAMINHO_DO_CERTIFICADO pelo caminho gerado no Passo 2 (seja solr.seudominio.com ou seu IP).
- Ajuste as permissões de leitura (Crucial):O usuário solr precisa ler os arquivos criados pelo root.
4. Configure o Proxy Reverso Apache2
O Apache2 servirá como a porta de entrada segura.
- Habilite os módulos SSL e Proxy:sudo a2enmod proxy proxy_http ssl rewrite headers
- Crie ou edite o Virtual Host:sudo nano /etc/apache2/sites-available/solr.conf
- Insira a configuração, ajustando o ServerName para seu Domínio ou IP:
- Ative e reinicie:sudo a2ensite solr.confsudo systemctl restart apache2
5. Validação final
Para aplicar as mudanças no backend, reinicie o Solr.
- Reinicie o serviço:sudo systemctl restart solr
- Verifique o status:sudo systemctl status solr (Se falhar, verifique se o caminho dos certificados no solr.in.sh está correto e se as permissões chmod foram aplicadas).
- Teste no navegador: Acesse https://seu-ip-ou-dominio/solr.
Solução de problemas comuns
Solr não inicia após ativar SSL
Geralmente é um problema de permissão. O Solr roda com usuário restrito e o Let’s Encrypt cria arquivos como root.
- Solução: Reexecute os comandos de chown e chmod listados no final do Passo 3.
Erro 503 ou 502 Bad Gateway
Ocorre se o Apache tenta conectar via HTTPS mas o Solr ainda está em HTTP (ou vice-versa).
- Solução: Verifique se SOLR_SSL_ENABLED=true está ativo no solr.in.sh e se a linha ProxyPass no Apache aponta para https://.
Renovação de IP falhando
O Let’s Encrypt exige que o IP seja público e acessível na porta 80.
- Solução: Se você escolheu a Opção B, verifique se nenhum firewall está bloqueando o tráfego de entrada na porta 80 durante a renovação.
Perguntas frequentes
Qual a vantagem da rotação de 6 dias?
A rotação curta (Opção B) reduz a janela de oportunidade de um ataque. Se sua chave privada for comprometida, ela será inválida em menos de uma semana, aumentando drasticamente a segurança em ambientes críticos.
Posso usar a Opção A (Padrão) com um IP?
O suporte oficial do Certbot para IPs é limitado e muitas vezes requer validação via arquivo (HTTP-01) em modo standalone. Para IPs, a Opção B (Standalone) é tecnicamente mais robusta, mesmo que você não queira a rotação de 6 dias (basta remover a flag --force-renewal do cron).
Preciso reinstalar o certificado ao atualizar o Solr?
Não. Como a configuração fica no arquivo solr.in.sh e os certificados ficam na pasta /etc/letsencrypt, a atualização do binário do Solr geralmente respeita as configurações externas existentes.