Sebelum memulai tutorial ini, kita akan mengenal dulu apa itu TLS dan SSL.
TLS (Transport Layer Security) dan SSL (Secure Socket Layer), adalah sebuah protokol yang akan membentuk koneksi terenkripsi antara web server dengan client atau sebaliknya, sehingga koneksi antara client dan server dapat berjalan secara aman dari pihak lain yang tidak berkepentingan. Protokol ini penting untuk ada pada sebuah website, terlebih jika website tersebut berbentuk e-commerce jual beli barang yang menyimpan banyak informasi client seperti username/password, informasi kartu kredit, dll.
Dengan menggunakan protokol TLS/SSL ini, semua informasi tersebut akan ditransmisikan dari client ke web server atau sebaliknya dengan aman karena protokol TLS/SSL akan mengenkripsi semua informasi yang di transmisikan.
Pada tutorial ini kita akan menginstal sertifikat SSL kita sendiri pada Web Server Apache yang ada didalam Ubuntu Server 20.04.
Perkenalkan, Let's Encrypt sebuah grup atau organisasi yang menyediakan sertifikat SSL/TLS GRATIS yang bisa kita gunakan pada web server kita, ya gratis tidak dipungut biaya sedikitpun, kita bisa menggunakan sertifikat SSL/TLS ini secara cuma-cuma. Perlu diketahui bahwa tujuan dari Let's Encrypt ini sangatlah mulia, menyediakan sertifikat SSL/TLS gratis kepada semua orang agar website mereka bisa lebih aman dan menghormati privasi user atau client.
Dikutip langsung dari website Let's Encrypt, prinsip kunci utama di balik Let's Encrypt adalah:
- Gratis: Semua orang yang memiliki domain website dapat menggunakan Let’s Encrypt untuk memperoleh sertifikat SSL/TLS secara gratis.
- Otomatis: Perangkat Lunak yang berjalan di Web Server dapat berinteraksi dengan Let’s Encrypt untuk mendapatkan sertifikat terpercaya secara mudah, pemasangan yang aman, dan proses pembaruan sertifikat yang sudah otomatis.
- Aman: Let’s Encrypt akan bertindak sebagai platform yang memajukan kiat-kiat praktik terbaik untuk keamanan TLS, pada sisi CA dan dengan membantu operator situs untuk mengamankan server mereka secara layak.
- Transparan: Seluruh sertifikat yang diterbitkan atau yang dicabut akan tercatat secara publik dan tersedia untuk diperiksa oleh semua orang.
- Terbuka: Protokol penerbitan otomatis dan pembaharuan akan dipublikasikan sebagai standar terbuka yang dapat orang lain adopsi.
- Kooperatif: Sama seperti dasar dari protokol Internet itu sendiri, Let’s Encrypt adalah upaya bersama untuk memberi manfaat untuk masyarakat, diluar kendari dari organisasi manapun.
Untuk lengkapnya kalian bisa langsung mengunjungi website Let's Encrypt untuk melihat informasi lainnya seperti dokumentasi, donasi dll.
Pada tutorial sebelumnya, kita telah melakukan project deployment berupa company profile dengan database.
Jika diperhatikan lebih teliti ketika kita membuka websitenya, pada bagian address bar terlihat "Not secure" yang artinya koneksi yang dibuat dari web server ke client atau sebaliknya tidak aman.
Hal ini bisa menimbulkan potensi terjadinya pencurian data jika terjadi serangan pada web server kita, untuk mengamankannya, kita perlu menginstal sertifikat TLS/SSL pada web server kita.
Dibawah ini adalah tahapan yang akan kita lakukan untuk melakukan konfigurasi :
- Instalasi Certbot dan Python Package
- Setting Firewall : Buka Firewall Apache Full
- Run Certbot Service and Setting SSL
- Testing : Open the Website on our Web Server
Sebelum memulai konfigurasi pastikan bahwa Ubuntu Server kita selalu up to date dengan mengetikan perintah :
sudo apt update
Jika terdapat package update yang sudah tersedia, kalian bisa langsung lakukan update dengan mengetikan perintah :
sudo apt upgrade
Setelah web server kita sudah di update, kita mulai proses konfigurasinya.
1. Instalasi Certbot dan Python Package
Pertama kita lakukan instalasi 2 package pada ubuntu server kita yaitu Certbot Package dan Python Package. Ketikan perintah :
sudo apt install certbot python3-certbot-apache -y
2. Setting Firewall : Buka Port Apache Full
Selanjutnya kita lakukan ubahan pada Firewall Ubuntu Server kita, kita buka port Apache Full (Port 80 dan 443) pada web server apache kita.
sudo ufw allow "Apache Full"
Kita bisa mengecek port yang terbuka pada firewall dengan mengetikan perintah :
sudo ufw status
Output :
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache Full ALLOW Anywhere
3306 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
3306 (v6) ALLOW Anywhere (v6)
Terlihat untuk port Apache Full yaitu port 80 dan 443 sudah terbuka.
3. Run Certbot Service and Setting SSL
Kemudian kita bisa menjalankan service certbot pada server kita, untuk menjalankan servicenya kita bisa mengetikan perintah :
sudo certbot --apache
Certbot bisa juga dijalankan pada webserver NGINX, jadi kita harus menspesifikasikan web server apa yang kita gunakan pada saat mengetikan perintah untuk menjalankan service ini. Karena pada tutorial ini kita menggunakan web server apache, jadi kita ketikan --apache agar service certbot bisa berjalan pada server kita.
Setelah itu kita akan melakukan setup awal untuk service Certbot kita :
Enter Email Address, alamat email ini digunakan untuk notifikasi perpanjangan sertifikat SSL dan security, isikan alamat email kalian.
Saving debug log to /var/log/letsencrypt/letsencrypt. Log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices)
(Enter 'c' to cancel):webserver0@gmail.com
Term of Service, ketik A untuk menyetujui term of service.
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-V1.2 - November -15-2017.pdf.
You must agree in order to register with the ACME server at
https://acme-v02.api. letsencrypt.org/directory
(Agree/(C)ancel: A
Certbot akan memberi kita opsi untuk mengikuti update pekerjaan mereka lewat notifikasi email, ketik N.
Would you be willing to share your email address with the Electronic Frontier Foundation,
a founding partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web, EFF news,
campaigns, and ways to support digital freedom.
(Y)es/(N)o: N
Terakhir certbot akan mengkonfirmasi website yang akan mengaktifkan ekstensi HTTPS, jika kalian memiliki lebih dari 1 website pada web server kalian tekan enter, tetapi jika hanya 1 website, ketikan angka 1.
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - -
1: compro.webserver0.net
- - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input,
blank to select all options shown (Enter 'c' to cancel): 1
Selanjutnya certbot akan langsung memulai proses instalasi sertifikat SSL pada website kita.
Setelah instalasi selesai, certbot akan memberikan opsi apakah kita akan meredirect website kita dari HTTP ke HTTPS atau tidak, ketikan angka 2 untuk memilih opsi redirect, tujuannya agar ketika ada client yang mengakses website kita menggunakan http maka akan langsung di redirect ke secure site yaitu HTTPS.
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): 2
Dan sertifikat SSL sudah berhasil diaktifkan pada server kita.
IMPORTANT NOTES:
-Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/compro.webserver.net/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/compro.webserver.net/privkey.pem Your cert will expire on 2022-10-19. 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"
- Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal.
- 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/donatele
Terlihat pada keterangan diatas bahwa sertifikat SSL sudah dihubungkan dengan website kita dan terdapat informasi tanggal expired terhitung 3 bulan dari waktu sertifikat SSL pertama kali diaktifkan. Tapi kalian tidak perlu khawatir, karena proses renewal sertifikat ini akan berjalan secara otomatis dengan mengetikan perintah :
sudo systemctl status certbot.timer
4. Testing : Open the Website on our Web Server
Kita buka lagi website kita menggunakan browser, jika semua konfigurasi sudah dilakukan dengan benar akan terlihat logo gembok pada address bar, jika kita klik terlihat bahwa koneksi website kita sudah secure atau aman dan sertifikat SSL sudah berhasil diaktifkan pada website kita.
Kesimpulan :
Menambahkan keamanan pada web server apache sangat penting untuk dilakukan, dengan menggunakan sertifikat SSL/TLS ini tentunya koneksi yang dibentuk dari web server ke client akan jauh lebih aman karena data yang di transmisikan akan terenkripsi.
Terlebih jika website yang kita miliki menyimpan banyak informasi client seperti username/password, kartu kredit dan informasi penting lainnya, penggunaan sertifikat SSL/TLS ini wajib digunakan untuk semua website yang ada pada web server. Let's Encrypt menyediakan sertifikat SSL/TLS ini secara gratis yang bisa kita gunakan untuk mengamankan website kita.
Seperti itu tadi pembahasan kita tentang cara mengamankan web server apache pada ubuntu server 20.04 menggunakan Let's Encrypt. Sekian untuk tutorial kali ini, semoga ilmu yang kalian dapat dari tutorial ini bisa bermanfaat untuk kalian semua. Terima kasih.
0 comments: