Mengaktifkan HTTPS pada Nginx

Kali ini menepati janji kepada beberapa pengunjung (yang entah berapa lama) soal tutorial setting HTTPS pada Nginx. Baru bisa sekarang karena kebetulan sedang maintenance salah satu website klien, sekalian perpanjang sertifikat SSL. Juga fungsi panduan pemasangan SSL di Nginx ini adalah dokumentasi pribadi saya. Kalau ada kesalahan silahkan dikoreksi 🙂

Disini saya menggunakan Nginx 1.10.0 tapi seharusnya tidak ada perbedaan signifikan antar versi, malah dari perasaan sama saja semuanya. Dan yang pasti persiapkan sertifikat SSL yang ingin dipasangkan untuk nama domain/website anda. Anda bisa menggunakan Comodo, GeoTrust, Symantec, Rapid, DigiCert dan seterusnya untuk yang komersial. Sedangkan yang gratis ada WoSign dan StartSSL, dan Let’s Encrypt sistemnya beda lagi.

Disini saya menggunakan WoSign FreeSSL DV, bisa anda dapatkan disini: https://buy.wosign.com/free/ dan bagusnya didalam file ZIP yang diberikan sudah ada sertifikat SSLnya untuk Nginx. Dari CA lain kadang masih perlu diracik lagi sebelum benar – benar bisa digunakan.
WoSign Free SSL Certificate Zip file

Baru akhirnya kita masuk ke langkah – langkah instalasi sertifikat SSLnya pada VPS anda, pertama buat direktorinya:

mkdir /etc/nginx/ssl

Kemudian pindahkan file nama_domain.key, nama_domain.crt, nama_domain.pem, nama_domain_bundle.crt kedalamnya. Tidak harus ada semua, aslinya tergantung metode anda membuat CSR sewaktu diawal saat request sertifikat SSLnya. Intinya apapun file yang anda buat dan berhubungan dengan proses sebelumnya pindahkan saja ke direktori ini. Dan memang belum tentu dipakai semuanya.

Lanjutkan dengan mengedit konfigurasi virtual host websitenya (nama_domain.conf biasanya), dan kita akan mengalihkan trafik HTTP pada port 80 ke HTTPS:

server {
        listen 80;
        server_name nama_domain.com www.nama_domain.com;
        access_log /var/log/nginx/nama_domain.com-access.log;
        error_log /var/log/nginx/nama_domain.com-error.log;
        rewrite ^ https://$server_name$request_uri? permanent;
}

Dan buat blok kode baru untuk HTTPS agar mendengarkan di port 443:

server {
        listen 443 ssl;
        server_name nama_domain.com www.domain.com;
        access_log /var/log/nginx/domain.com-access.log;
        error_log /var/log/nginx/domain.com-error.log;
        root /var/www/nama_domain.com;
        index index.php index.html index.htm;
        ssl on;
        ssl_certificate /ets/nginx/ssl/1_nama_domain_bundle.crt;
        ssl_certificate_key /etc/nginx/ssl/nama_domain.key;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 10m;
        ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES25$
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
}

Setelah itu silahkan restart atau reload Nginx:

service nginx reload

Seharusnya situs anda sudah menggunakan HTTPS menggantikan HTTP untuk protokolnya. 🙂 Tapi saya ingatkan dulu, tutorial diatas adalah benar – benar hal dasar untuk instalasi SSL pada Nginx. Masih ada OSCP Stapling, HSTS, HPKP, HTTP/2 dan seterusnya. Memang saya batasi pembahasannya agar tidak menjadi terlalu rumit nantinya, yang penting jalan dulu HTTPSnya. Sisanya tambahan saja dan pasti akan saya bahas nanti. Kalau ada waktu dan saya ingat. Hehe. 😀

*Saya sarankan anda pakai WoSign juga sih biar sama dan tidak repot membuat bundle sertifikat SSLnya. Keunggulan lainnya adalah gratis. 😀

4 thoughts on “Mengaktifkan HTTPS pada Nginx

  1. Halo mas Chandra,

    Mau ngasi saran aja, baiknya blog ini di kasi halaman kontak atau penawaran jasa, supaya pengunjung seperti saya jika suatu saat butuh jasa mas Chandra bisa ngontak langsung, hanya sekedar saran, tapi penting….hehhe.

    Blog ini jadi referensi #1 saya belajar VPS untuk web berbahasa indonesia, nilai plusnya blog ini sering diupdate juga pertanyaan direspon dengan baik & cepat…

    Subhan

    • Trims sarannya mas Subhan, dulu memang saya berikan email saya di setiap footer blog. Tapi akhirnya banyak yang minta support lewat email, untuk topik yang sudah saya bahas. Bukannya saya tidak mau membantu tapi supaya efisien dan tidak mengulang – ulang, saya arahkan ke link artikelnya dan kalau kurang jelas bisa ditanyakan disana juga. Jadi kalau ada diskusi atau pertanyaan nanti bisa bermanfaat bagi pengunjung lain juga yang mengalami masalah serupa. 🙂

      Soal jasa manage VPS, untuk sementara waktu belum menawarkan untuk umum mas. 😀 Sudah ada beberapa klien lama dan waktunya cukup tersita untuk itu. Daripada kualitas layanan turun karena kebanyakan klien (pernah mengalami karena terlalu rakus dulu, jadi pelajaran lah 🙂 ) jadi belum ada niat untuk kesitu saat ini.

      Blog ini tujuannya biar dokumentasi VPS saya tidak berserakan di notepad dan siapa tahu berguna buat yang lain. Dan saya sering update setiap pagi karena sekalian “manasin mesin” sebelum aktivitas dimulai. Hehe. 😛

      Apalagi kalau ada pertanyaan masuk. Saling membantu juga aslinya, kadang ada koreksi yang masuk karena salah paham saat belajar dulu terbawa sampai sekarang. 🙂

      Tapi email saya aslinya bisa dilihat disini mas: https://servernesia.com/dibalik-layar/

  2. Makasih coretan2 blognya sangat membantu mas Chandra.
    Saya baru coba membuat sertifikat di StartSSL.
    File 1_nama_domain_bundle.crt sudah saya dapatkan.
    Tapi file nama_domain.key itu dapatnya dari mana ya mas?
    Waktu di StartSSL saya pilih generate lewat IE.

    • Halo mas Adi, kalau saya usul mas pakai WoSign saja gimana? Saya termasuk anti pakai StartSSL karena sistem loginnya ribet banget. Dan saya asli sudah lupa detail – detailnya kalau di StartSSL, jauh lebih baik WoSign yang user friendly.

Leave a Comment