Tutorial Instalasi Sertifikat TLS/SSL Gratis untuk Website Anda


Oleh Ganis (ganis)



Ganis

CEO and Founder of CodeSaya

@ganiseu9
https://ganis.net/


Ada yang baru di CodeSaya yaitu kami baru saja memasang sertifikat TLS/SSL untuk meningkatkan keamanan bagi pengguna kami. Sekarang semua akses ke CodeSaya haruslah melalui HTTPS. Penggunaan HTTPS artinya menjamin bahwa komunikasi anda dengan server kami terenkripsi. Segala bentuk data termasuk password yang anda gunakan di CodeSaya akan dienkripsi oleh browser sebelum sampai ke server kami. Ditambah dengan metode mengamankan password kami, maka bisa dibilang hampir mustahil password anda akan tercuri saat menggunakan CodeSaya.

Memasang TLS/SSL umumnya membutuhkan biaya dan harus dilakukan update atau renewal secara manual. Tetapi sebuah badan bernama Let's Encrypt (LE) menyediakan enkripsi TLS gratis dan memperbolehkan renewal secara otomatis. Produk ini baru saja keluar dari beta dan sudah masuk ke fase produksi, sehingga sudah aman untuk kita coba. Dan juga sponsor di belakang LE pun tidaklah main-main ada Mozilla, Akamai, Cisco, Facebook, dan perusahaan-perusahaan besar lainnya sehingga kita tidak perlu khawatir akan kualitas dan kredibilitasnya. Sudah cukup perkenalannya sekarang mari kita sisingkan lengan baju kita dan mari kita mulai kotor-kotoran.

HTTPS di CodeSaya

Tutorial ini akan fokus kepada pemasangan TLS/SSL gratis untuk server yang bisa diakses menggunakan SSH baik itu untuk shared hosting, VPS, ataupun dedicated server. Jika anda tidak memiliki akses SSH ke server anda sebaiknya anda bisa meminta bantuan dari provider hosting anda untuk memberikan bantuan. Dan juga kami berfokus ke pemasangan untuk debian dan variannya. Untuk distro lainnya mungkin akan terdapat perbedaan di lokasi file.

Pertama-tama kita download client dari Let's Encrypt melalui git lalu pindah ke direktori dari client tersebut. Jika anda tidak punya git di server anda maka install git terlebih dahulu.

$ git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt
$ cd /opt/letsencrypt

Jika anda menggunakan Apache maka perhatikan bagian ini, jika anda menggunakan Nginx maka langsung loncat ke bagian berikutnya.

Instalasi untuk Apache

Jika anda memiliki satu buah domain, anda bisa menjalankan perintah berikut:

$ ./letsencrypt-auto --apache -d contoh.com

Jika anda memiliki lebih dari satu domain dan subdomain di server yang sama, anda tinggal menggunakan perintah berikut:

$ ./letsencrypt-auto --apache -d contoh.com -d www.contoh.com -d contohlain.com

Setelahnya anda akan mengikuti perintah step-by-step untuk mengkostumisasi pilihan sertifikat anda. Anda akan diminta untuk memberikan email untuk recovery dan juga pilihan untuk membuat semua koneksi menggunakan https atau tidak. Kami menyarankan untuk melakukannya agar semua komunikasi di server anda aman. Sertifikat anda akan ditemui di folder /etc/letsencrypt/live.

Instalasi untuk Nginx

Untuk Nginx prosesnya tidak semudah apache karena plugin LE untuk Nginx belumlah stabil. Sehingga prosesnya agak manual tetapi tetaplah sangat mudah. Pertama-tama kita membuat sebuah folder

$ mkdir WEBROOT/.well-known

Setting WEBROOT-nya dengan path folder website anda. Lalu kita edit konfigurasi Nginx agar dapat mengakses folder ini dengan mengedit konfigurasi Nginx untuk web anda menjadi seperti ini kira-kira:

server {
    listen 80;
    listen [::]:80;

    # untuk autentifikasi Let's Encrypt
    location /.well-known {
        alias WEBROOT/.well-known;
    }

    # konfigurasi lainnya
    # ....
    # ....

}

Setelah menyelesaikan konfigurasi untuk web ini, reload Nginx-nya, lalu kita jalankan perintah untuk membuat sertifikat LE-nya.

$ ./letsencrypt-auto certonly --webroot \
    -w WEBROOT/ \
    -d contoh.com \
    -d www.contoh.com \
    --email=saya@contoh.com \
    --agree-tos

Ketika pembuatan sertifikatnya berhasil, kita akan menemukan sertifikatnya di dalam direktori /etc/letsencrypt/live/. Selanjutnya mari kita buat DH parameter yang kuat dengan cara berikut:

$ openssl dhparam -out WEBROOT/dhparam.pem 2048

Selanjutnya kita harus berikan informasi sertifikat kita, DH parameter kita, dan tambahan kemananan standar untuk https kita di konfigurasi kita seperti ini. Dan jangan lupa untuk me-reload Nginx anda setiap melakukan perubahan.

server {
    listen 80;
    listen [::]:80;
    
    # aktifkan 443
    listen 443 ssl;
    listen [::]:443 ssl;

    # memasang dhparam yang telah kita buat
    ssl_dhparam WEBROOT/dhparam.pem;

    # memasang sertifikat yang telah kita buat dengan LE
    ssl_certificate /etc/letsencrypt/live/contoh.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/contoh.com/privkey.pem;

    # memberitahu Nginx kita hanya menggunakan enkripsi yang terbukti aman
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_prefer_server_ciphers on;

    # memberitahu Nginx kita hanya menggunakan protokol yang terbukti aman
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    # untuk autentifikasi Let's Encrypt
    location /.well-known {
        alias WEBROOT/.well-known;
    }

    # konfigurasi lainnya
    # ....
    # ....
}

Memperbarui Sertifikat

Baik Nginx maupun Apache, keduanya memiliki perintah yang sama untuk memperbaharui sertifikatnya.

./letsencrypt-auto renew

Sertifikat dari LE akan expired dalam waktu 90 hari sehingga anda harus melakukan otomatisasi karena akan melelahkan untuk melakukannya setiap 3 bulan secara manual. Anda bisa menjalankan perintah itu setiap 10 hari dengan cronjob nya seperti ini.

30 5 */10 * * /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log
35 5 */10 * * /etc/init.d/nginx reload

Cron job di atas akan dijalankan setiap tanggal 10, 20, dan 30 pada jam 5.30 pagi dan melakukan reload untuk Nginx 5 menit setelahnya. Jika anda menggunakan Apache maka tidak perlu lakukan baris yang keduanya. Operasi cron di atas membutuhkan sudo sehingga anda harus lakukan sudo crontab -e.

Hal lain yang dapat anda lakukan adalah memindahkan semua koneksi non-HTTPS ke HTTP dengan cara seperti ini di Nginx. Dan juga hapus listen 80 yang sebelumnya agar tidak bentrok. Jangan lupa untuh ubah domain contoh.com-nya di bawah ini.

server {
    listen 80;
    server_name contoh.com www.contoh.com;
    return 301 https://$host$request_uri;
}

Setelah anda memasang sertifikat, anda bisa memeriksanya di htbridge. Kita pun sudah memeriksa seberapa kuat sertifikat CodeSaya dan ternyata kita mendapatkan nilai A+! Semoga anda pun mendapatkan nilai yang serupa.

Hasil test sertifikat SSL/TLS-nya CodeSaya

Kesimpulan

Setelah adanya sertifikat gratis dari Let's Encrypt maka bisa dibilang tidak ada lagi alasan untuk anda wahai para webmaster untuk tidak menggunakan HTTPS di website anda. Bukan hanya untuk keamanan pengguna anda saja tetapi juga untuk keamanan anda sendiri saat anda login ke akun administrator. Selain itu, dengan HTTPS maka search engine akan menempatkan rating website anda lebih tinggi dari sebelumnya.

Level artikel ini adalah advanced.
Dituliskan oleh Ganis (ganis) pada 8 Juni 2016 dan telah dibaca sebanyak 6749 kali.
Tag: Apache, Nginx, TLS/SSL

Beri Jempol · 14 jempol

berlangganan komentar



Komentar:

abuabdirrahman
68
0
· 8 tahun, 6 bulan yang lalu · 2 jempol

Bismillah,

Wah saya telat baca artikelnya Mas Ganis, Klo udah terlanjur beli SSL bisa tidak yah saya pakai Let's Encrypt. Step ringkasnya seperti apa Mas??. Thank's

ganis
198
841
penulis
· 8 tahun, 6 bulan yang lalu · 2 jempol

Bisa mas @abuabdirrahman, tapi mungkin sebaiknya SSL yang sudah terlanjur dibeli dipakai saja dulu sampai expired. Setelah habis tinggal ikuti step disini ^^

abuabdirrahman
68
0
· 8 tahun, 6 bulan yang lalu · 2 jempol

ha ha ha,,, masalahnya ketika saya cek web saya di htbridge hanya beroleh B-, sedangkan codesaya dapet A+ padahal udah keluar duittt. Masa kalah sama yang gratisan.Jadi ngiri ceritanya,, hee. 

ganis
198
841
penulis
· 8 tahun, 6 bulan yang lalu · 2 jempol

Wuahahahaha... kemungkinan itu bukan karena SSL-nya, tapi itu sebenarnya lebih ke settingan dari apache/nginx-nya, jika di nginx anda harus menkonfigurasikan ssl_dhparam, ssl_protocols, ssl_ciphers-nya dan lain-lain seperti yang bisa anda lihat di tutorial ini. Untuk apache mungkin cari yang sepadan dengan settingan yang di nginx itu. Untuk lebih pastinya lihat output dari htbridge, kenapa nilainya bisa B- dan perbaiki satu persatu ^^ semangat!

Silahkan masuk untuk menulis artikel atau komentar.



Artikel Lainnya


tyo

12 Juni 2016

Hello wor[l]d!

Assalamualaikum. perkenalkan saya tyo. lulusan IT dari kampus swasta di jakarta. saya kuliah 7 tahun. dari awal masuk, ditekankan oleh dosen saya untuk menguasai programming. tapi selama itu pula saya ...

Lanjutkan membaca

4 menit bacaan



Afrian Junior

29 Mei 2016

Bedah Satuan CSS

Jika pada praktek sehari-hari kita hanya menggunakan satuan % dan px, namun kali ini saya akan membahas penggunaan berbagai satuan yang tepat yang mungkin belum diketahui.

Satuan % (Persentase)

Persentase adalah satuan ...

Lanjutkan membaca

5 menit bacaan · beginner