Cara Konfigurasi SSL Certificate Chain di Apache

Konfigurasi SSL Certificate Chain pada web server Apache adalah proses krusial untuk memastikan browser mengenali otoritas sertifikat (CA) yang menerbitkan SSL domain Anda. Tanpa rantai sertifikat (intermediate certificate) yang benar, pengunjung situs Anda akan menemui peringatan keamanan bertuliskan 'NET::ERR_CERT_AUTHORITY_INVALID' atau 'Untrusted Connection'.

Mulai Apache versi 2.4.8, direktif SSLCertificateChainFile sudah tidak digunakan lagi dan digabungkan ke dalam SSLCertificateFile. Namun, untuk versi Apache yang lebih lama atau konfigurasi spesifik tertentu, pemisahan file sertifikat utama dan intermediate masih sering diterapkan.

Prasyarat File Sertifikat SSL

Sebelum menyentuh file konfigurasi Apache, pastikan Anda telah menerima file-file berikut dari penyedia SSL (Certificate Authority/CA) Anda:

  • Primary Certificate (Domain Certificate): Biasanya dinamai namadomain.crt atau namadomain.pem.
  • Intermediate Certificate (Chain Certificate): Sering disebut sebagai ca_bundle.crt atau intermediate.crt.
  • Private Key: File kunci privat yang dihasilkan saat Anda membuat CSR (Certificate Signing Request).

Tabel Perbedaan Direktif SSL Apache Berdasarkan Versi

Versi Apache Sertifikat Utama Intermediate / Chain Keterangan
Apache 2.4.8 ke atas SSLCertificateFile Digabung ke SSLCertificateFile Gabungkan isi file domain dan CA bundle ke satu file .crt.
Apache di bawah 2.4.8 SSLCertificateFile SSLCertificateChainFile Menggunakan direktif terpisah untuk file CA bundle.

Langkah 1: Menggabungkan File Sertifikat (Apache 2.4.8+)

Untuk versi Apache modern, Anda harus menggabungkan sertifikat domain dan intermediate ke dalam satu file teks. Urutan penggabungan sangat penting: sertifikat domain diletakkan di bagian atas, diikuti oleh sertifikat intermediate di bawahnya.

cat namadomain.crt ca_bundle.crt > combined-cert.crt

Langkah 2: Konfigurasi Virtual Host Apache

Buka file konfigurasi Virtual Host Apache Anda (biasanya terletak di /etc/apache2/sites-available/default-ssl.conf atau di dalam direktori /etc/httpd/conf.d/). Sesuaikan blok konfigurasi SSL seperti contoh di bawah ini:

<VirtualHost *:443>
    ServerName namadomain.com
    DocumentRoot /var/www/html

    SSLEngine on
    
    # Untuk Apache 2.4.8 dan yang lebih baru (menggunakan file gabungan):
    SSLCertificateFile /etc/ssl/certs/combined-cert.crt
    
    # Untuk Apache versi lama (di bawah 2.4.8), gunakan baris ini:
    # SSLCertificateFile /etc/ssl/certs/namadomain.crt
    # SSLCertificateChainFile /etc/ssl/certs/ca_bundle.crt

    SSLCertificateKeyFile /etc/ssl/private/namadomain.key

    <Directory /var/www/html>
        AllowOverride All
    </Directory>
</VirtualHost>

Langkah 3: Uji Sintaks dan Restart Apache

Setelah menyimpan perubahan pada file konfigurasi, selalu lakukan pengecekan sintaks untuk menghindari kegagalan layanan web server saat melakukan restart.

# Uji sintaks konfigurasi
sudo apachectl configtest

# Jika pesan yang muncul adalah 'Syntax OK', restart Apache:
sudo systemctl restart apache2
# Atau untuk sistem berbasis RedHat/CentOS:
sudo systemctl restart httpd

Troubleshooting & Verifikasi Lapangan

Jika proses restart berhasil tetapi browser masih menampilkan peringatan keamanan:

  • Urutan Salah: Pastikan pada metode gabungan, sertifikat domain berada di atas dan CA bundle di bawahnya.
  • Missing Root/Intermediate: Beberapa CA memerlukan lebih dari satu file intermediate (Chain lengkap). Pastikan semua urutan CA terpasang.
  • Uji Eksternal: Gunakan perkakas pemeriksa SSL online seperti SSL Labs (Qualys) untuk mendeteksi apakah rantai sertifikat (Certificate Chain) sudah terbaca secara sempurna oleh sistem eksternal.