Cara Amankan Apache Menggunakan Let’s Encrypt di Ubuntu 18.04
|Cara Amankan Apache Menggunakan Let’s Encrypt di Ubuntu 18.04 – Let’s Encrypt adalah otoritas sertifikat SSL yang dibuat oleh Internet Security Research Group (ISRG). Ini memberikan sertifikat SSL gratis melalui proses terotomatisasi sepenuhnya yang dirancang untuk menghilangkan pembuatan sertifikat manual, validasi, instalasi, dan update.
Sertifikat SSL yang dikeluarkan oleh Let’s Encrypt dipercaya oleh semua browser terbaik dan populer hari ini. Dan sertifikat SSL Let’s Encrypt gratis ini di dukung oleh raksasa perusahaan teknologi seperti Google, Facebook, Mozilla dan lainnya.
Dalam tutorial ini, saya akan memberikan petunjuk langkah demi langkah tentang cara mengamankan web server Apache Anda menggunakan sertifikat SSL Let’s Encrypt menggunakan certbot tool di Ubuntu 18.04.
Persyaratan
Pastikan Anda telah memenuhi persyaratan berikut ini sebelum melanjutkan dengan tutorial Cara Amankan Apache menggunakan SSL Let’s Encrypt di Ubuntu 18.04 ini:
- Nama domain menunjuk ke IP server publik Anda. Disini saya akan menggunakan contoh domain
example.com
. - Anda telah instal Apache dan mengatur Apache virtual host untuk domain Anda, Anda bisa membaca panduan disini.
Cara Instal Certbot
Certbot adalah alat berfitur lengkap dan mudah digunakan yang dapat mengotomatisasi tugas-tugas untuk memperoleh dan memperbarui sertifikat SSL Let’s Encrypt dan konfigurasi web server. Paket certbot sudah termasuk dalam repositori Ubuntu default.
Silahkan Update daftar paket dan instal paket certbot di Ubuntu Anda dengan mengetikkan perintah berikut:
$ sudo apt update
$ sudo apt install certbot
Generate Strong Dh (Diffie-Hellman) Group
Pertukaran kunci Diffie – Hellman (DH) adalah metode pertukaran kunci kriptografi yang aman melalui saluran komunikasi yang tidak aman. Saya akan menghasilkan set parameter DH 2048 bit baru untuk memperkuat keamanan web server saya:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Jika Anda mau, Anda dapat mengubah ukurannya hingga 4096 bit, tetapi dalam hal ini, pembuatannya dapat memakan waktu lebih dari 30 menit tergantung pada system entropy.
Mendapatkan Sertifikat SSL Let’s Encrypt
Untuk mendapatkan sertifikat SSL Let’s Encrypt untuk domain, kita akan menggunakan plugin Webroot yang berfungsi dengan membuat file sementara untuk memvalidasi domain yang diminta dalam direktori ${webroot-path}/.well-known/acme-challenge
. Server Let’s Encrypt akan membuat permintaan HTTP ke file sementara untuk memvalidasi bahwa domain yang diminta menyelesaikan ke server tempat certbot berjalan.
Untuk membuatnya lebih sederhana, kita akan memetakan semua permintaan HTTP untuk .well-known/acme-challenge
ke direktori tunggal, /var/lib/letsencrypt
.
Perintah berikut akan membuat direktori dan membuatnya dapat ditulis untuk server Apache.
$ sudo mkdir -p /var/lib/letsencrypt/.well-known
$ sudo chgrp www-data /var/lib/letsencrypt
$ sudo chmod g+s /var/lib/letsencrypt
Untuk menghindari duplikasi kode, buat dua snippet konfigurasi berikut:
/etc/apache2/conf-available/letsencrypt.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
/etc/apache2/conf-available/ssl-params.conf
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off
SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"
Snippet di atas menggunakan chipper yang direkomendasikan oleh Cipherli.st, yang memungkinkan OCSP Stapling, HTTP Strict Transport Security (HSTS) dan menegakkan beberapa header HTTP yang berfokus pada keamanan.
Sebelum mengaktifkan file konfigurasi, pastikan mod_ssl
dan mod_headers
diaktifkan dengan mengetikkan perintah:
$ sudo a2enmod ssl
$ sudo a2enmod headers
Selanjutnya, aktifkan file konfigurasi SSL dengan menjalankan perintah berikut:
$ sudo a2enconf letsencrypt
$ sudo a2enconf ssl-params
Aktifkan modul HTTP / 2, yang akan membuat situs Anda lebih cepat dan lebih kuat:
$ sudo a2enmod http2
Muat ulang konfigurasi Apache agar perubahan diterapkan:
$ sudo systemctl reload apache2
Sekarang, kita dapat menjalankan Certbot tool dengan plugin webroot dan mendapatkan file sertifikat SSL dengan mengetik:
$ sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
Jika sertifikat SSL berhasil diperoleh, certbot akan mencetak pesan berikut:
Output
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-10-28. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. 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
Sekarang Anda sudah memiliki file sertifikat, edit konfigurasi virtual host domain Anda sebagai berikut:
/etc/apache2/sites-available/example.com.conf
ServerName example.com
ServerAlias www.example.com
Redirect permanent / https://example.com/
ServerName example.com
ServerAlias www.example.com
Protocols h2 http:/1.1
<If "%{HTTP_HOST} == 'www.example.com'">
Redirect permanent / https://example.com/
DocumentRoot /var/www/example.com/public_html
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
# Other Apache Configuration
Dengan konfigurasi di atas, saya memaksa HTTPS dan mengalihkan dari versi www ke versi non-www. Anda bebas untuk menyesuaikan konfigurasi sesuai dengan kebutuhan Anda.
Muat ulang layanan Apache agar perubahan diterapkan:
$ sudo systemctl reload apache2
Anda sekarang dapat membuka situs web Anda menggunakan https://
, dan Anda akan melihat ikon kunci hijau pada ujung browser Anda.
Jika Anda menguji domain Anda menggunakan SSL Labs Server Test, Anda akan mendapatkan nilai A+, seperti yang ditunjukkan gambar di bawah ini:
Perpanjangan otomatis Sertifikat SSL Let’s Encrypt
Sertifikat Let’s Encrypt berlaku selama 90 hari. Untuk secara otomatis memperbarui sertifikat sebelum habis masa berlakunya, paket certbot membuat cronjob yang berjalan dua kali sehari dan secara otomatis memperbarui sertifikat apa pun 30 hari sebelum berakhir.
Setelah sertifikat diperbarui, saya juga harus memuat ulang layanan Apache. Tambahkan --renew-hook "systemctl reload apache2"
ke file /etc/cron.d/certbot
sehingga terlihat seperti berikut:
$ 0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload apache2"
Untuk menguji proses update, Anda dapat menggunakan switch certbot --dry-run
:
$ sudo certbot renew --dry-run
Jika tidak ada kesalahan, itu berarti proses update telah berhasil.
Kesimpulan
Dalam tutorial panduan ubuntu ini, Anda amankan Apache menggunakan Let’s Encrypt client certbot, untuk mengunduh sertifikat SSL untuk domain Anda. Anda juga telah membuat snippet Apache untuk menghindari duplikasi kode dan mengkonfigurasi Apache untuk menggunakan sertifikat. Di akhir tutorial, Anda juga telah menyiapkan cronjob untuk perpanjangan sertifikat otomatis.
Jika Anda ingin mempelajari lebih lanjut tentang cara menggunakan Certbot, Anda dapat mempelajarinya sendiri melalui dokumentasi resmi certbot disini.
Informasi lebih lanjut :
1. Panduan Lengkap Cara Instal Apache di Ubuntu 18.04
2. Cara Instal dan Amankan phpMyAdmin dengan Apache di Ubuntu 18.04
3. Cara Konfigurasi Apache Virtual Host di Ubuntu 18.04
4. Cara Amankan Apache Server Menggunakan Let’s Encrypt di Ubuntu 18.04
Anda Terbantu artikel ini? Silahkan bergabung dengan centerklik di Twitter dan Facebook+.
Register Now: TOP 10 Hosting
Dapatkan Hosting Murah dengan Kualitas Terbaik. For Serious Blogger! View Deals