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.
(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 é efetuada 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 -dconference.linuxvibe.com.br -d external.linuxvibe.com.br -dauth.linuxvibe.com.br -d jitsi-videobridge.linuxvibe.com.br -dfocus.linuxvibe.com.br -d turn.linuxvibe.com.br -dwebmail.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:
—–BEGIN CERTIFICATE—–
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
—–END CERTIFICATE—–
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”: