bg-tutorials

Cara Menginstal Sertifikat SSL di Heroku

Panduan ini menunjukkan kepada Anda cara menginstal sertifikat SSL di Heroku. Panduan ini mencakup kedua cara yang digunakan Heroku untuk mengakhiri TLS saat ini: Automated Certificate Management (ACM), yang menyediakan dan memperbarui sertifikat Let’s Encrypt gratis untuk Anda, serta unggah manual sertifikat pihak ketiga melalui dashboard atau Heroku CLI.

Beberapa hal yang perlu diketahui sebelum Anda mulai. Add-on lama Heroku SSL Endpoint (produk berbayar $20/bulan) telah usang sejak 2021 dan tidak dapat lagi disediakan pada aplikasi baru. Setiap penerapan HTTPS baru menggunakan Heroku SSL, yang mengandalkan ekstensi SNI (Server Name Indication) dan sudah termasuk tanpa biaya tambahan pada setiap tingkatan dyno berbayar. Dyno gratis dihentikan pada 28 November 2022, sehingga Anda memerlukan paket Eco, Basic, Standard, atau Performance untuk melampirkan domain khusus dan melayani HTTPS.

Membuat CSR (untuk sertifikat yang diunggah secara manual)

Jika Anda sudah membuat CSR dan menerima sertifikat yang diterbitkan dari Certificate Authority Anda, lanjutkan ke Menginstal sertifikat SSL di Heroku.

Anda hanya membutuhkan CSR jika membeli sertifikat pihak ketiga untuk diunggah secara manual. Jika Anda berencana menggunakan ACM, Anda dapat melewati bagian ini sepenuhnya: ACM menerbitkan sertifikat untuk Anda dan tidak ada CSR yang perlu diserahkan.

CSR (Certificate Signing Request) adalah blok teks yang Anda serahkan ke Certificate Authority saat memesan. CSR memuat detail domain dan organisasi Anda serta kunci publik yang menjadi dasar penerbitan sertifikat. Heroku tidak membuat CSR di platform itu sendiri, sehingga Anda perlu membuat permintaan tersebut di luar platform. Anda memiliki dua opsi:

  • Gunakan CSR Generator dari SSL Dragon, yang menghasilkan CSR dan private key yang sesuai dari formulir singkat.
  • Buat permintaan secara lokal dengan OpenSSL dengan mengikuti tutorial kami tentang cara membuat CSR untuk Heroku.

Buka file .csr yang dihasilkan di editor teks apa pun dan salin seluruh blok, termasuk penanda —–BEGIN CERTIFICATE REQUEST—– dan —–END CERTIFICATE REQUEST—–, lalu tempelkan saat Anda melakukan pemesanan di SSL Dragon. Tunggu hingga CA memvalidasi dan menerbitkan sertifikat (mulai dari beberapa menit untuk DV hingga beberapa hari kerja untuk OV/EV) dan lanjutkan dengan instalasi di bawah ini.

Menginstal sertifikat SSL di Heroku

Heroku memberi Anda dua jalur menuju HTTPS. Pilih yang sesuai dengan cara Anda memperoleh sertifikat:

  • ACM (direkomendasikan untuk sebagian besar aplikasi). Heroku menerbitkan, menginstal, dan secara otomatis memperbarui sertifikat Let’s Encrypt gratis untuk setiap domain khusus pada aplikasi tersebut. Tidak ada file yang perlu diunggah, tidak ada kalender pembaruan. Tersedia pada dyno Eco, Basic, Standard, dan Performance.
  • Unggah manual. Gunakan ini jika Anda memerlukan sertifikat pihak ketiga tertentu (misalnya, produk Organization Validated atau Extended Validation, atau sertifikat wildcard dari CA selain Let’s Encrypt). Anda mengunggah sertifikat dan private key sendiri melalui dashboard atau CLI.

Langkah 1. Tambahkan domain khusus Anda ke aplikasi

Heroku tidak akan menyediakan sertifikat apa pun (ACM maupun manual) sampai domain khusus Anda terdaftar pada aplikasi tersebut. Dari terminal dengan akses tinggi, jalankan:

heroku domains:add www.example.com -a your-app-name

Ganti www.example.com dengan domain Anda dan your-app-name dengan aplikasi Heroku Anda. Ulangi perintah tersebut untuk hostname tambahan lainnya (misalnya domain root polos atau subdomain kedua). Anda juga dapat menambahkan domain dari dashboard di bawah Settings > Domains and certificates > Add domain.

Setiap domain yang Anda tambahkan akan dikembalikan bersama dengan DNS target unik, misalnya quiet-fire-1234.herokudns.com. Anda akan membutuhkan nilai ini saat memperbarui DNS pada Langkah 3.

Langkah 2. Menyediakan sertifikat

Opsi A: ACM (Let’s Encrypt gratis, otomatis diperbarui)

Aktifkan ACM untuk aplikasi dari CLI:

heroku certs:auto:enable -a your-app-name

Heroku mulai menerbitkan sertifikat Let’s Encrypt untuk setiap domain khusus pada aplikasi tersebut. Untuk memantau prosesnya dan memastikan statusnya, jalankan:

heroku certs:auto -a your-app-name

Anda juga dapat mengaktifkan ACM dari dashboard: buka aplikasi, buka Settings > Domains and certificates, klik Configure SSL, pilih Automated Certificate Management, lalu Continue. Setelah DNS terpasang (Langkah 3), ACM menyelesaikan validasi domain dan sertifikat aktif. Pembaruan terjadi secara otomatis sekitar satu bulan sebelum masa berlakunya berakhir.

Opsi B: unggah manual sertifikat pihak ketiga

CA mengirimkan tiga file ke kotak masuk Anda:

  • Sertifikat end-entity, biasanya dengan ekstensi .crt (format PEM).
  • Bundel CA (sertifikat perantara), sering dengan ekstensi .ca-bundle.
  • Private key yang dibuat bersamaan dengan CSR (file .key).

Heroku mengharapkan satu file PEM tunggal yang berisi sertifikat end-entity diikuti oleh sertifikat perantara (fullchain). Di Linux atau macOS, gabungkan dengan cat:

cat yourcertificate.crt bundle.ca-bundle > server.crt

Di Windows, buka kedua file di editor teks biasa (Notepad++ atau VS Code, bukan Word) dan tempelkan isi .ca-bundle di bawah isi .crt, dalam urutan tersebut, tanpa baris kosong di antara blok. Simpan file gabungan sebagai server.crt.

Unggah fullchain dan private key dengan Heroku CLI:

heroku certs:add server.crt server.key -a your-app-name

Jika Anda menggantikan sertifikat yang sudah ada pada aplikasi (misalnya, saat memperbarui), gunakan certs:update agar Heroku tetap mempertahankan DNS target yang sama:

heroku certs:update server.crt server.key -a your-app-name

Lebih memilih dashboard? Buka aplikasi, buka Settings > Domains and certificates, klik Configure SSL, pilih Manually, lalu seret server.crt gabungan ke slot sertifikat dan file .key ke slot private key. Klik Next dan konfirmasi.

Jika Anda melihat Internal server error saat mengunggah, kemungkinan besar Heroku CLI lokal Anda sudah usang. Perbarui dengan heroku update dan coba lagi. Heroku juga mensyaratkan RSA key; ECDSA key belum didukung untuk unggahan manual saat ini.

Langkah 3. Arahkan DNS ke DNS target Heroku

Terlepas dari metode penyediaan yang digunakan, sertifikat hanya akan aktif setelah DNS untuk domain khusus tersebut mengarah ke Heroku. Daftar domain Anda dan salin DNS target yang dikembalikan oleh Heroku:

heroku domains -a your-app-name

Anda akan melihat nilai seperti quiet-fire-1234.herokudns.com di samping setiap domain. Di penyedia DNS Anda, buat satu record untuk setiap domain:

  • Subdomain (misalnya www.example.com): buat record CNAME yang mengarah ke DNS target Heroku.
  • Domain apex / root (misalnya example.com): CNAME tidak diperbolehkan pada apex sesuai spesifikasi DNS, jadi gunakan record ALIAS, ANAME, atau flattened-CNAME (nama pasti bergantung pada penyedia DNS Anda) yang mengarah ke DNS target Heroku yang sama. Jika penyedia DNS Anda tidak mendukung salah satu dari ini, gunakan layanan hosting DNS yang mendukungnya (Cloudflare, DNSimple, Route 53, NS1, easyDNS, dll.).

Jangan mengarahkan DNS ke your-app-name.herokuapp.com atau ke hostname *.herokussl.com apa pun: ACM tidak dapat memvalidasi sertifikat melalui itu, dan binding manual pun tidak akan mengarahkan dengan benar. Selalu gunakan DNS target per-domain yang ditetapkan oleh Heroku.

Perubahan DNS dapat memerlukan waktu beberapa menit hingga beberapa jam untuk menyebar. Setelah Heroku melihat record yang telah diperbarui, ACM menyelesaikan validasi secara otomatis (atau sertifikat manual Anda mulai melayani trafik).

Langkah 4. Verifikasi bahwa sertifikat sudah aktif

Konfirmasikan instalasi dari CLI:

heroku certs:info -a your-app-name

Output tersebut menampilkan sertifikat, CA penerbit, tanggal kedaluwarsa, dan domain yang dicakupnya. Kemudian buka situs Anda melalui https:// di browser dan periksa apakah ikon gembok muncul, serta jalankan pemeriksaan eksternal yang lebih mendalam dengan SSL Checker kami untuk memastikan bahwa chain sertifikat lengkap dan protokolnya dikonfigurasi dengan benar.

Pertanyaan yang Sering Diajukan

Apakah saya masih membutuhkan add-on SSL Endpoint di Heroku?

Tidak. Add-on lama SSL Endpoint telah usang sejak 2021 (penyediaan baru dihentikan pada 14 Mei 2021) dan mencapai akhir masa pakainya pada tahun yang sama. Setiap aplikasi baru menggunakan Heroku SSL dengan SNI, yang sudah termasuk gratis pada setiap tingkatan dyno berbayar. SSL Endpoint yang sudah ada pada aplikasi yang berjalan lama tetap berfungsi, tetapi Heroku merekomendasikan untuk memigrasikannya ke Heroku SSL.

ACM atau unggah manual: mana yang harus saya gunakan?

Gunakan ACM kecuali Anda memiliki alasan khusus untuk tidak melakukannya. Layanan ini gratis, secara otomatis memperbarui setiap sertifikat sekitar satu bulan sebelum kedaluwarsa, dan menghilangkan kebutuhan kalender pembaruan dari tim Anda. Pilih unggah manual jika Anda memerlukan sertifikat Domain Validated, Organization Validated, atau Extended Validation dari CA tertentu, sertifikat wildcard, atau sertifikat multi-domain (SAN) yang mencakup hostname yang tidak semuanya berada pada aplikasi Heroku ini.

Bisakah saya menginstal SSL pada dyno Heroku gratis?

Tidak. Dyno gratis dihentikan pada 28 November 2022. Domain khusus dan SSL (baik ACM maupun manual) memerlukan paket berbayar: Eco, Basic, Standard, atau Performance. Per November 2025, sertifikat ACM dan manual keduanya didukung pada dyno Eco, yang merupakan jalur berbiaya paling rendah untuk mendapatkan HTTPS pada domain khusus.

Mengapa domain khusus saya masih menampilkan sertifikat default Heroku?

Ada dua penyebab umum. Pertama, DNS masih mengarah ke *.herokuapp.com bukan ke DNS target per-domain yang ditetapkan oleh Heroku (seperti quiet-fire-1234.herokudns.com). Periksa kembali record tersebut di penyedia DNS Anda dan perbarui. Kedua, DNS sudah diubah tetapi penyebarannya belum selesai; tunggu beberapa menit hingga beberapa jam, lalu jalankan heroku certs:info -a your-app-name untuk memastikan.

Bagaimana cara memperbarui sertifikat SSL di Heroku?

Dengan ACM, Anda tidak perlu melakukannya: Heroku menerbitkan ulang sertifikat dari Let’s Encrypt secara otomatis, kira-kira satu bulan sebelum kedaluwarsa. Dengan sertifikat manual, pesan pembaruan (membuat CSR baru), buat file fullchain baru, dan jalankan heroku certs:update server.crt server.key -a your-app-name. Menggunakan certs:update daripada certs:add menjaga DNS target yang sudah ada sehingga Anda tidak perlu menyentuh DNS lagi. Sertifikat SSL/TLS publik saat ini dibatasi sekitar satu tahun, jadi rencanakan untuk mengulangi ini setiap tahun jika Anda tetap menggunakan unggah manual, atau beralih ke ACM dan biarkan Heroku menanganinya.

Mengapa saya mendapatkan “Internal server error” saat menjalankan heroku certs:add?

Hampir selalu karena Heroku CLI yang sudah usang. Jalankan heroku update untuk memperbarui ke versi terbaru, lalu coba jalankan perintah tersebut kembali. Jika error masih terjadi, pastikan file sertifikat berupa fullchain dalam format PEM (end-entity terlebih dahulu, sertifikat perantara setelahnya) dan bahwa private key merupakan RSA key yang sesuai dengan CSR yang Anda serahkan ke CA.

Hemat 10% untuk Sertifikat SSL saat memesan hari ini!

Penerbitan cepat, enkripsi kuat, kepercayaan peramban 99,99%, dukungan khusus, dan jaminan uang kembali 25 hari. Kode kupon: SAVE10

Ditulis oleh

Penulis konten berpengalaman yang berspesialisasi dalam Sertifikat SSL. Mengubah topik keamanan siber yang rumit menjadi konten yang jelas dan menarik. Berkontribusi untuk meningkatkan keamanan digital melalui narasi yang berdampak.