Dalam tutorial ini, Anda akan mempelajari cara menginstal sertifikat SSL di Node.js menggunakan modul bawaan https. Berbeda dengan server web seperti Apache atau Nginx, Node.js memuat sertifikat, kunci privat, dan rantai CA Anda langsung di dalam JavaScript, sehingga “instalasi” terjadi di dalam kode aplikasi Anda.
Membuat kode CSR di Node.js
Jika Anda belum mengajukan permohonan sertifikat SSL, Anda perlu membuat CSR (Certificate Signing Request) terlebih dahulu. CSR adalah blok teks terenkode kecil yang berisi detail kontak dan kunci publik Anda, dan Anda mengirimkannya ke Certificate Authority saat memesan. Anda memiliki dua opsi:
- Buat CSR secara otomatis menggunakan CSR Generator kami.
- Ikuti tutorial langkah demi langkah kami tentang cara membuat CSR di Node.js.
Kirimkan CSR ke Certificate Authority saat melakukan pemesanan. Setelah CA memvalidasinya dan menerbitkan sertifikat SSL Anda, lanjutkan dengan instalasi di bawah ini.
Menginstal sertifikat SSL di Node.js
Langkah 1: Siapkan berkas sertifikat Anda
Setelah validasi, Certificate Authority akan mengirimkan berkas sertifikat melalui email. Ekstrak arsip tersebut. Anda seharusnya memiliki:
- yourdomain.crt, sertifikat domain utama Anda.
- yourdomain.ca-bundle, sertifikat perantara (dan root) yang membentuk CA bundle.
- yourdomain.key, kunci privat yang Anda buat bersamaan dengan CSR.
Peramban harus menerima rantai perantara, bukan hanya sertifikat domain Anda, atau beberapa klien akan menolak koneksi tersebut. Cara paling bersih untuk menyajikan rantai di Node.js adalah dengan menggabungkan sertifikat dan CA bundle Anda menjadi satu berkas full-chain:
cat yourdomain.crt yourdomain.ca-bundle > fullchain.crt
Letakkan berkas fullchain.crt dan yourdomain.key di lokasi yang dapat dibaca oleh aplikasi Anda, dan pastikan kunci privat hanya dapat dibaca oleh pengguna yang menjalankan Node.js.
Langkah 2: Buat server HTTPS di Node.js
Buat berkas server. Untuk demonstrasi ini kita menamainya https_server.js, tetapi Anda dapat menggunakan nama berkas apa pun. Contoh di bawah ini menggunakan CommonJS (require), yang berfungsi di setiap versi Node.js yang didukung. Ganti jalur yang dicetak tebal dengan milik Anda sendiri:
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
// Recommended TLS hardening (2026): never negotiate below TLS 1.2
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
Anda perlu mengganti bagian yang dicetak tebal dengan informasi Anda sendiri:
- /path/to/private.key: jalur lengkap ke berkas kunci privat Anda.
- /path/to/fullchain.crt: jalur lengkap ke berkas full-chain yang Anda buat di Langkah 1.
Catatan tentang port: HTTPS menggunakan port 443 secara default. Melakukan binding ke port tersebut memerlukan hak akses yang lebih tinggi, sehingga di balik reverse proxy atau dalam pengembangan Anda mungkin lebih memilih port tinggi seperti 8443. Cukup ubah nilai yang diteruskan ke listen().
Lebih memilih modul ES? Jika proyek Anda menggunakan "type": "module" di package.json (atau berkas .mjs), gunakan sintaks import sebagai gantinya. Opsi TLS-nya identik:
import https from 'node:https';
import fs from 'node:fs';
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Welcome to a Node.js HTTPS servern');
}).listen(443);
Alternatif: teruskan rantai dengan opsi ca:. Jika Anda lebih memilih menjaga berkas tetap terpisah alih-alih membuat berkas full-chain, biarkan cert mengarah ke sertifikat domain Anda dan sertakan sertifikat perantara melalui array ca:
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/yourdomain.crt'),
ca: [
fs.readFileSync('/path/to/intermediate.crt'),
fs.readFileSync('/path/to/ca_bundle.crt')
],
minVersion: 'TLSv1.2'
};
Menggunakan Express? Teruskan app Express Anda sebagai penangan permintaan. Opsi sertifikatnya tetap sama persis:
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
app.get('/', (req, res) => res.send('Hello over HTTPS'));
const options = {
key: fs.readFileSync('/path/to/private.key'),
cert: fs.readFileSync('/path/to/fullchain.crt'),
minVersion: 'TLSv1.2'
};
https.createServer(options, app).listen(443);
Langkah 3: Jalankan server HTTPS Node.js Anda
Jalankan perintah berikut untuk meluncurkan aplikasi:
node https_server.js
Aplikasi Anda sekarang menyajikan lalu lintas melalui HTTPS. Untuk penerapan produksi, jalankan aplikasi tersebut di bawah pengelola proses (misalnya PM2 atau layanan systemd) agar dapat dimulai ulang secara otomatis dan tetap berjalan setelah reboot.
Langkah 4: Uji instalasi SSL Anda
Uji instalasi SSL Anda untuk mengetahui adanya potensi kesalahan atau kerentanan menggunakan salah satu alat SSL checker kami. Anda juga dapat memastikan rantainya melalui baris perintah:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates
Perintah ini menampilkan penerbit sertifikat dan tanggal masa berlakunya, memastikan bahwa server Node.js Anda menyajikan sertifikat yang benar.
Di mana membeli sertifikat SSL untuk Node.js?
SSL Dragon adalah sumber untuk semua kebutuhan SSL Anda. Kami menawarkan beberapa harga terendah di pasar untuk seluruh rangkaian produk SSL kami, dan kami telah bekerja sama dengan merek SSL terbaik di industri ini untuk keamanan yang kuat dan dukungan khusus. Semua sertifikat SSL kami sepenuhnya kompatibel dengan aplikasi Node.js.
Penerbitan cepat, enkripsi kuat, kepercayaan peramban 99,99%, dukungan khusus, dan garansi uang kembali 25 hari.
Pertanyaan yang Sering Diajukan
Gunakan modul bawaan https. Baca kunci privat dan sertifikat full-chain Anda dengan fs.readFileSync(), teruskan sebagai opsi key dan cert ke https.createServer(), dan panggil .listen(443). Node.js menangani proses handshake TLS untuk Anda; tidak ada server web terpisah yang perlu dikonfigurasi.
Anda perlu menyajikan rantai perantara, tetapi Anda tidak selalu memerlukan opsi ca untuk melakukannya. Pendekatan paling sederhana adalah menggabungkan sertifikat domain dan CA bundle Anda menjadi satu berkas full-chain dan mengarahkan cert ke berkas tersebut. Gunakan array ca hanya jika Anda lebih memilih menjaga sertifikat dan sertifikat perantara dalam berkas terpisah.
Di Linux dan macOS, port di bawah 1024 bersifat privileged. Melakukan binding langsung ke port 443 memerlukan izin yang lebih tinggi, itulah sebabnya banyak konfigurasi menjalankan Node.js pada port tinggi seperti 8443 di belakang reverse proxy (Nginx atau load balancer) yang menghentikan atau meneruskan TLS. Untuk pengembangan, cukup ubah nilai yang diteruskan ke listen().
Ya. CommonJS (require) berfungsi di setiap versi Node.js yang didukung, tetapi jika proyek Anda dikonfigurasi sebagai modul ES (“type”: “module” di package.json atau berkas .mjs), Anda dapat menggunakan import https from ‘node:https’ sebagai gantinya. Opsi TLS-nya identik dalam kedua cara tersebut.
Buka situs Anda di peramban dan periksa ikon gembok, jalankan melalui alat SSL checker kami, atau kueri dari terminal dengan echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com untuk memeriksa sertifikat yang disajikan server.
Kesimpulan
Menginstal sertifikat SSL di Node.js pada dasarnya adalah membuat sertifikat full-chain, membacanya beserta kunci privat Anda dengan fs.readFileSync(), meneruskannya ke https.createServer() dengan minVersion: ‘TLSv1.2’, dan memulai aplikasi dengan node https_server.js.
Butuh sertifikat terlebih dahulu? Jelajahi sertifikat SSL kami.
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

