Olá ! Nesse artigo eu gostaria de compartilhar com vocês as orientações para implementar um certificado válido e gratuito da Let’s Encrypt no Zimbra 8.7 e 8.8.
(Essa implementação é idêntica para a versões Open Source, Suite Plus e Network)
Tenho observado que mesmo com a divulgação dos certificados gratuitos da Let’s Encrypt e a diminuição do custo de certificados assinados no Brasil em geral, muitos administradores Zimbra ainda não implementaram um certificado válido no seu ambiente.
Vamos ao que interessa !
A emissão de certificados pela Let’s Encrypt é bem simples: Você instala o pacote, solicita o certificado com o nome principal e nomes alternativos (opcional) que deseja e a validação é efetuda através de consultas DNS: Se a sua solicitação estiver partindo do endereço IP para qual o(s) endereço(s) resolve(m), o certificado será emitido.
(Também é possível efetuar a validação com uma URL específica, espero abordar isso em um próximo artigo)
A solicitação pode ser executada no próprio servidor Zimbra (se a requisição na Let’s Encrypt chegar com o endereço IP do endereço requisitado), para isso, é necessário parar o serviço de Proxy OU Mailbox (aquele que estiver respondendo pelas requisições dos clientes nas portas 80 e 443):
zmproxyctl stop zmmailboxdctl stop
O próximo passo é efetuar o download do pacote da Let’s Encrypt e entrar no diretório letsencrypt:
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt
Para entendimento, o endereço público do meu ambinete Zimbra neste artigo é “webmail.linuxvibe.com.br“. Para o Zimbra (e-mail e colaboração), basta um endereço público, porém neste certificado também estou contemplado os outros endereços abaixo, que são necessários para instalação da solução Zimbra Talk (irei publicar o artigo aqui em breve):
No diretório “letsencrypt“, execute o comando abaixo para geração do certificado com os endereços desejados (opção -d):
./letsencrypt-auto certonly –standalone -d xmpp.linuxvibe.com.br -d conference.linuxvibe.com.br -d external.linuxvibe.com.br -d auth.linuxvibe.com.br -d jitsi-videobridge.linuxvibe.com.br -d focus.linuxvibe.com.br -d turn.linuxvibe.com.br -d webmail.linuxvibe.com.br
Caso deseje iniciar o script informando o endereço de modo interativo, execute-o apenas com as opções abaixo:
./letsencrypt-auto certonly --standalone
O script irá configurar um servidor WEB temporário para validação e emissão do certificado, sendo necessário concordar com a licença e informar o e-mail para contato:
Ocorrendo tudo bem com a validação, o certificado (certificado+chave publica+cadeia) será emitido em armazenado em “/etc/letsencrypt/live/endereço/“:
Neste momento, você já pode iniciar o seu serviço novamente (proxy ou mailbox) e iniciar a instalação do certificado assinado. Um desafio com a utilização de certificados da Let’s Encrypt é a renovação do mesmo, que deve ser efetuada a cada 90 dias, que pode ser automizada com o Certbot (https://certbot.eff.org/). O outro desafio é que com a renovação, será gerado um novo certificado, sendo necessário implementar novamente no Zimbra.
Para implementar o certificado no Zimbra, você irá precisar complementar a cadeia (chain) com a “root CA”, que é efetuada da seguinte maneira:
- Criar um arquivo com a “root CA” e as cadeias do arquivo “fullchain1.pem”, nesta ordem)
root CA: (https://www.identrust.com/certificates/trustid/root-download-x3.html)
Efetuada a criação do arquivo com a cadeia completa, valide os arquivos com o comando abaixo (ordem: chave, certificado e cadeia completa):
/opt/zimbra/bin/zmcertmgr verifycrt comm privkey.pem cert.pem CHAIN_COMPLETA.pem
O resultado deve ser a validação do certificado, chave privada e cadeia completa:
Efetuada a validação, faça o backup dos certificados atuais (muito recomendado) e efetue a cópia da chave privada para o diretório “/opt/zimbra/ssl/zimbra/commercial“, com o nome “commercial.key”:
cp -a /opt/zimbra/ssl/zimbra /opt/zimbra/ssl/zimbra.$(date "+%Y%m%d") cp privkey.pem /opt/zimbra/ssl/zimbra/commercial/commercial.key
Efetue a instalação do certificado e reinicialize os serviços para validação da implementação (ordem: certificado e cadeia completa):
/opt/zimbra/bin/zmcertmgr deploycrt comm cert.pem chain.pem
Instalação correta do certificado:
Reinicialização dos serviços com “zmcontrol restart”: