Tanya
Saya mau install SSL di web saya. Domainnya example.com. Saya ingin agar nanti domain saya itu bisa diakses pake HTTPS (https://example.com), itu gimana ya caranya? VPS saya unamanaged, OS nya Debian 9 dan sdh saya install Nginx, PHP-FPM dan MariaDB Server.
Jawaban
Pernah mendengar tentang SSL?
Kalo kita ibaratkan, web yang tanpa SSL, itu ibarat kita naek motor ga pake helm, ke wilayah yang banyak debunya. Apa yang terjadi? Mata kita kelilipan, wajah kita akan dipenuhi debu. Pas kita jatuh, kepala kena batu, berdarah. Sedangkan web yang pake SSL itu seolah kita pake helm full face, jadi mau ada debu pun mata aman ngga kelilipan.
Sedangkan penerapannya ke web, SSL itu berfungsi menciptakan jalur komunikasi yang aman antara penugnjung dengan web mas. Misal nih, web mas itu ada form2 submit data sensitif, kayak form contact, form order (ada password, email, dll).
Contoh real nya misal mas punya toko online. Kalo misal, ada pengunjung yang nge wifi di cafe, dia order barang dari web mas, dan di cafe itu ada hacker, maka data yang diinput penugnjung ke web mas akan direkam hacker. Ujung2 nya ada pihak yang dirugikan.
Nah disinilah SSL itu berperan. Kalo web nya dipasang SSL, data yang diinput ke web mas, tdk akan terbaca hacker.
Pengertian SSL simpel nya seperti itu.
Supaya web nya bisa diakses pake format HTTPS, maka kita perlu mengaktifkan SSL di server nya. Cara mengaktifkannya yaitu dengan menyimpan 2 buah file, file Certificate dan file Private Key. Certificate ini biasa dijual oleh penerbit Certificate kayak Comodo, GeoTrust, VeriSign, dll. Private key nya kita yang hrs siapakan. Kalo yang ingin gratis, ngga mau repot, maka bisa menggunakan SSL Cloudflare, atau Let’s Encrypt.
Materi kali ini adalah setting SSL gratis dari Let’s Encrypt. Certificate dan Private Key nya di-generate otomatis.
Langsung aja. Yang dibutuhkan adalah 1 buah server dengan OS Debian 8 atau nama lainnya Jessie, atau Debian 9 atau nama lainnya Debian Stretch, dan Webserver Nginx. Praktek kali ini saya contohkan di Debian Stretch (atau Debian 9)
Untuk memastikan OS nya Debian apa (Stretch apa Jessie) , jalankan perintah ini
lsb_release -a
Hasilnya Kalo Jessie
Kalo misal tulisannya Debian 10, JANGAN ikuti materi ini, silahkan ke materi ini.
Sedangkan untuk mengetahui apakah pake Nginx, jalankan perintah
netstat -ptuln
Hasilnya
Setelah memiliki tampilan sama (ada tulisan “nginx” dan “80”), baru ke proses instalasi SSL.
Instalasi SSL Let’s Encrypt
Kita akan memanfaatkan aplikasi bernama Certbot untuk proses penerbitan SSL, maka install dulu si certbot nya. Instalasi Certbot ini hanya diperlukan sekali seumur hidup di server itu jangan dijalankan 2x, 3x dst. 1x cukup.
Add certbot dulu ke sources.list
Ingat, jalankan 1x aja!
Kalo Debian Jessie, perintahnya
echo 'deb http://deb.debian.org/debian jessie-backports main contrib non-free' >> /etc/apt/sources.list echo 'deb-src http://deb.debian.org/debian jessie-backports main contrib non-free' >> /etc/apt/sources.list
Kalo Debian Stretch, perintahnya
echo 'deb http://deb.debian.org/debian stretch-backports main contrib non-free' >> /etc/apt/sources.list echo 'deb-src http://deb.debian.org/debian stretch-backports main contrib non-free' >> /etc/apt/sources.list
Lalu jalankan
apt-get update
Kalo Debian Jessie lanjut dengan menjalankan
apt-get install python-certbot-nginx -t jessie-backports -y
Kalo Debian Stretch lanjut dengan menjalankan
apt-get install python-certbot-nginx -t stretch-backports -y
Perintah di atas, dilakukan sekali seumur hidup aja. Jangan diulang berulang-ulang ya.
Sampe proses di atas, proses instalasi cerbot selesai. Sekarang lanjut ke proses pemasangan SSL.
Pemasangan SSL
Untuk domain example.com yang ingin dipasang SSL / HTTPS, silahkan jalankan perintah ini, kalo domainnya bukan example.com, silahkan sesuaikan
Untuk Debian Stretch (9)
Kalo OS Anda Debian Stercth / Debian 9, perintahnya adalah sbb:
certbot \ --redirect \ --agree-tos \ --register-unsafely-without-email \ --nginx \ -d example.com -d www.example.com
Tunggu proses nya sampe nanti melihat tampilan yang seperti ini
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Obtaining a new certificate Performing the following challenges: http-01 challenge for example.com http-01 challenge for www.example.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/example.com Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/example.com Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/example.com Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/example.com ------------------------------------------------------------------------------- Congratulations! You have successfully enabled https://example.com and https://www.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=example.com https://www.ssllabs.com/ssltest/analyze.html?d=www.example.com ------------------------------------------------------------------------------- IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2018-08-03. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Done. SSL sdh terpasang di domain, silahkan akses web nya, harusnya sdh ter-redirect. Clear cache / refresh dulu browser nya kalo belum HTTPS.
Untuk Debian Jessie (8)
Kalo OS Anda Debian Jessie / Debian 8, perintahnya adalah sbb (susuaikan domainnya):
certbot certonly --webroot --text --renew-by-default --agree-tos --register-unsafely-without-email -w /var/www/html/example.com -d example.com -d www.example.com
Khusus Debian Jessie (8), harus menjalankan 5 perintah tambahan ini secara berturut (ganti example.com dengan domain sebenarnya)
sed -i '$ilisten 443 ssl http2;' /etc/nginx/sites-available/example.com
sed -i '$issl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;' /etc/nginx/sites-available/example.com
sed -i '$issl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;' /etc/nginx/sites-available/example.com
sed -i '$iif ( $scheme = "http" ) { return 301 https://$server_name$request_uri; }' /etc/nginx/sites-available/example.com
service nginx reload
Install Plugin SSL
Bagi pengguna WordPress, sangat disarankan untuk install plugin ReallySimpleSSL, supaya semua element yang masih HTTP, diganti jadi HTTPS. Install, aktifkan, lalu klik ini (akan log out dari wp-admin)
Pemasangan SSL untuk Domain Lainnya
Kalo mau nambah SSL untuk domain lain, maka tinggal dijalankan lagi perintah yang ini (Ganti aja domain-nya)
Debian Stretch (9)
certbot \ --redirect \ --agree-tos \ --register-unsafely-without-email \ --nginx \ -d example.net -d www.example.net
Debian Jessie (8)
certbot certonly --webroot --text --renew-by-default --agree-tos --register-unsafely-without-email -w /var/www/html/example.net -d example.net -d www.example.net
Khusus Debian Jessie (8), harus menjalankan 5 perintah tambahan ini secara berturut (ganti example.net dengan domain sebenarnya)
sed -i '$ilisten 443 ssl http2;' /etc/nginx/sites-available/example.net
sed -i '$issl_certificate /etc/letsencrypt/live/example.net/fullchain.pem;' /etc/nginx/sites-available/example.net
sed -i '$issl_certificate_key /etc/letsencrypt/live/example.net/privkey.pem;' /etc/nginx/sites-available/example.net
sed -i '$iif ( $scheme = "http" ) { return 301 https://$server_name$request_uri; }' /etc/nginx/sites-available/example.net
service nginx reload
Anda Pengguna Cloudflare?
Bagi pengguna Cloudflare, ketika SSL nya sdh ON, ada yang harus dilakukan, silahkan pilih yang paling sreg.
Opsi 1 – Jika webnya ingin menggunakan fitur security dan ingin mendapat optimasi yang diberikan Cloudflare, silahkan login ke Cloudflare, pilih domainnya, ke menu Crypto, link nya (ganti example.com)
https://www.cloudflare.com/a/crypto/example.com
Di sana ada pengaturan SSL: Off, Flexible, Full, dan Full (strict). Silahkan atur agar menjadi Full (strict).
Hanya saja SSL yang muncul bukanlah SSL nya Let’s Encrypt, melainkan SSL Cloudflare. SSL yang muncul “SSL jamaah”, karena SSL nya digunakan oleh domain2 lain.
Opsi 2 – Kalo SSL yang muncul ingin SSL nya Let’s Encrypt, maka masuk ke menu DNS, link nya (ganti example.com)
https://www.cloudflare.com/a/dns/example.com
Di sana ada icon awan berwarna oranye. Silahkan di klik icon itu, sehingga jadi abu2.
Dengan demikian SSL yang muncul keliatan lebih prestise karena hanya dimiliki domain example.com saja. Contoh untuk salah satu domain saya https://jasa.hardinal.com/
Selamat mencoba.
Selalu mencerahkan panduannya. Keren..
Sukses terus mas, thanx
Kalo pake debian 8.10 (jessie), prosedurnya sama ya gan? Kalo yg sudah pake jasa setup vps agan, mulainya dari step mana ya? apakah perlu install cerbot lagi?
thanks
Jessie bisa. Sdh saya apdet artikel nya.
saya bingung ya, kenapa sebelum di install https di webpagetest.org itu A semua, cuma cdn doang yang gak ada karna gak pakai cdn juga. saya install Redis sama FastCGI. dan ketika di redirect ke https, malah berantakan, A/B/C/NA/A/X .
Bagaimana menurut mas?
Mas, ini yang Let’s Encrypt apa nanti sudah otomatis renew sendiri setiap 3 bulan? atau harus manual (certbot renew)
Thanks
Autorenew mba.
sip, terima kasih. sukses selalu mas π
Bakat jadi dosen π
Mas, kalau pake SSL yg berbayar (mis.Comodo), itu settingannya/cara pasangnya beda lagi ya? Kali aja bisa direquest tutorialnya hehe. Terima kasih banyak sebelumnya, saya bisa pasang vps setelah baca blog Mas.
Blm ada materi nya, mas.
Mas, kalau yg bagian cloudflare itu awannya jadi abu2, apakah situs tersebut masih pake cdn dan dns cloudflare? Atau sudah lepas?
Sama sekali gak ngerti ane gan, mesti darimana belajar kaya ginian ?
assalamualaikum mas
saya udah coba ngikutin caranya
tapi pas install certbot certonly –webroot –text –renew-by-default –agree-tos –register-unsafely-without-email -w /var/www/html/example.com -d example.com -d http://www.example.com
saya mendapatkan error mas dengan tulisan Failed Authorization disertai tulisan example.com/.acme-challenge dst
itu gmn ya mas ?
terimakasih
Pingback: Endri Susanto
Pingback: Cara Install SSL Letβs Encrypt di Nginx / Apache dengan OS Debian 10 – Endri Susanto