Cara Menginstal Sertifikat SSL pada Domain
Sebuah sertifikat SSL (Secure Sockets Layer / TLS) adalah kredensial kriptografi yang dikeluarkan oleh Certificate Authority (CA) tepercaya yang mengautentikasi identitas server Anda dan membangun saluran terenkripsi antara server dan browser klien. Ketika dipasang dengan benar, sertifikat ini meningkatkan situs Anda dari http:// ke https://, mengaktifkan gembok browser, dan mencegah intersepsi man-in-the-middle terhadap data yang dikirimkan.
Untuk SEO, Google telah memperlakukan HTTPS sebagai sinyal peringkat yang dikonfirmasi sejak 2014. Bagi pengguna, sertifikat yang hilang atau salah konfigurasi memicu peringatan keamanan browser yang merusak tingkat konversi. Baik Anda mengelola satu halaman landing maupun infrastruktur multi-domain, mendapatkan SSL yang benar — dan mempertahankannya — adalah hal yang tidak bisa ditawar.
Prasyarat Sebelum Memulai
Sebelum menyentuh satu file konfigurasi pun, pastikan Anda memiliki hal-hal berikut:
- Nama domain terdaftar yang diarahkan ke alamat IP server Anda dengan DNS yang telah sepenuhnya dipropagasi. Anda dapat mendaftarkan atau mentransfer domain melalui Pendaftaran Domain.
- Bundel sertifikat SSL dari CA. Ini biasanya mencakup:
certificate.crt — sertifikat bertanda tangan utama Anda
private.key — kunci privat yang dibuat bersama CSR Anda
ca_bundle.crt — rantai CA perantara (kadang disebut file rantai)
Akses server atau panel kontrol — baik kredensial cPanel/Plesk maupun akses root/sudo SSH ke server.
Perangkat lunak web server — Apache atau Nginx, yang berjalan dan dikonfigurasi untuk domain Anda.
Port 443 terbuka — verifikasi bahwa firewall Anda mengizinkan TCP masuk pada port 443 sebelum memasang apa pun.
Jika Anda menjalankan lingkungan VPS Hosting, Anda akan memiliki akses root penuh dan dapat menggunakan salah satu dari tiga metode di bawah ini. Pengguna shared hosting biasanya terbatas pada metode cPanel.
Memilih Jenis Sertifikat SSL yang Tepat
Tidak semua sertifikat setara. Memilih jenis yang salah membuang uang atau meninggalkan celah dalam cakupan.
Jenis Sertifikat
Tingkat Validasi
Waktu Penerbitan
Gembok Browser
Terbaik Untuk
—
—
—
—
—
DV (Domain Validated)
Kontrol domain saja
Menit
Ya
Blog, lingkungan dev, situs kecil
OV (Organization Validated)
Domain + identitas organisasi
1–3 hari
Ya
Situs bisnis, platform SaaS
EV (Extended Validation)
Pemeriksaan entitas hukum penuh
3–7 hari
Ya (nama organisasi di beberapa browser)
E-commerce, perbankan, portal kepercayaan tinggi
Wildcard (`*.domain.com`)
DV atau OV
Menit–hari
Ya
Penerapan multi-subdomain
Multi-Domain (SAN)
DV, OV, atau EV
Bervariasi
Ya
Beberapa domain berbeda dalam satu sertifikat
Let’s Encrypt (DV gratis)
Kontrol domain saja
Detik
Ya
Domain yang dapat diakses publik mana pun
Untuk e-commerce produksi atau situs mana pun yang menangani data kartu pembayaran, sertifikat OV atau EV dari CA komersial sangat direkomendasikan. Sertifikat DV Let’s Encrypt sepenuhnya tepercaya dan sangat baik untuk sebagian besar kasus penggunaan, tetapi tidak menyertakan verifikasi identitas organisasi.
Anda dapat membeli sertifikat komersial langsung melalui Sertifikat SSL jika Anda memerlukan cakupan OV, EV, atau Wildcard dengan dukungan khusus.
Metode 1: Memasang Sertifikat SSL melalui cPanel
Antarmuka grafis cPanel adalah jalur tercepat bagi pengguna pada paket managed atau Shared Web Hosting. Jika Anda lebih suka lingkungan VPS yang dikelola cPanel, sebuah VPS dengan cPanel memberi Anda antarmuka yang sama dengan kontrol server penuh.
Langkah 1: Masuk ke cPanel
Navigasikan ke URL login cPanel Anda:
https://yourdomain.com:2083
Autentikasi dengan kredensial hosting Anda.
Langkah 2: Navigasi ke SSL/TLS Manager
Di bagian Security pada dasbor cPanel, klik SSL/TLS. Kemudian pilih Manage SSL Sites di bawah judul “Install and Manage SSL for your site (HTTPS)”.
Langkah 3: Pilih Domain Target
Gunakan dropdown Domain untuk memilih domain yang ingin Anda amankan. Jika domain tidak muncul, konfirmasi bahwa domain tersebut ditambahkan sebagai addon atau domain utama di cPanel.
Langkah 4: Tempel Komponen Sertifikat
Buka setiap file sertifikat di editor teks biasa (bukan Word) dan tempel isinya ke dalam kolom yang sesuai:
Certificate (CRT): Isi dari certificate.crtprivate.key. Jika Anda membuat CSR di dalam cPanel, kolom ini otomatis terisi dari penyimpanan kunci cPanel.ca_bundle.crt. Menghilangkan kolom ini adalah salah satu penyebab paling umum kesalahan “untrusted certificate” pada perangkat mobile dan browser lama, karena browser tidak dapat membangun rantai ke root tepercaya.Langkah 5: Pasang dan Verifikasi
Klik Install Certificate. cPanel memvalidasi pasangan kunci-sertifikat sebelum mengonfirmasi. Jika ada ketidakcocokan antara kunci privat dan kunci publik sertifikat, cPanel akan menolak pemasangan dengan kesalahan eksplisit — jangan abaikan.
Setelah pemasangan, kunjungi https://yourdomain.com dan konfirmasi gembok muncul. Juga uji https://www.yourdomain.com jika subdomain www sedang digunakan.
Jebakan umum cPanel: AutoSSL (integrasi Let’s Encrypt bawaan cPanel) dapat menimpa sertifikat yang dipasang secara manual pada siklus pembaruan berikutnya. Jika Anda memasang sertifikat komersial, nonaktifkan AutoSSL untuk domain tersebut di bawah cPanel > SSL/TLS Status untuk mencegah penggantian yang tidak disengaja.
Metode 2: Pemasangan Otomatis dengan Let’s Encrypt dan Certbot
Certbot adalah klien ACME referensi untuk Let’s Encrypt. Certbot menangani pembuatan CSR, validasi domain, pengambilan sertifikat, konfigurasi web server, dan pembaruan — semuanya secara otomatis. Ini adalah pendekatan yang tepat untuk server Linux mana pun yang Anda kelola secara langsung.
Langkah 1: Hubungkan ke Server Anda melalui SSH
ssh username@your-server-ipLangkah 2: Pasang Certbot
Debian / Ubuntu (Apache):
sudo apt update && sudo apt install -y certbot python3-certbot-apacheDebian / Ubuntu (Nginx):
sudo apt update && sudo apt install -y certbot python3-certbot-nginxRHEL / AlmaLinux / Rocky Linux (Apache):
sudo dnf install -y epel-release
sudo dnf install -y certbot python3-certbot-apacheRHEL / AlmaLinux / Rocky Linux (Nginx):
sudo dnf install -y epel-release
sudo dnf install -y certbot python3-certbot-nginxLangkah 3: Dapatkan dan Pasang Sertifikat
Untuk Apache:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.comUntuk Nginx:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comCertbot melakukan tantangan HTTP-01 secara default: ia menempatkan file sementara di root web Anda dan meminta server Let’s Encrypt untuk mengambilnya melalui port 80. Ini berarti port 80 harus terbuka dan DNS Anda harus diselesaikan dengan benar sebelum menjalankan perintah.
Saat diminta, pilih opsi untuk mengalihkan semua lalu lintas HTTP ke HTTPS. Ini menulis pengalihan permanen 301 ke dalam konfigurasi server Anda, yang merupakan perilaku yang benar untuk SEO dan keamanan.
Langkah 4: Verifikasi Pembaruan Otomatis
Sertifikat Let’s Encrypt kedaluwarsa setelah 90 hari. Certbot memasang timer systemd (atau cron job pada sistem lama) yang mencoba pembaruan dua kali sehari ketika sertifikat berada dalam 30 hari sebelum kedaluwarsa. Uji logika pembaruan tanpa benar-benar memperbarui:
sudo certbot renew --dry-runDry run yang berhasil mengonfirmasi bahwa pipeline pembaruan berfungsi. Periksa status timer dengan:
systemctl status certbot.timerKasus tepi — tantangan DNS-01 untuk sertifikat wildcard: Tantangan HTTP-01 tidak dapat memvalidasi domain wildcard (*.yourdomain.com). Untuk wildcard, gunakan tantangan DNS-01, yang mengharuskan Anda membuat record TXT _acme-challenge di zona DNS Anda:
sudo certbot certonly --manual --preferred-challenges dns -d "*.yourdomain.com" -d yourdomain.comIkuti petunjuk untuk menambahkan record TXT, tunggu propagasi DNS, lalu tekan Enter untuk menyelesaikan validasi.
Metode 3: Pemasangan SSL Manual melalui SSH (Apache dan Nginx)
Pemasangan manual memberi Anda kontrol tepat atas penempatan sertifikat, cipher suite, dan konfigurasi virtual host. Ini adalah pendekatan yang disukai untuk server produksi di mana Anda perlu menerapkan kebijakan TLS tertentu.
Langkah 1: Unggah File Sertifikat ke Server
Gunakan scp untuk mentransfer file dari mesin lokal Anda:
scp certificate.crt private.key ca_bundle.crt username@your-server-ip:/tmp/Kemudian pindahkan ke direktori yang aman dan tidak dapat diakses web:
sudo mkdir -p /etc/ssl/yourdomain
sudo mv /tmp/certificate.crt /etc/ssl/yourdomain/
sudo mv /tmp/private.key /etc/ssl/yourdomain/
sudo mv /tmp/ca_bundle.crt /etc/ssl/yourdomain/
sudo chmod 600 /etc/ssl/yourdomain/private.key
sudo chmod 644 /etc/ssl/yourdomain/certificate.crt /etc/ssl/yourdomain/ca_bundle.crtCatatan keamanan penting: Kunci privat tidak boleh dapat dibaca oleh semua orang. Izin chmod 600 membatasinya hanya untuk pengguna root. Pada sistem di mana Apache atau Nginx berjalan sebagai pengguna non-root (misalnya, www-data), layanan tetap membaca kunci saat startup saat berjalan sebagai root sebelum melepaskan hak istimewa — jadi 600 yang dimiliki oleh root adalah benar.
Langkah 2a: Konfigurasi Apache
Edit konfigurasi virtual host untuk domain Anda:
sudo nano /etc/apache2/sites-available/yourdomain.com.confTambahkan atau modifikasi blok virtual host SSL:
<VirtualHost *:80>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
Redirect permanent / https://yourdomain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
SSLEngine on
SSLCertificateFile /etc/ssl/yourdomain/certificate.crt
SSLCertificateKeyFile /etc/ssl/yourdomain/private.key
SSLCertificateChainFile /etc/ssl/yourdomain/ca_bundle.crt
# Modern TLS hardening
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
DocumentRoot /var/www/yourdomain
</VirtualHost>Aktifkan modul SSL dan situs, lalu restart Apache:
sudo a2enmod ssl headers
sudo a2ensite yourdomain.com.conf
sudo apache2ctl configtest
sudo systemctl restart apache2Selalu jalankan apache2ctl configtest sebelum restart. Kesalahan sintaks dalam file konfigurasi akan mematikan seluruh web server.
Langkah 2b: Konfigurasi Nginx
Edit blok server domain Anda:
sudo nano /etc/nginx/sites-available/yourdomain.comTambahkan konfigurasi berikut:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://yourdomain.com$request_uri;
}
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/ssl/yourdomain/certificate.crt;
ssl_certificate_key /etc/ssl/yourdomain/private.key;
ssl_trusted_certificate /etc/ssl/yourdomain/ca_bundle.crt;
# Modern TLS hardening
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
root /var/www/yourdomain;
index index.html index.php;
}Aktifkan situs dan uji:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxPenjelasan OCSP Stapling: Tanpa stapling, browser harus menghubungi responder OCSP CA selama setiap handshake TLS untuk memeriksa apakah sertifikat telah dicabut. Ini menambah latensi dan membocorkan data penelusuran ke CA. Dengan ssl_stapling on, Nginx menyimpan respons OCSP dalam cache dan menyajikannya langsung ke klien, menghilangkan round-trip.
Penguatan TLS: Apa yang Terlewat dari Konfigurasi Asli
Sertifikat yang dipasang dengan pengaturan default sudah aman, tetapi belum diperkuat. Tabel berikut merangkum direktif tambahan yang membedakan nilai SSL Labs yang lulus dari A+:
| Direktif Penguatan | Direktif Apache | Direktif Nginx | Tujuan |
|---|---|---|---|
| — | — | — | — |
| Nonaktifkan TLS 1.0 / 1.1 | `SSLProtocol all -TLSv1 -TLSv1.1` | `ssl_protocols TLSv1.2 TLSv1.3` | Hilangkan kerentanan protokol yang sudah usang |
| Header HSTS | `Header always set Strict-Transport-Security` | `add_header Strict-Transport-Security` | Paksa HTTPS di tingkat browser, cegah SSL stripping |
| OCSP Stapling | `SSLUseStapling on` | `ssl_stapling on` | Kurangi latensi handshake, tingkatkan privasi |
| Nonaktifkan session tickets | `SSLSessionTickets off` | `ssl_session_tickets off` | Cegah degradasi forward secrecy |
| Cipher suite yang kuat | `SSLCipherSuite ECDHE-…` | `ssl_ciphers ECDHE-…` | Terapkan cipher AEAD, hilangkan RC4/3DES |
| HTTP/2 | `Protocols h2 http/1.1` | `listen 443 ssl http2` | Peningkatan performa melalui TLS |
Memverifikasi dan Menguji Pemasangan SSL
Pemasangan tidak selesai sampai Anda telah memverifikasi hasilnya dari perspektif eksternal.
Verifikasi Browser
Kunjungi https://yourdomain.com. Ikon gembok mengonfirmasi sertifikat yang valid dan tepercaya. Klik gembok dan periksa detail sertifikat: verifikasi bahwa Common Name atau Subject Alternative Name cocok dengan domain Anda, dan periksa tanggal kedaluwarsa.
Uji Server SSL Labs
Navigasikan ke SSL Labs dan masukkan domain Anda. Laporan menilai konfigurasi TLS Anda dari F hingga A+ dan menandai masalah tertentu: cipher suite yang lemah, sertifikat rantai yang hilang, ketiadaan HSTS, dan dukungan protokol. Nilai A+ memerlukan HSTS dengan max-age yang panjang dan tidak ada dukungan untuk TLS 1.0 atau 1.1.
Verifikasi Baris Perintah dengan OpenSSL
openssl s_client -connect yourdomain.com:443 -servername yourdomain.comIni menghasilkan rantai sertifikat penuh, cipher suite yang dinegosiasikan, dan versi TLS. Cari Verify return code: 0 (ok) di akhir output. Kode pengembalian non-nol apa pun menunjukkan masalah rantai atau kepercayaan.
Untuk memeriksa tanggal kedaluwarsa sertifikat secara langsung:
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -datesMemeriksa Konten Campuran
Setelah mengaktifkan HTTPS, konten campuran adalah masalah residual yang paling umum. Ini terjadi ketika halaman HTTPS memuat sumber daya (gambar, skrip, stylesheet, iframe) melalui HTTP. Konten campuran memblokir sumber daya aktif (skrip, iframe) sepenuhnya di browser modern dan menghasilkan peringatan konsol untuk sumber daya pasif (gambar).
Perbaiki konten campuran dengan:
- Memperbarui semua URL
http://yang dikodekan keras di CMS atau HTML Anda kehttps://atau protokol-relatif//. - Menambahkan header Content Security Policy dengan
upgrade-insecure-requestssebagai tangkapan sementara:
add_header Content-Security-Policy "upgrade-insecure-requests" always;- Menggunakan DevTools browser (F12 > Console) untuk mengidentifikasi sumber daya yang melanggar secara spesifik.
Pembaruan Sertifikat dan Manajemen Siklus Hidup
| Sumber Sertifikat | Masa Berlaku Default | Metode Pembaruan | Otomatisasi |
|---|---|---|---|
| — | — | — | — |
| Let’s Encrypt (Certbot) | 90 hari | `certbot renew` melalui timer systemd | Sepenuhnya otomatis |
| CA Komersial (cPanel) | 1–2 tahun | Penerbitan ulang dan pemasangan ulang manual | Manual atau terskrip |
| CA Komersial (SSH) | 1–2 tahun | Ganti file, muat ulang web server | Dapat diotomatisasi dengan cron |
| CA Internal / self-signed | Kustom | Manual | Manual |
Untuk sertifikat komersial yang dikelola secara manual, atur pengingat kalender 30 hari sebelum kedaluwarsa. Sertifikat yang kedaluwarsa lebih buruk daripada tidak ada sertifikat — browser menampilkan kesalahan pemblokiran halaman penuh yang tidak dapat dengan mudah dilewati pengguna.
Jika Anda menjalankan beberapa domain atau aplikasi lalu lintas tinggi pada Dedicated Server, pertimbangkan untuk menerapkan solusi manajemen sertifikat terpusat seperti cert-manager (Kubernetes), Vault PKI, atau sertifikat wildcard untuk mengurangi overhead pembaruan di seluruh subdomain.
Matriks Keputusan: Metode Pemasangan Mana yang Digunakan
| Skenario | Metode yang Direkomendasikan |
|---|---|
| — | — |
| Shared hosting, tanpa akses SSH | cPanel SSL/TLS Manager |
| VPS atau dedicated server, sertifikat gratis diperlukan | Certbot (Let’s Encrypt) |
| VPS atau dedicated server, sertifikat komersial OV/EV | Pemasangan SSH manual |
| Sertifikat wildcard (`*.domain.com`) | SSH manual + tantangan DNS-01 melalui Certbot |
| Sertifikat SAN multi-domain | Pemasangan SSH manual |
| Tanpa pengalaman teknis, managed hosting | cPanel AutoSSL atau SSL satu klik dari penyedia hosting |
Daftar Periksa Poin Penting Teknis
- Konfirmasi port 443 terbuka di firewall Anda sebelum memasang sertifikat apa pun.
- Selalu verifikasi bahwa kunci privat cocok dengan sertifikat sebelum pemasangan:
openssl x509 -noout -modulus -in certificate.crt | md5sumdanopenssl rsa -noout -modulus -in private.key | md5sumharus menghasilkan hash yang identik. - Sertakan rantai perantara penuh (
ca_bundle.crt) — menghilangkannya menyebabkan kegagalan kepercayaan pada browser mobile bahkan ketika Chrome desktop menampilkan gembok. - Atur
chmod 600pada file kunci privat; jangan pernah mengeksposnya di direktori yang dapat diakses web. - Nonaktifkan TLS 1.0 dan TLS 1.1 dalam konfigurasi web server Anda — protokol ini sudah usang dan dapat dieksploitasi.
- Aktifkan HSTS dengan
includeSubDomainshanya setelah mengonfirmasi bahwa semua subdomain juga menyajikan HTTPS. - Jalankan
certbot renew --dry-runsetelah pengaturan Certbot awal untuk mengonfirmasi pipeline pembaruan berfungsi. - Uji dengan SSL Labs setelah setiap pemasangan atau perubahan konfigurasi.
- Audit konten campuran segera setelah beralih ke HTTPS — ini secara diam-diam merusak fungsionalitas.
- Untuk sertifikat wildcard Let’s Encrypt, gunakan tantangan DNS-01, bukan HTTP-01.
Pertanyaan yang Sering Diajukan
Apa perbedaan antara sertifikat SSL dan sertifikat TLS?
SSL (Secure Sockets Layer) adalah protokol lama yang sudah tidak digunakan sejak 1999. Penggantinya, TLS (Transport Layer Security), adalah yang sebenarnya digunakan oleh semua koneksi HTTPS modern. Istilah “sertifikat SSL” bertahan sebagai singkatan industri, tetapi setiap sertifikat yang diterbitkan saat ini beroperasi melalui TLS 1.2 atau TLS 1.3.
Mengapa sertifikat SSL saya ditampilkan sebagai tepercaya di Chrome tetapi tidak di perangkat Android?
Ini hampir selalu merupakan rantai sertifikat perantara yang hilang. Chrome desktop memiliki mekanisme pengambilan sertifikat yang agresif (AIA fetching) yang dapat merekonstruksi rantai bahkan ketika tidak ada di server. Penyimpanan sistem Android tidak. Selalu sertakan file rantai ca_bundle.crt dalam konfigurasi server Anda.
Bisakah saya memasang sertifikat SSL pada domain yang belum memiliki situs web?
Ya, tetapi hanya jika record DNS A domain tersebut mengarah ke alamat IP server. CA harus dapat menjangkau server untuk menyelesaikan validasi domain. Jika DNS belum dipropagasi, tantangan akan gagal.
Bagaimana cara memperbarui sertifikat SSL komersial tanpa downtime?
Buat CSR baru di server, kirimkan ke CA Anda, terima bundel sertifikat baru, ganti file sertifikat di server, dan muat ulang web server (systemctl reload apache2 atau systemctl reload nginx). Pemuatan ulang menerapkan sertifikat baru tanpa memutus koneksi yang ada, tidak seperti restart penuh.
Apakah memasang sertifikat SSL secara otomatis mengalihkan HTTP ke HTTPS?
Tidak. Memasang sertifikat hanya mengaktifkan HTTPS. Pengalihan HTTP ke HTTPS harus dikonfigurasi secara terpisah di virtual host atau blok server Anda. Plugin --apache dan --nginx Certbot menawarkan untuk mengonfigurasi pengalihan ini secara otomatis selama pemasangan. Untuk pemasangan manual, tambahkan direktif Redirect permanent (Apache) atau return 301 (Nginx) yang eksplisit di blok server port 80.
