0
0
0
share
#ubuntu#apache#server#nginx
0 Komentar
Cara Mengamankan Nginx Web Server dengan Let's Encrypt di Ubuntu 16.04
Pendahuluan
Tutorial ini akan mengajak pembaca untuk mengatur sertifikat TLS/SSL dari Let’s Encrypt di server Ubuntu 16.04 yang menjalankan Nginx sebagai server webnya. Kita juga akan membahas bagaimana mengotomasi proses perbaruan sertifikat.
Sertifikat SSL dipakai di dalam server web untuk mengenkripsi traffic antara server dan klien dengan memberikan tambahan lapisan keamanan bagi user yang mengakses aplikasi web kita. Let's Encrypt memberikan cara mudah untuk mengambil dan memasang sertifikat terpercaya tanpa biaya.
Cara Mengamankan Apache Web Server dengan Let's Encrypt di Ubuntu 16.04
Prasyarat
Untuk menyelesaikan tutorial ini kita akan membutuhkan:
- Server Ubuntu 16.04 dengan user non-root yang memiliki akses sudo, yang mana bisa diatur dengan mengikuti tutorial Yang Perlu Dilakukan Setelah Memasang Server Ubuntu 16.04.
- Server web Nginx telah terpasang.
- Memiliki domain yang ingin didaftarkan (atau memiliki akses ke domain ini)
- Sebuah DNS A Record yang mengarahkan alamat IP publik ke server Nginx.
Setelah memenuhi semua prasyarat, mari kita lanjutkan dengan memasang Certbot, aplikasi klien untuk Let's Encrypt.
Langkah 1 — Pasang Klien Let's Encrypt
Sertifikat Let's Encrypt dapat diunduh lewat software klien yang berjalan di server kita. Klien resmi untuk Let's Encrypt bernama Certbot dan sudah memiliki repositori Ubuntu sendiri dengan versi terbaru. Karena pengembangannya yang sangat aktif, maka kita dapat langsung memasang Certbot terbaru dari repositorinya sendiri daripada menggunakan repositori Ubuntu.
Pertama, tambahkan dulu repositorinya:
sudo add-apt-repository ppa:certbot/certbot
Tekan ENTER
untuk menerima. Lalu, jalankan perintah di bawah:
sudo apt-get update
Terakhir, pasang Certbot dengan perintah:
sudo apt-get install python-certbot-apache
Software klien certbot
Let's Encrypt sekarang sudah siap dipakai.
Langkah 2 — Menyiapkan Nginx
Certbot dapat secara otomatis mengatur SSL untuk Nginx, tapi ia perlu mengetahui server block yang benar di konfigurasi. Nginx melakukan hal ini dengan melihat sebuat server_name
yang sama dengan domain untuk didaftarkan sertifikat SSL-nya. Jika pembaca menggunakan Nginx yang baru diinstall, kita bisa memperbarui file konfigurasi bawaannya:
$ sudo nano /etc/nginx/sites-available/default
Cari baris server_name
:
server_name _;
Ganti tanda _
dengan nama domain yang ingin dipakai:
server_name example.com www.example.com;
Simpan dan keluar dari editor. Lakukan validasi sintaks yang baru ditulis dengan menjalankan perintah:
$ sudo nginx -t
Jika tidak ada kesalahan, restart Nginx untuk membaca pengaturan yang baru:
$ sudo systemctl reload nginx
Certbot sekarang akan bisa menemukan server block yang benar dan meperbaruinya. Sekarang kita perlu memperbarui firewall agar mengijinkan traffic HTTPS.
Langkah 3 — Mengatur Firewall
Jika pembaca mengaktifkan firewall ufw
, seperti yang direkomendasikan di tutorial ini, pembaca perlu mengaturnya untuk menerima traffic HTTPS. Untungnya, Nginx telah mendaftarkan beberapa profil untuk ufw
saat dipasang.
Ketikkan perintah berikut:
$ sudo ufw status
Dari pesan yang muncul, kita dapat lihat bahwa baru traffic HTTP yang diijinkan:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Untuk menambahkan traffic HTTPS kita bisa meng-allow-kan profil "Nginx full" lalu menghapus profil "Nginx HTTP" yang sudah aktif.:
$ sudo ufw allow 'Nginx Full'
$ sudo ufw delete allow 'Nginx HTTP'
Ketikkan lagi perintah berikut:
$ sudo ufw status
Maka statusnya sekarang seharusnya sudah terlihat seperti berikut ini:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
Sekarang kita sudah siap untuk menjalankan Certbot dan mendapatkan sertifikat SSL.
Langkah 4 — Mendapatkan Sertifikat SSL
Certbot memberikan beberapa cara untuk mendapatkan sertifikat SSL melalui beberapa plugin. Plugin Nginx akan melakukan konfigurasi Nginx ulang dan memuat ulang konfigurasi yang dibutuhkan:
$sudo certbot --nginx -d example.com -d www.example.com
Perintah di atas akan menjalankan certbot
dengan plugin --nginx
menggunakan opsi -d
untuk menentukan nama domain yang ingin diatur.
Jika baru pertama kali menjalankan certbot
, ia akan meminta kita memasukkan alamat email dan menyetujui terms of service-nya. Setelah memberikan apa yang ia minta, certbot
lalu akan menghubungi server Let's Encrypt, menjalankan sebuah challenge untuk mengetahui apakah kita memiliki kontrol domain yang ditambahkan tadi.
Jika challenge berhasil, certbot
akan menanyakan bagaimana kita ingin mengatur konfigurasi 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):
Pilihan 2
akan me-redirect semua traffic untuk mengarah ke HTTPS. Sedangkan, opsi 1
masih tetap menerima permintaan HTTP. Opsi 2
merupakan pilihan terbaik kecuali masih ada layanan HTTP yang tidak bisa dijadikan HTTPS. Masukan angka yang diinginkan lalu tekan tombol ENTER
. Setelah proses dilanjutkan dan berhasil, certbot
akan memberikan pesan pemberitahuan tempat di mana sertifikatnya disimpan:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
expire on 2017-10-23. 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/donate-le
Sekarang coba akses alamat servernya dan perhatikan indikator dibagian address bar. Jika berhasil, maka akan muncul ikon gembok berwarna hijau.
Langkah 5 — Memperbarui Parameter Diffie-Hellman
Jika pembaca menguji server yang sekarang menggunakan SSL Labs Server Test, pengujian ini hanya akan memberikan nilai B karena parameter Diffie-Hellman. Kita bisa memperbaikinya dengan membuat file dhparam.pem dan menambahkannya ke server block.
Buat file tadi dengan OpenSSL:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Perintah di atas akan berlangsung agak lama, mungkin beberapa menit. Jika selesai, buka file konfigruasi Nginx yang ada server block kita. Di contoh ini, yang dibuka adalah konfigurasi bawaan:
$ sudo nano /etc/nginx/sites-available/default
Paste baris berikut di dalam file yang sedang dibuka di mana saja:
ssl_dhparam /etc/ssl/certs/dhparam.pem;
Simpan dan keluar dari editor. Jalankan perintah berikut untuk memeriksa kesalahan sintaks:
$ sudo nginx -t
Jika tidak ada kesalahan, muat ulang Nginx:
$ sudo systemctl reload nginx
Sekarang server lebih aman dan mendapatkan nilai A.
Langkah 6 — Memperbarui Sertifikat Secara Otomatis
Sertifikat Let's Encrypt hanya valid selama 90 hari. Pengguna disarankan untuk mengotomatiskan proses perbaruan sertifikatnya. Kita perlu menyiapkan perintah yang akan berjalan secara otomatis untuk memeriksa tanggal kadaluarsa sebuah sertifikat dan memperbaruinya.
Untuk menjalankan proses di atas kita akan menggunakan cron
, service sistem standar untuk melakukan pekerjaan yang berulang. Kita akan memberitahu cron
apa yang harus dilakukan dengan membuka dan mengubah isi file bernama crontab
.
sudo crontab -e
Tambahkan baris berikut ke dalam crontab:
crontab
. . .
15 3 * * * /usr/bin/certbot renew --quiet
Bagian 15 3 * * *
dari perintah di atas artinya "jalankan perintah ini setiap hari jam 3:15 pagi.
Perinath renew
akan memberitahu Certbot untuk memeriksa semua sertifikat yang terpasang di sistem dan memperbarui setiap sertifikat yang akan kadaluarsa dalam 30 hari. Opsi --quiet
memberitahu Certbot untuk tidak menampilkan informasi apapun atau menunggu masukan pengguna.
Sistem cron
akan menjalankan perintah ini setiap hari. Karena kita memasang sertifikat dengan menggunakan --apache
, maka Apache juga akan direstart untuk menggunakan sertifkat yang baru.
Penutup
Di tutorial ini, kita telah belajar bagaimana memasang sertifikat SSL gratis dari Let's Encrypt untuk mengamankan website yang menggunakan Nginx. Kami sarankan pembaca untuk memeriksan blog resmi Let's Encrypt untuk info terbaru serta membaca dokumentasi Certbot untuk detail lebih lengkap mengenai klien yang tadi kita gunakan.
Diterjemahkan dari How To Secure Nginx with Let's Encrypt on Ubuntu 16.04 di bawah Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
0
0
0
share