Mengonfigurasi koneksi SSL (Secure Sockets Layer), memungkinkan Anda menambahkan protokol enkripsi asimetris tambahan ke HTTP umum. Protokol SSL dapat berguna untuk memperkuat sistem otentikasi situs web atau pertukaran data antara aplikasi dan server. Dalam panduan ini Anda akan melihat cara mengonfigurasi koneksi SSL dan mengaktifkan HTTPS di Apache dengan Ubuntu 18.04.
Pertama, sambungkan ke server Anda melalui koneksi SSH. Jika Anda belum melakukannya, ikuti panduan kami disarankan untuk terhubung dengan aman dengan protokol SSH. Untuk server lokal, lanjutkan ke langkah berikutnya dan buka terminal server Anda.
Mendapatkan Sertifikat SSL
Untuk membuat sambungan yang aman, Apache memerlukan sertifikat SSL yang dapat diperoleh dari Otoritas Sertifikasi (CA). Untuk kenyamanan, dalam contoh ini kita akan menggunakan sertifikat yang ditandatangani sendiri atau ditandatangani sendiri, hanya digunakan di lingkungan pengujian dan pengembangan. Untuk mendapatkan sertifikat yang ditandatangani sendiri, lihat panduan kami untuk Membuat Sertifikat SSL yang Ditandatangani Sendiri.
Jika Anda tertarik untuk mendapatkan sertifikat SSL gratis yang dikeluarkan oleh Otoritas Sertifikasi, ikuti panduan kami tentang Cara mengamankan Apache dengan Let's Encrypt dan Ubuntu 18.04 .
Catatan penting:
Selama pembuatan sertifikat, masukkan alamat IP server Anda dan atau nama domain saat diminta Nama Umum:
Common Name (e.g. server FQDN or YOUR name) []: domain.com
Setelah mendapatkan sertifikat, buat folder /etc/certificate:
$ sudo mkdir /etc/certificate
Kemudian simpan sertifikat dan kunci pribadi di dalamnya.
Mengonfigurasi parameter SSL Apache
Lanjutkan dengan menyetel arahan untuk koneksi aman yang akan dibuat Apache. Untuk melakukannya, buat file ssl-params.conf di direktori Apache conf-available:
$ sudo nano /etc/apache2/conf-available/ssl-params.conf
Tempelkan konfigurasi dasar berikut ke dalam file yang baru dibuat:
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
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
Kemudian simpan dan tutup file.
Cara mengubah Host Virtual
Kemudian, ubah konfigurasi SSL Host Virtual domain yang ingin Anda lindungi dengan koneksi SSL. Dalam tutorial ini konfigurasi SSL dari Apache Virtual Host default akan digunakan, sebagai contoh.
Buka konfigurasi SSL Host Virtual:
$ sudo nano /etc/apache2/sites-available/default-ssl.conf
Anda akan menemukan file terstruktur sebagai berikut :
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Siapkan direktif ServerAdmin dengan benar dengan memasukkan email Anda dan tambahkan direktif ServerName diikuti dengan domain atau alamat IP server Anda.
Terakhir, ubah jalur yang ditunjukkan oleh arahan SSLCertificateFile dan SSLCertificateKeyFile, masing-masing memasukkan jalur sertifikat dan kunci pribadi Anda .
Anda akan mendapatkan hasil seperti berikut :
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName mydomain.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/certificate/certificate.crt
SSLCertificateKeyFile /etc/certificate/private.key
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>
Kemudian simpan dan tutup file.
Cara mengkonfigurasi Firewall
Jika ada firewall di sistem Anda, siapkan untuk mengaktifkan lalu lintas HTTP dan lalu lintas HTTPS ke komputer Anda.
Saat menggunakan firewall UFW, tersedia beberapa profil yang telah diinstal sebelumnya untuk Apache. Jadi mari kita lihat cara mengaktifkannya.
Untuk memeriksa profil yang tersedia yang terpasang di firewall UFW, jalankan perintah ini:
$ sudo ufw app list
Daftar yang mirip dengan berikut ini akan ditampilkan di layar:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Untuk mengizinkan lalu lintas HTTP (Port 80) dan HTTPS (Port 443), gunakan profil "Apache Full".
Periksa informasi profil sebagai berikut:
$ sudo ufw app info "Apache Full"
Deskripsi profil layar akan ditampilkan :
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
Setelah memverifikasi profil, aktifkan:
$ sudo ufw allow in "Apache Full"
Cara mengkonfigurasi Apache
Pada titik ini perubahan konfigurasi Apache dapat dilakukan.
Aktifkan modul mod_ssl dan mod_headers:
$ sudo a2enmod ssl
$ sudo a2enmod headers
Aktifkan pembacaan konfigurasi SSL yang dibuat sebelumnya:
$ sudo a2enconf ssl-params
Aktifkan Host Virtual SSL default:
$ sudo a2ensite default-ssl
Periksa apakah Anda tidak membuat kesalahan sintaks dalam file konfigurasi Apache:
$ sudo apache2ctl configtest
Jika pesan "Syntax OK" muncul di layar, lanjutkan dengan memulai ulang Apache:
$ sudo systemctl restart apache2
Cara memeriksa koneksi aman
Buka browser Anda dengan menghubungkan ke domain atau alamat IP Virtual Host yang Anda konfigurasikan, pastikan untuk menggunakan protokol https
https://mydomain.com