Bismillah

LetsEncrypt merupakan salah satu penyedia sertifikat SSL gratis yang banyak sekali digunakan.

Pemanfaatan sertifikat SSL dari LetsEncrypt pada Zimbra bisa dilakukan tetapi caranya tidak out-of-the-box. Sehingga pada artikel kali ini saya akan menjelaskan bagaimana cara menggunakan LetsEncrypt sebagai penyedia sertifikat SSL untuk instance zimbra Anda.

Saya menulis artikel ini dengan asumsi bahwa Anda sudah bisa dan terbiasa menggunakan certbot untuk merequest sertifikat SSL.

Garis besar

Secara garis besar, cara untuk menggunakan LE (LetsEncrypt) pada Zimbra adalah sebagai berikut:

  1. Menghentikan zimbra-proxy (zmproxyctl)
  2. Merequest SSL menggunakan certbot dengan flag --nginx (dan tentunya dengan flag-flag lain yang digunakan untuk merequest sertifikat SSL).
  3. Menyalin file-file SSL yang didapat, ke direktori yang bisa diakses oleh user zimbra.
  4. Mendeploy sertifikat SSL sebagai user zimbra dengan zmcertmgr deploycrt
  5. Menyetop semua instance nginx yang bukan dari zimbra.
  6. Merestart service-service zimbra dengan zmcontrol restart

Kebutuhan sistem

Paket-paket yang dibutuhkan pada sistem:

  1. Tentunya, aplikasi certbort
  2. Plugin nginx untuk certbot: python3-certbot-nginx

Langkah-Langkah

  1. Stop terlebih dahulu, service proxy milik zimbra, yang itu dia menggunakan port 80. Jika tidak distop, maka certbot tidak akan bisa menjalankan webserver nginx sebagai media validasi kepemilikan domain. Stop sebagai user zimbra menggunakan perintah: zmproxyctl stop
  2. Jalankan certbot beserta flag-flag yang diperlukan. Misalnya berikut ini:
1
certbot --nginx -q -d mail.mydomain.tld
  1. Jika berhasil, buatlah direktori baru pada /opt/zimbra (atau ditempat yang lain yang bisa diakses oleh user zimbra) misalnya /opt/zimbra/ssl/mycerts
  2. Salin semua file-file SSL yang dibutuhkan dari folder /etc/letsencrypt/live/mail.mydomain.tld ke folder yang barusaja dibuat sebelumnya.
  3. Jika diperlukan, backup private key di folder /opt/zimbra/ssl/commercial/commercial.key pada suatu folder lain.
  4. Timpa file commercial.key yang asli tersebut tersebut dengan private key dari LetsEncrypt di /etc/letsencrypt/live/mail.mydomain.tld/privkey.pem. Bisa menggunakan command berikut:
1
2
3
install --user zimbra --group zimbra \
    /etc/letsencrypt/live/mail.mydomain.tld/privkey.pem \
    /opt/zimbra/ssl/commercial/commercial.key
  1. Setelah itu, jalankan perintah zmcertmgr sebagai user zimbra berikut:
1
2
3
zmcertmgr deploycrt comm <certificate> <ca-bundle>
# misal
zmcertmgr deploycrt comm /opt/zimbra/ssl/mycerts/fullchain.pem /opt/zimbra/ssl/mycerts/chain.pem
  1. Begitu selesai, restart zimbra services:
1
zmcontrol restart
  1. Selesai.

Akhir kata

Langkah-langkah diatas bisa Anda buatkan scriptnya agar bisa dijalankan secara praktis via cronjob.

Atau, Anda bisa menggunakan script buatan saya yang bernama zimbra-autossl.sh di sini: https://github.com/annahri/zimbra-autossl

Penjelasan mengenai script tersebut sudah ada di repositori terkait. Pada intinya proses yang ada pada script tersebut, sesuai dengan garis besar yang sudah dijelaskan diatas.

Semoga bermanfaat, _barakallahufiikum