Zimbra – Um certificado SSL para cada domínio
Prezados Colegas,
Saudações pinguianas a todos!
Depois de muito “bater cabeça” para colocar certificado ssl/https em vários domínios no mesmo Zimbra, resolvi documentar os procedimentos que fiz, com finalizada de ajudar mais alguém que esteja com essa necessidade.
No tocante a questão do meu ambiente, eu tenho um Zimbra Collaboration Open Source Edition na versão 8.8 rodando sob um sistema Gnu/Linux CentOS 8.3.
Agora, vou dizer os passos aqui fiz. Comigo deu certo, então, caso encontre alguma dificuldade, não culpe essa documentação, ok? É por sua conta e risco! rs.
Vale lembrar que ter múltiplos certificados SSL só é possível se vocês estiver rodando o Proxy do Zimbra.
Então, chega de “bla bla bla” e vamos colocar as mãos na massa. Ha! Mas uma coisa… Todos os comandos devem ser executados com o usuário root, ok?
O primeiro passo é instalar o pacote “certbot”:
# yum -y install certbot
Agora, precisamos parar o Zimbra Proxy para gerar o certificado:
# su - zimbra -c "zmproxyctl stop" # su - zimbra -c "zmmailboxdctl stop"
Agora vamos criar os certificados:
# export EMAIL="[email protected]" # certbot certonly --standalone \ -d webmail.dominio.com.br \ -d mail.dominio.com.br \ -d pop.dominio.com.br \ -d smtp.dominio.com.br \ -d imap.dominio.com.br \ -d mx.dominio.com.br \ --preferred-challenges http \ --agree-tos \ -n \ -m $EMAIL \ --keep-until-expiring
Vamos religar o zimbra proxy agora:
# su - zimbra -c "zmproxyctl start" # su - zimbra -c "zmmailboxdctl start"
Agora, para facilitar as coisas, vamos criar uma variável com o caminho completo dos certificados:
# CERTPATH=/etc/letsencrypt/live/webmail.dominio.com.br
Vamos listar pra vê se deu tudo certo:
# ls -lha $CERTPATH
Agora, vamos criar um diretório temporário e copiar os certificados pra ele:
# mkdir -p /usr/local/certs/dominio.com.br # chmod -R 777 /usr/local/certs/dominio.com.br # cp $CERTPATH/* /usr/local/certs/dominio.com.br/
Agora precisamos unificar em um outro arquivo, a chain com a chave raiz. Primeiro, vamos colocar a chain em outro arquivo:
# cat /usr/local/certs/dominio.com.br/chain.pem | tee /usr/local/certs/dominio.com.br/zimbra_chain.pem
Agora vamos juntar com a chave raiz (fonte: https://letsencrypt.org/certs/trustid-x3-root.pem.txt):
# tee -a /usr/local/certs/dominio.com.br/zimbra_chain.pem << EOF -----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----- EOF
Agora, precisamos ajustar as permissões:
# chown -R zimbra:zimbra /usr/local/certs/dominio.com.br/
Vamos então, testar o certificado:
# su - zimbra -c '/opt/zimbra/bin/zmcertmgr verifycrt comm /usr/local/certs/'dominio.com.br'/privkey.pem /usr/local/certs/'dominio.com.br'/cert.pem /usr/local/certs/'dominio.com.br'/zimbra_chain.pem'
Agora precisamos criar o certificado “bundle”:
# cat /usr/local/certs/dominio.com.br/cert.pem /usr/local/certs/dominio.com.br/zimbra_chain.pem >> /usr/local/certs/dominio.com.br/zimbra.bundle
Ajustar as permissões dele:
# chown -R zimbra:zimbra /usr/local/certs/dominio.com.br/zimbra.bundle
E finalmente, vamos colocar os certificados no zimbra:
su - zimbra -c '/opt/zimbra/libexec/zmdomaincertmgr savecrt 'dominio.com.br' /usr/local/certs/'dominio.com.br'/zimbra.bundle /usr/local/certs/'dominio.com.br'/privkey.pem'
Execute o seguinte para implantar o certificado no domínio. Isso salvará o certificado e a chave como /opt/zimbra/conf/domaincerts/dominio.com.br:
su - zimbra -c '/opt/zimbra/libexec/zmdomaincertmgr deploycrts'
Agora, precisamos recarregar o proxy:
su - zimbra -c 'zmproxyctl restart'
Isso foi escrito com base nesses dois artigos:
- https://wiki.zimbra.com/wiki/SSL_certificates_per_domain
- https://computingforgeeks.com/secure-zimbra-mail-server-with-letsencrypt-ssl-certificate/
Isso é tudo!
Esse artigo foi útil? Colabore com o nosso site para podermos continuar dando mais dicas como essa!
Formas de doação:
- Boleto / Cartão de crédito: https//bit.ly/AprendendoLinux
- Pix: [email protected]
- PicPay: @henrique_fagundes
- PayPal: [email protected]
- Bitcoin: bc1qtnn5z058htzy799dslwrpjcdpm0vuta3vrj28l
Favorecido: Luiz Henrique Marques Fagundes