Let’s Encrypt SSL
9 min read
Salah satu hal penting yang harus kita perhatikan saat menghosting aplikasi produksi adalah memastikan keamanannya. Pendekatan paling dasar dan umum untuk pertukaran data yang aman adalah dengan mengenkripsi lalu lintas aplikasi menggunakan protokol HTTPS.
Selain itu, sejak 1 Januari 2017, salah satu browser paling populer — Google Chrome — mulai menandai semua halaman web yang meminta pengisian kata sandi atau detail kartu kredit tetapi tidak diamankan dengan SSL sebagai tidak aman. Perubahan ini membuat integrasi enkripsi menjadi semakin penting.
Namun, menerbitkan dan mengkonfigurasi sertifikat SSL khusus untuk sebuah proyek bisa menjadi tugas yang cukup rumit dan memakan waktu. Let’s Encrypt (LE) adalah otoritas sertifikat yang gratis dan terbuka, yang memungkinkan proses integrasi sertifikat SSL terpercaya menjadi jauh lebih sederhana dan otomatis.

Tren umum dalam dunia web yang berpindah ke HTTPS mendorong pentingnya otomatisasi penuh dalam proses penerbitan dan penerapan sertifikat SSL kustom. Oleh karena itu, para pengembang Jelastic telah melakukan pekerjaan besar dengan mengemas layanan Let’s Encrypt menggunakan Cloud Scripting, untuk menghadirkan solusi yang memungkinkan pengguna tidak perlu lagi memperbarui sertifikat secara manual secara berkala.
Keunggulan utama dari solusi ini adalah integrasi bawaan (out-of-the-box) dengan berbagai stack load balancer dan application server paling populer. Dengan begitu, sebagian besar aplikasi yang berjalan di Jelastic dapat diamankan secara gratis dan mudah.
Solusi ini disediakan dalam bentuk add-on yang bisa langsung diinstal ke container mana pun yang sudah mendukung Custom SSL, khususnya server berikut (daftar ini terus diperbarui):
- Load Balancer : NGINX, Apache LB, HAProxy, Varnish
- Application Server Java : Tomcat, TomEE, GlassFish, Payara, Jetty
- Application Server PHP : Apache PHP, NGINX PHP
- Application Server Ruby : Apache Ruby, NGINX Ruby
Jika kamu membutuhkan sertifikat Let’s Encrypt untuk stack lain, cukup tambahkan load balancer di depan application server Kamu, lalu instal add-on-nya. Secara default, terminasi SSL dilakukan di level load balancer pada topologi yang sudah ter-cluster.
How it Works #
Selama proses instalasi, add-on akan mengunduh dan mengkonfigurasi klien Let’s Encrypt (yang disebut sebagai certificate management agent atau CMA), lalu meminta sertifikat dari Certificate Authority (CA) Let’s Encrypt, menerapkan sertifikat yang diterbitkan ke stack perangkat lunak yang sedang berjalan sesuai dengan spesifikasi integrasi SSL-nya, dan menambahkan cron job khusus untuk memperbarui sertifikat secara otomatis ketika masa berlakunya hampir habis.
Domain Control Validation #
Saat permintaan penerbitan sertifikat dilakukan, pihak Let’s Encrypt CA akan memeriksa titik masuk (entry point) environment melalui port 80 untuk membuktikan bahwa web server benar-benar mengendalikan domain yang diminta. Dalam proses validasi ini, seluruh trafik HTTP yang masuk akan secara internal diarahkan ke port 12345 di mana CMA proxy dijalankan.
Jika lapisan (layer) tersebut terdiri dari beberapa node sejenis (misalnya beberapa server NGINX), maka selama periode pembaruan sertifikat, semua trafik HTTP yang masuk juga akan diarahkan ke master node, tempat CMA proxy aktif. Hal ini dicapai dengan menambahkan aturan routing sementara menggunakan DNAT, agar permintaan validasi domain bisa ditangani oleh CMA secara langsung.

Karena pengalihan ini hanya dibutuhkan selama proses validasi domain, maka pengaturan DNAT khusus tersebut akan dihapus segera setelah kesesuaian hostname berhasil dikonfirmasi.
Setelah validasi domain berhasil, CMA akan mendapatkan izin untuk meminta, memperbarui, dan mencabut sertifikat SSL untuk domain yang ditentukan. Secara otomatis, CMA akan membuat pasangan kunci SSL yang sesuai. Hasilnya, sertifikat yang diterbitkan akan disebarkan ke semua node di dalam lapisan entry point melalui Jelastic API, sehingga aplikasi akan dikonfigurasi dengan benar untuk digunakan melalui protokol HTTPS.
Meskipun penjelasannya panjang, semua operasi ini hanya memerlukan waktu beberapa menit saja. Sekarang, mari kita lihat cara memulai proses instalasi add-on Let’s Encrypt.
Lets Encrypt SSL Add-On Installation #
Untuk mendapatkan sertifikat SSL untuk hostname environment kamu, lakukan langkah-langkah berikut:
1. Masuk ke dashboard Jagoan Cloud, lalu klik menu Marketplace di bagian atas halaman.

Klik Install untuk melanjutkan
2. Setelah data yang dibutuhkan dimuat, Kamu akan melihat jendela instalasi add-on Let’s Encrypt SSL.
Di sini, Kamu perlu :
- Mengisi kol om External Domain(s) dari environment yang ingin diamankan, dengan opsi berikut:
- Biarkan kosong jika kamu hanya ingin membuat dummy SSL certificate yang akan ditugaskan ke URL internal environment (misalnya: env_name.{hoster_domain}), biasanya untuk keperluan pengujian.
- Isi dengan domain eksternal yang sudah kamu hubungkan sebelumnya ke environment tersebut, agar bisa mendapatkan sertifikat SSL yang dipercaya (trusted). Jika ingin menambahkan lebih dari satu domain, pisahkan nama domain tersebut dengan spasi, koma, atau titik koma.

- Pilih Environment name yang sesuai dari daftar drop-down yang bisa diperluas.
- Pilih layer Nodes tempat entry point environment Kamu berada (biasanya akan terdeteksi otomatis oleh add-on, tapi bisa Kamu atur ulang secara manual jika perlu).
Terakhir, klik Install untuk memulai proses instalasi sertifikat SSL yang sesuai.
📝 NOTE
Add-on ini memerlukan alamat IP public agar dapat berfungsi dengan benar. Jadi, jika entry point pada environment Kamu belum memiliki IP public, maka sistem akan menambahkannya secara otomatis selama proses instalasi.Perlu diperhatikan bahwa Public IP merupakan opsi berbayar, dimana informasi biayanya bisa kamu lihat di bagian Quotas & Pricing pada dashboard.
3. Proses instalasi mungkin memakan waktu beberapa menit untuk memvalidasi kepemilikan domain, menerbitkan sertifikat dari Let’s Encrypt, dan mengaplikasikannya. Setelah selesai, Kamu bisa masuk ke Settings > Custom SSL pada environment-mu untuk memeriksa apakah dukungan HTTPS sudah aktif, serta melihat tanggal expired sertifikat tersebut.

4. Kamu juga bisa memastikan semuanya berjalan sesuai rencana dengan mencoba membuka aplikasi menggunakan protokol HTTPS di browser kamu. Jika aplikasi terbuka tanpa error keamanan, berarti sertifikat SSL berhasil diterapkan dan koneksi ke aplikasi sekarang aman.

Seperti yang kamu lihat, environment dapat diakses dan koneksi yang terjalin sudah aman serta dipercaya oleh browser.
Add-On Installation via API #
Sebagai alternatif, add-on Let’s Encrypt SSL juga bisa diinstal menggunakan metode API Jelastic dengan endpoint install. Pemanggilan API-nya kira-kira seperti ini:
https://[hoster-api-host]/1.0/marketplace/jps/rest/install?jps=letsencrypt-ssl-addon&session={session}&envName={your_env_name}&nodeGroup={your_node_group}&settings={your_addon_settings}
Keterangan untuk parameter di atas :
- {session}: Token sesi atau autentikasi pengguna.
- {your_env_name}: Nama environment yang ingin dipasang SSL-nya.
- {your_node_group}: ID unik dari grup node tempat add-on akan dipasang.
- {your_addon_settings}: Setting khusus untuk add-on dalam format JSON (key:value).
Setting yang tersedia :
- customDomains : Nama domain eksternal yang akan dilindungi oleh sertifikat SSL. Jika lebih dari satu, pisahkan dengan koma atau titik koma. Kosongkan untuk membuat sertifikat dummy X1 (hanya untuk testing).
- nodeGroup (opsional) : Grup node di environment tempat add-on akan dipasang (default: dari add-on).
- nodeId (opsional) : ID node tertentu di environment.
- webroot (opsional) : Gunakan metode “webroot” untuk validasi domain (default: false).
- webrootPath (opsional) : Path direktori untuk validasi webroot (digunakan jika webroot=true).
- fallbackToX1 (opsional) : Gunakan sertifikat dummy dari server staging jika penerbitan sertifikat X3 gagal (default: false).
- deployHook (opsional) : Skrip atau URL yang dijalankan setelah sertifikat berhasil diperoleh.
- deployHookType (opsional) : Tipe skrip bash atau js (default: js).
- undeployHook (opsional) : Skrip atau URL yang dijalankan setelah uninstall add-on.
- undeployHookType (opsional) : Tipe skrip bash atau js (default: js).
- test (opsional) : Peroleh sertifikat dummy X1 dari server staging (default: false).
Sebagai contohnya seperti berikut :
curl -X POST 'https://app.demo.jelastic.com/1.0/marketplace/jps/rest/install' \ -d session=dedb4acdedb4acdedb4ac4dedb4ace370e0b03 \ -d jps=letsencrypt-ssl-addon \ -d envName=application \ -d nodeGroup=cp \ --data-urlencode settings='{"customDomains":"application.mycustom-domain.com"}'
Let’s Encrypt Certificates Updates #
Sertifikat SSL Let’s Encrypt Kamu akan berlaku selama 90 hari. Setelah itu, sertifikat perlu diperbarui agar enkripsi tetap aktif.
Secara default, sistem akan meminta dan menerapkan sertifikat yang diperbarui secara otomatis mulai 30 hari sebelum expired, mengirimkan email notifikasi kepada Kamu, dan melakukan pengecekan setiap hari menggunakan cron job. Jika kamu ingin, waktu pengecekan bisa diatur secara manual dengan mengubah pengaturan berikut di file manifest paket add-on:
"cronTime": "0 ${fn.random(1,6)} * * *"

Selain itu, sertifikat SSL Kamu juga bisa diperbarui dengan cara menginstal ulang add-on untuk nama domain yang sama. Dengan demikian, menambahkan nama domain baru atau menentukan nama domain yang berbeda selama proses ini akan menyebabkan penggantian lengkap sertifikat yang digunakan.
Certificates Update via API #
Sama seperti saat instalasi Add-On, sertifikat SSL juga bisa diperbarui menggunakan panggilan API dengan metode executeappaction.
https://[hoster-api-host]/1.0/marketplace/jps/rest/executeappaction?session={session}&appUniqueName={app_unique_name}&action=update
Penjelasan parameter :
- {session} : token sesi atau autentikasi pengguna.
- {app_unique_name} : nama unik dari add-on yang sudah terinstal. Nilai ini bisa kamu dapatkan dari respon GetEnvInfo, pada bagian uniqueName.
Contohnya sebagai berikut :
curl -X POST 'https://app.demo.jelastic.com/1.0/marketplace/jps/rest/executeappaction' \ -d session=dedb4acdedb4acdedb4ac4dedb4ace370e0b03 \ -d appUniqueName=f56f5659-f4ff-42fd-8955-1f9a750abcd9 \ -d action=update
Lets Encrypt Certificates Reconfiguration #
Jika diperlukan, add-on Let’s Encrypt Free SSL yang sudah ada dapat disesuaikan untuk memenuhi kebutuhan baru. Cukup klik tombol Configure di panel Let’s Encrypt.

Lalu, di jendela popup yang muncul, Kamu bisa mengubah Domain Eksternal atau menghapus salah satu domain yang terdaftar (misalnya jika kamu mengalami masalah saat menetapkan sertifikat SSL ke domain tersebut).

📝 NOTE
Untuk menghindari masalah keamanan, sertifikat baru akan diterbitkan, bahkan jika hanya menghapus nama domain dari sertifikat yang sudah ada.
Let’s Encrypt Certificates Reconfiguration via API #
https://[hoster-api-host]/1.0/marketplace/jps/rest/executeappaction
- session – Token sesi autentikasi pengguna.
- appUniqueName – Nama unik dari add-on yang telah diinstal. Bisa didapat dari respons metode GetEnvInfo, kunci uniqueName.
- action=configure – Aksi untuk mengubah konfigurasi add-on.
- params={“customDomains”:”{your_new_domain_list}”} – Parameter konfigurasi baru, berisi daftar domain eksternal yang ingin kamu amankan menggunakan sertifikat SSL. Jika ada beberapa domain, pisahkan dengan koma atau titik koma.
Contoh Penggunaan CURL:
curl -X POST 'https://app.demo.jelastic.com/1.0/marketplace/jps/rest/executeappaction' \ -d session=dedb4acdedb4acdedb4ac4dedb4ace370e0b03 \ -d appUniqueName=f56f5659-f4ff-42fd-8955-1f9a750abcd9 \ -d action=configure \ --data-urlencode params='{"customDomains":"sub.example.com"}'
Let’s Encrypt SSL Add-On Removal #
Jika perlu, add-on Let’s Encrypt SSL dapat dengan mudah dihapus dari environment kamu. Cukup buka tab Add-ons, lalu klik panah opsi di pojok kanan atas pada panel Let’s Encrypt SSL, kemudian pilih Uninstall dari daftar yang muncul.

Dengan begitu, sertifikat SSL yang telah dipasang akan dihapus, dan koneksi HTTPS tidak lagi aktif untuk domain yang terkait.
Selesai! Sekarang Kamu sudah tahu cara menginstal dan mengelola add-on Let’s Encrypt untuk konfigurasi SSL kustom secara otomatis di environment kamu. Dengan begitu, kamu bisa melindungi hampir semua aplikasi dengan cepat, gratis, dan tanpa banyak usaha. Langsung coba sekarang di salah satu penyedia layanan Jelastic PaaS.
Powered by BetterDocs
