SSL Gratis dari Let’s Encrypt!
Halo SysAdmin,
Kabar gembira buat para sysadmin! kini registrasi SSL semudah ngetik poweroff di terminal, cepat & gratis pula #ehh. Mungkin saya yg telat tau informasi ini atau bisa jadi saya yg kurang “jauh mainnya” :D. Let’s Encrypt adalah suatu organisasi public yg tidak hanya menyediakan Free SSL alias SSL Gratis, tp juga tools client untuk generate file certificate (.pem) nya loh!
Bagi yg belum paham apa itu SSL, apa fungsi SSL dan kenapa diharuskan menggunakan SSL bisa langsung cek ke Wikipedia tentang Pengertian SSL. Saya tidak akan membahas itu, karena sudah terlalu antusias sama yg gratisan #nah.
Pengalaman pertama saat install Let’s Encrypt, generate key hingga pasang SSL ke website, hampir tidak menemukan kesulitan, dokumentasinya pun sangat mudah dipahami, entah karena VPS saya kebetulan pake OS (linux for human being) dan web server yg familiar jadinya lancar jaya! 😀
Ok, mari kita mulai, ada beberapa hal yg perlu disiapkan :
- berdoa, semoga dilancarkan segala usahanya, amin..
- pengetahuan kontrol linux yg baik, minimal bisa/ada akses sudo, cukup!
- koneksi internet yg stabil
- status server sudah ip public, baik vps, dedicated atau co-location
Pertama, (diasumsikan sudah masuk pada terminal & remote ssh) install certbot, certbot sendiri adalah salah satu key generator client yg direkomendasikan oleh Let’s Encrypt karena penggunaanya sangat mudah, sy sendiri memakai ini.
Buka website certbot, kemudian pilih Web Server kemudian Operating System, setelah itu muncul perintah untuk install certbot. Kebetulan contoh kali ini menggunakan Linux Ubuntu, dan web server Nginx, mungkin ada perbedaan cara install tergantung pilihan.
Masuk ke home folder (untuk menyimpan file certbot)
cd /home/nasrul
Download file certbot-auto dan set menjadi execute file
wget https://dl.eff.org/certbot-auto chmod a+x certbot-auto
Kemudian, install
./certbot-auto
Jika install berhasil & masih di direktori yg sama, generate key SSL nya dan sesuaikan namadomain.com dengan nama domain yg ingin diregistrasikan, kalau ingin tambah subdomain gunakan -d <namadomain.com> , jangan lupa mematikan service web server dulu sebelum generate (wajib!).
./certbot-auto certonly --standalone -d namadomain.com -d www.namadomain.com
Jika generate berhasil, file key akan tersimpan di folder /etc/letsencrypt/live/<namadomain.com>/ di dalam folder tersebut, tersimpan 4 file certificate key yg berekstensi *.pem, diantaranya:
- privatekey.pem (private key untuk semua certificate)
- cert.pem (certificate untuk server ) –> untuk Apache < 2.4.8 di bagian SSLCertificateFile.
- chain.pem (certificate untuk browser) –> untuk Apache < 2.4.8 di bagian SSLCertificateChainFile, dan Nginx >= 1.3.7 di bagian ssl_trusted_certificate.
- fullchain.pem (gabungan cert.pem dan chain.pem) –> untuk Apache < 2.4.8 di bagian SSLCertificateFile, dan Nginx >= 1.3.7 di bagian ssl_certificate.
Dari file dan keterangan diatas, tinggal ditambahkan konfigurasi pada file nginx.conf (default nya ada di /etec/nginx/conf.d)
ssl on; ssl_certificate /etc/letsencrypt/live/<namadomain.com>/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/<namadomain.com>/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/<namadomain.com>/chain.pem; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5;
Jangan lupa tambahkan listen 443 (port ssl)
listen 443 ssl;
(optional) tambahkan fungsi untuk redirect ke https seperti pada artikel sebelumnya Otomatis Http ke Https:
if ($scheme = http) { return 301 https://$server_name$request_uri; }
Dan, untuk versi lengkapnya file nginx.conf saya seperti ini
server { listen 80; listen 443 ssl; root /web/<namadomain>/frontend/web; index index.html index.htm index.php; server_name www.namadomain.com namadomain.com; client_max_body_size 128M; charset utf-8; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; ssl on; ssl_certificate /etc/letsencrypt/live/<namadomain.com>/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/<namadomain.com>/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/<namadomain.com>/chain.pem; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; location / { try_files $uri $uri/ /index.php?$args; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /web; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } if ($scheme = http) { return 301 https://$server_name$request_uri; } }
Jika sudah selesai semua, restart service web server dan kemudian akses website melalui browser favorite, taraaaa!! https://namadomain.com.
File certificate itu sendiri masa nya hanya 90 hari, jika ingin memperpanjang tinggal jalankan perintah (masih di folder home yg sama, letak file certbot-auto berada) :
./certbot-auto renew --quiet --no-self-upgrade
Kalau tidak ingin repot setiap ketik-ketik perintah update tersebut, bisa dijalankan melalui CRON atau SYSTEMD setiap hari sekali, tenang kalau tidak ada file certificate yg perlu diupdate perintah tersebut akan diabaikan, jadi tidak akan memberatkan server. Semoga bermanfaat!
~ Sekian
keren banget artikelnya. sangat bermanfaat sekali ini buat saya yang lagi cari ssl gratisan 😀