Mengonfigurasi SSL dengan Sertifikat Sendiri di NGINX - Load Balancer
Jika kamu ingin mengonfigurasi SSL di NGINX dengan menggunakan sertifikat dan private key yang kamu miliki sendiri tanpa menggunakan Certbot, berikut adalah panduan langkah demi langkah yang dapat kamu ikuti. Konfigurasi ini cocok untuk kamu yang telah memiliki sertifikat SSL dari penyedia lain atau menggunakan sertifikat yang dihasilkan sendiri.
Langkah 1: Siapkan Sertifikat dan Private Key
Sebelum mengonfigurasi NGINX, pastikan kamu sudah memiliki dua file penting berikut:
Sertifikat SSL (biasanya berekstensi .crt atau .pem).
Private Key SSL (biasanya berekstensi .key).
Contoh file:
example.com.crt (sertifikat SSL)
example.com.key (private key)
Letakkan kedua file ini di server NGINX di lokasi yang aman. Misalnya, di folder /etc/nginx/ssl/ atau folder lain sesuai preferensi kamu.
Langkah 2: Mengedit Konfigurasi NGINX di Folder conf.d/
Di NGINX, konfigurasi server biasanya disimpan di dalam folder /etc/nginx/conf.d/. Dalam folder ini, file konfigurasi biasanya terpisah berdasarkan server block (virtual host).
Buka file konfigurasi yang terletak di conf.d/. Misalnya, jika kamu mengedit file default.conf, jalankan perintah:
sudo nano /etc/nginx/conf.d/default.conf
Edit atau tambahkan konfigurasi SSL di dalam blok server untuk memastikan bahwa NGINX menggunakan sertifikat dan private key yang telah kamu siapkan.
Contoh Konfigurasi NGINX dengan SSL
# Redirect HTTP ke HTTPS
server {
listen 80;
server_name example.com www.example.com;
# Mengarahkan semua traffic HTTP ke HTTPS
return 301 https://$host$request_uri;
}
# Konfigurasi HTTPS dengan SSL
server {
listen 443 ssl;
server_name example.com www.example.com;
# Sertifikat SSL dan Private Key
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
# Pengaturan SSL untuk keamanan yang lebih baik
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
# Konfigurasi untuk proxy pass jika diperlukan
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Backend server pool untuk load balancing (jika diperlukan)
upstream backend_servers {
server node1.example.com:3000;
server node2.example.com:3000;
}
Penjelasan Konfigurasi:
Server HTTP (port 80):
Blok pertama mengarahkan seluruh trafik HTTP ke HTTPS dengan menggunakan kode 301 (permanent redirect).
Server HTTPS (port 443):
Pada blok kedua, NGINX mendengarkan di port 443 (HTTPS).
ssl_certificate: Ini adalah path menuju file sertifikat SSL (misalnya, /etc/nginx/ssl/example.com.crt).
ssl_certificate_key: Ini adalah path ke private key SSL (misalnya, /etc/nginx/ssl/example.com.key).
Pengaturan SSL:
ssl_protocols: Mengaktifkan hanya protokol TLSv1.2 dan TLSv1.3 untuk meningkatkan keamanan.
ssl_ciphers: Mengatur cipher suite yang aman untuk komunikasi HTTPS.
ssl_prefer_server_ciphers: Memastikan server memilih cipher yang lebih aman.
Konfigurasi Proxy Pass:
location /: Mengatur proxy pass jika kamu memiliki backend server (seperti aplikasi Node.js, PHP, dll). Traffic yang datang akan diteruskan ke backend server yang telah didefinisikan dalam upstream.
upstream backend_servers:
Di sini, kita mendefinisikan beberapa server untuk load balancing. Misalnya, server backend yang menjalankan aplikasi di port 3000.
Langkah 3: Verifikasi Konfigurasi NGINX
Setelah kamu selesai mengedit file konfigurasi NGINX, penting untuk memverifikasi apakah tidak ada kesalahan sintaks di dalam file konfigurasi.
Gunakan perintah berikut untuk memeriksa konfigurasi:
sudo nginx -t
Jika tidak ada kesalahan, kamu akan melihat pesan syntax is okay dan test is successful. Jika ada kesalahan, periksa kembali konfigurasi untuk menemukan dan memperbaikinya.
Langkah 4: Reload NGINX untuk Menerapkan Konfigurasi
Setelah memastikan konfigurasi benar, langkah berikutnya adalah me-reload NGINX agar perubahan diterapkan. Gunakan perintah berikut:
sudo systemctl reload nginx
Langkah 5: Verifikasi SSL
Setelah reloading NGINX, coba buka website kamu dengan protokol HTTPS (misalnya, https://example.com). Jika SSL sudah diatur dengan benar, browser akan menampilkan ikon gembok di sebelah kiri URL, menandakan koneksi aman.
Kamu juga dapat memverifikasi sertifikat SSL menggunakan alat seperti:
SSL Labs’ SSL Test untuk memeriksa konfigurasi SSL.
Atau cukup lihat ikon gembok di browser untuk memastikan SSL aktif.
Kesimpulan
Dengan langkah-langkah di atas, kamu dapat mengonfigurasi SSL di NGINX menggunakan sertifikat dan private key yang kamu miliki sendiri. Tidak perlu menggunakan Certbot atau tool lain untuk mendapatkan sertifikat, karena kamu menggunakan sertifikat yang sudah ada.