Domando o TLS no Openfire com Let’s Encrypt: envio de arquivos funcional via Gajim

Objetivo

Configurar corretamente certificados TLS no Openfire com Let’s Encrypt, garantindo o envio de arquivos sem erros de certificado no Gajim.


Pré-requisitos

  • Openfire instalado e em funcionamento.
  • Domínio apontando corretamente para o IP do servidor.
  • Acesso root ou sudo ao servidor Linux.
  • Apache ou algum servidor web disponível para auxiliar no desafio HTTP do Let’s Encrypt.

1. Emitindo o certificado com Let’s Encrypt

No exemplo abaixo, é necessário criar um subdomínio no apache (/etc/apache/sites-avaliable/xmpp.seudominio.com.br.conf) para “enganar” o certbot e não precisar de um @_acme.

sudo certbot certonly --apache -d xmpp.seudominio.com.br

Se usar o modo DNS: (acme, mas se vc tiver um apache rodando, lascou, não funciona)

sudo certbot certonly --manual --preferred-challenges dns -d xmpp.seudominio.com.br

Importante: aguarde a propagação total do TXT _acme-challenge antes de prosseguir.

Certificados gerados estarão em:

/etc/letsencrypt/live/xmpp.seudominio.com.br/fullchain.pem
/etc/letsencrypt/live/xmpp.seudominio.com.br/privkey.pem

2. Gerando PKCS12 para importar no Openfire

openssl pkcs12 -export \
  -in /etc/letsencrypt/live/xmpp.seudominio.com.br/fullchain.pem \
  -inkey /etc/letsencrypt/live/xmpp.seudominio.com.br/privkey.pem \
  -out /tmp/openfire.p12 \
  -name xmpp-cert \
  -passout pass:changeit

3. Backup e Importação no keystore do Openfire

Backup:

sudo cp /usr/share/openfire/resources/security/keystore \
        /usr/share/openfire/resources/security/keystore.bak

Importação:

sudo keytool -importkeystore \
  -destkeystore /usr/share/openfire/resources/security/keystore \
  -deststorepass changeit \
  -destkeypass changeit \
  -srckeystore /tmp/openfire.p12 \
  -srcstoretype PKCS12 \
  -srcstorepass changeit \
  -alias xmpp-cert \
  -noprompt

4. Verificando pasta de armazenamento de arquivos

Acesse o Admin Console:

Configurações do Servidor → Arquivo de Upload HTTP (HTTP File Upload)

Defina um diretório válido e com permissões corretas:

/dados2/Openfire

Certifique-se de que o usuário do serviço Openfire tem permissão total:

sudo chown -R openfire:openfire /dados2/Openfire

5. Acesso via HTTPS na porta 7443

Verifique o acesso:

https://xmpp.seudominio.com.br:7443

Se o certificado estiver correto, o navegador não deve emitir aviso de segurança.


6. Envio de arquivos no Gajim

O erro de CA ocorre quando o Gajim não confia no certificado.

Soluções:

Linux:

sudo cp /etc/letsencrypt/live/xmpp.seudominio.com.br/fullchain.pem /usr/local/share/ca-certificates/xmpp.crt
sudo update-ca-certificates

Windows:

  • Converta o fullchain.pem em .crt se necessário.
  • Clique com o botão direito no .crt → Instalar certificado.
  • Escolha “Autoridades de Certificação Raiz Confiáveis”.

Reinicie o Gajim e tente novamente o envio de arquivos.


Rolar para cima