SSL Dengan LetsEncrypt

Sebenarnya ini bukan hal yang sering saya lakukan, mungkin kadang-kadang 2 bulan bisa sekali ada tugas untuk setup TLS/SSL sertifikat. Karena mungkin faktor pelupa yang sangat akut, saya akan mendokumentasikan beberapa shortcut yang sering saya gunakan.

Jika kita mempunyai domain yang belum menggunakan HTTPS, tidak ada alasan lagi bagi kalian untuk tidak menggunakannya, karena sertifikat TLS/SSL sudah bisa didapatkan gratis di LetsEncrypt. Di tulisan kali ini saya akan coba memasang LetsEncrypt di server yang sudah terinstall nginx.

  1. Install certbot
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx

2. Setup nginx

sudo vi /etc/nginx/sites-available/default

cari line yang berisi server_name dan ubah sesuai domain yang sudah kamu miliki, sebagai contoh kabayan.com. Maka ubah menjadi seperti ini :

server_name kabayan.com;

Untuk melihat apakah configurasi nginx nya sudah benar, bisa mengunakan command sebagai berikut :

nginx -t

Jika tidak ada error, silahkan reload service nginx dengan command sebagai berikut :

sudo service nginx restart

3. Memasang Sertifikat

Certbot memiliki berbagai cara untuk mendapatkan sertifikat, salah satu plugin yang bisa digunakan adalah dengan mengunakan plugin nginx. Plugin inilah yang akan mengurus semua konfigurasi yang ada di nginx, karena saya sedikit malas. Maka ini cara singkat yang biasa digunakan, jika port standar (80 dan 443) yang digunakan :

sudo certbot --nginx

maka akan muncul opsi seperti ini :

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Which names would you like to activate HTTPS for?
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — 1: kabayan.com
2: ceupopong.com
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter ‘c’ to cancel):

Pilih nomor 1, abaikan domain nomor 2. Kemudian certbot akan melakukan tugasnya, menverifikasi domain validation nya, prosesnya seperti ini :

Obtaining a new certificate
Performing the following challenges:
tls-sni-01 challenge for kabayan.com
Waiting for verification...
Cleaning up challenges
Deployed Certificate to VirtualHost /etc/nginx/sites-enabled/default for set(['kabayan.com'])
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Disitu ada config certbot yang harus kita isi, bagaimana yang harus server lakukan jika masih ada request yang menggunakan protocol http. Kita pilih no 2 saja, untuk men-redirect semua request ke https. Ketik 2 dan kemudian enter untuk melanjutkan proses.

Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/default
-------------------------------------------------------------------------------
Congratulations! You have successfully enabled https://kabayan.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=kabayan.com
-------------------------------------------------------------------------------
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/kabayan.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/kabayan.com/privkey.pem
Your cert will expire on 2017-12-26. 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

Setelah berhasil seperti diatas, jangan lupa bahwa ada expire time dari sertifikat tersebut, untuk mengatasinya bisa menggunakan crontab 3 bulan sekali dan gunakan perintah ini :

certonly -d kabayan.com --manual --preferred-challenges dns --config-dir config --work-dir work --logs-dir logs --force-renew
Like what you read? Give abiwardani a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.