
SNI atau Server Name Indication adalah fitur tambahan dari protokol TLS/SSL yang memungkinkan penggunaan beberapa sertifikat SSL pada satu alamat IP yang dibagi (shared IP address). SNI memungkinkan server untuk meng-host beberapa sertifikat SSL pada satu alamat IP, yang sangat berguna dalam pengaturan multi-domain. Zimbra sendiri sudah mendukung fitur SNI sejak versi rilis 8.7.
Umumnya, browser web modern sudah mendukung fitur SNI ini. Namun, Anda tetap harus waspada karena ada beberapa browser yang belum atau tidak mendukung fitur SNI, terutama pada browser versi lawas. Jika browser web Anda belum atau tidak mendukung fitur SNI, maka pesan peringatan akan muncul ketika Anda mencoba mengakses halaman web yang menggunakan fitur tersebut.
Persiapan
Sebelum proses instalasi dapat dilakukan, ada beberapa hal yang perlu Anda siapkan.
- SSL Sertifikat yang valid.
Gunakanopenssluntuk memeriksanya, dan pastikan sertifikatnya belum kedaluwarsa.(root)# openssl x509 -noout -in SERVER.crt -dates
notBefore=Apr 22 08:44:58 2025 GMT
notAfter=Apr 22 08:44:58 2026 GMT - SSL private key tidak boleh terenkripsi.
Untuk memeriksanya, jalankan perintah di bawah ini! Jika Anda diminta untuk memasukkan kata sandi, maka private key Anda masih dalam keadaan terenkripsi.
Untuk menghilangkan enkripsi dari private key, anda perlu menjalankan perintah di bawah ini!(root)# openssl rsa -noout -modulus -in PRIV.key(root)# openssl rsa -in PRIV.key -out PRIV-PWLESS.key - SSL private key harus dalam format RSA.
Periksa header dan footer dari key. Jika bentuknya bukan seperti ini:
Maka anda perlu memformatnya ke dalam format RSA dengan perintah di bawah ini!(root)# sed -n '1p;$p' PRIV-PWLESS.key
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----(root)# openssl rsa -in PRIV.key -out PRIV-PWLESS-RSA.key -traditional - Certificate authority.
Beberapa penyedia biasanya menyertakan file Certificate Authority dalam arsip SSL. Namun, ada juga beberapa penyedia yang tidak menyertakannya. Jika Anda tidak memiliki file ini, maka Anda harus membuatnya sendiri.
File Certificate Authority berisi informasi tentang penyedia sertifikat SSL yang Anda miliki. Anda dapat membuatnya dengan menggabungkan Intermediate dan Root CA.(root)# cat INTERMEDIATE.crt ROOTCA.crt > CA.crt - Domain Virtual Host.
Agar fitur SNI dapat berfungsi, kita perlu memberi tahu Zimbra kapan SNI harus diaktifkan. Oleh karena itu, kita perlu mengonfigurasi virtual host untuk domain yang ingin kita aktifkan fitur SNI-nya.
Ketika user mengakses “ZMAIL.DOMAIN.COM” maka Zimbra akan secara otomatis mengaktifkan fitur SNI untuk address tersebut.(zimbra)$ zmprov ma DOMAIN.COM zimbraVirtualHostName ZMAIL.DOMAIN.COM - Kumpulkan semua file yang diperlukan di dalam satu folder yang dapat diakses oleh user zimbra.
Instalasi SSL SNI
- Aktifkan fitur SNI di Zimbra.
(zimbra)$ zmprov mcf zimbraReverseProxySNIEnabled TRUE - Verifikasi sertifikat SSL match dengan key-nya.
(zimbra)$ /opt/zimbra/bin/zmcertmgr verifycrt comm PRIV-PWLESS-RSA.key SERVER.crt CA.crt
** Verifying 'SERVER.crt' against 'PRIV-PWLESS-RSA.key'
Certificate 'SERVER.crt' and private key 'PRIV-PWLESS-RSA.key' match.
** Verifying 'SERVER.crt' against 'CA.crt'
Valid certificate chain: SERVER.crt: OK - Buat sertifikat bundle.
Untuk membuat SSL bundle, Anda memerlukan sertifikat server yang dikeluarkan oleh Certificate Authority (CA), serta sertifikat Intermediate yang menghubungkan sertifikat server dengan sertifikat Root CA. Pastikan urutan sertifikat dalam bundle adalah sertifikat server diikuti oleh sertifikat Intermediate dan, jika diperlukan, sertifikat Root CA.(zimbra)$ cat SERVER.crt CA.crt > CA-BUNDLE.crt - Periksa urutan sertifikat.
Penyebab paling umum gagalnya proses deploy sertifikat SSL adalah karena salah urutan. Pastikan urutan bundle sudah benar dengan perintah di bawah!.
Dari contoh output di atas, dapat anda perhatikan urutan sertifikat yang benar akan menghasilkan value “issuer” yang sama dengan value “subject” dari urutan setelahnya.(zimbra)$ openssl crl2pkcs7 -nocrl -certfile CA-BUNDLE.crt | openssl pkcs7 -print_certs -noout
subject=C = ID, L = Buitenzorg, O = Failliet Oostindische Compagnie, CN = ZMAIL.DOMAIN.COM
issuer=C = ID, O = DigiMon Inc, CN = Digital Monster Global TLS SHA256 2025 CA1
subject=C = ID, O = DigiMon Inc, CN = Digital Monster Global TLS SHA256 2025 CA1
issuer=C = ID, O = DigiMon Inc, OU = www.digimon.py, CN = Digital Monster Root G3
subject=C = ID, O = DigiMon Inc, OU = www.digimon.py, CN = Digital Monster Root G3
issuer=C = ID, O = DigiMon Inc, OU = www.digimon.py, CN = Digital Monster Root G3 - Install SSL untuk domain terkait.
(zimbra)$ /opt/zimbra/libexec/zmdomaincertmgr savecrt DOMAIN.COM CA-BUNDLE.crt PRIV-PWLESS-RSA.key - Deploy SSL.
(zimbra)$ /opt/zimbra/libexec/zmdomaincertmgr deploycrts
** Deploying cert for DOMAIN.COM...done. - Restart proxy service.
(zimbra)$ zmproxyctl restart
Test
Jika anda tidak menemukan error apapun selama proses instalasi, artinya SSL SNI sudah berhasil ter-deploy. Anda bisa membuka halaman virtual host dengan menggunakan web browser yang sudah mendukung fitur SNI.
