Zimbra 8.7 e 8.8: Implementando certificado assinado com Let’s Encrypt

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”:

Rolar para cima