Pengaturan SSL pada web server Apache di sistem operasi Linux mutlak diperlukan untuk mengamankan pertukaran data antara server dan klien melalui protokol HTTPS. Proses ini melibatkan pengaktifan modul SSL, penyiapan berkas sertifikat (.crt dan .key), serta konfigurasi blok VirtualHost pada porta 443 agar Apache dapat melayani permintaan terenkripsi dengan baik.
Sebelum memulai konfigurasi, pastikan Anda telah memiliki sertifikat SSL yang sah (baik dari Let's Encrypt, Comodo, Sectigo, maupun sertifikat self-signed untuk kebutuhan pengujian lokal) serta hak akses sudo atau root pada server Apache Anda.
Langkah-Langkah Konfigurasi SSL Apache
1. Mengaktifkan Modul SSL dan Header
Langkah pertama adalah memastikan modul SSL dan headers di Apache sudah aktif. Jalankan perintah berikut pada terminal server Ubuntu atau Debian:
sudo a2enmod ssl
sudo a2enmod headers
sudo systemctl restart apache2
Untuk pengguna sistem berbasis Red Hat (CentOS/RHEL/AlmaLinux), pastikan paket mod_ssl sudah terinstal:
sudo dnf install mod_ssl
sudo systemctl restart httpd
2. Menempatkan Berkas Sertifikat SSL
Letakkan berkas sertifikat dan kunci privat pada direktori yang aman di dalam sistem. Secara umum, standar penempatan berkas di Linux adalah sebagai berikut:
| Jenis Berkas | Lokasi Standar Direktori | Keterangan |
|---|---|---|
| Kunci Privat (.key) | /etc/ssl/private/ |
Bersifat rahasia, batasi hak akses (chmod 600) |
| Sertifikat Publik (.crt/.cer) | /etc/ssl/certs/ |
Sertifikat utama dari Certificate Authority |
| Sertifikat Intermediate / CA Bundle | /etc/ssl/certs/ |
Rantai kepercayaan (Chain) dari CA |
3. Konfigurasi VirtualHost untuk Port 443
Buat atau sunting berkas konfigurasi VirtualHost Apache untuk domain Anda (biasanya terletak di /etc/apache2/sites-available/nama-domain.conf). Masukkan konfigurasi dasar HTTPS berikut:
<VirtualHost *:443>
ServerName contohdomain.com
ServerAlias www.contohdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/contohdomain.crt
SSLCertificateKeyFile /etc/ssl/private/contohdomain.key
SSLCertificateChainFile /etc/ssl/certs/intermediate.crt
# Pengaturan Keamanan Modern SSL
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5
ErrorLog ${APACHE_LOG_DIR}/ssl-error.log
CustomLog ${APACHE_LOG_DIR}/ssl-access.log combined
</VirtualHost>
4. Mengaktifkan Situs dan Redirect HTTP ke HTTPS
Jika menggunakan Ubuntu/Debian, aktifkan konfigurasi situs dengan perintah a2ensite:
sudo a2ensite nama-domain.conf
Agar pengunjung otomatis diarahkan dari HTTP (port 80) ke HTTPS (port 443), tambahkan blok VirtualHost untuk port 80:
<VirtualHost *:80>
ServerName contohdomain.com
ServerAlias www.contohdomain.com
Redirect permanent / https://contohdomain.com/
</VirtualHost>
5. Pengujian dan Penerapan Konfigurasi
Sebelum me-restart layanan Apache, selalu lakukan uji sintaks untuk menghindari kegagalan sistem saat booting:
sudo apache2ctl configtest
Jika hasil pengecekan memunculkan pesan Syntax OK, terapkan perubahan dengan me-restart Apache:
sudo systemctl restart apache2
Troubleshooting Masalah Umum SSL Apache
Apabila situs tidak dapat diakses setelah konfigurasi, periksa beberapa hal berikut:
- Firewall: Pastikan port 443 (HTTPS) sudah dibuka pada UFW (
sudo ufw allow 443/tcp) atau firewalld. - Izin Berkas: Pastikan kunci privat (.key) hanya dapat dibaca oleh root (
chmod 600). Apache akan menolak memuat kunci jika izin berkas terlalu longgar. - Rantai Sertifikat: Pastikan
SSLCertificateChainFileatauSSLCertificateFilesudah menyertakan CA bundle yang benar agar tidak muncul peringatan Untrusted Certificate pada peramban web.