Saat pertama kali belajar web server, saya penasaran bagaimana sebuah website bisa menampilkan ikon gembok (🔒) di browser. Setelah mencari tahu, ternyata salah satu penyebabnya adalah karena website tersebut menggunakan SSL (Secure Sockets Layer) atau lebih tepatnya sertifikat TLS.
Karena masih dalam tahap belajar dan belum memiliki domain publik, saya memutuskan menggunakan SSL Self-Signed. Sertifikat jenis ini dibuat sendiri oleh server sehingga cocok digunakan untuk kebutuhan pembelajaran. Meskipun browser akan menampilkan peringatan bahwa sertifikat tidak berasal dari Certificate Authority (CA) resmi, SSL Self-Signed tetap mengenkripsi komunikasi antara browser dan server.
Pada artikel ini saya akan menjelaskan langkah demi langkah proses instalasi SSL Self-Signed pada Apache beserta penjelasan setiap perintah yang digunakan.
Apa itu SSL Self-Signed?
SSL Self-Signed adalah sertifikat SSL yang dibuat dan ditandatangani oleh server itu sendiri, bukan oleh lembaga penerbit sertifikat resmi seperti Let’s Encrypt, DigiCert, ataupun Sectigo.
Kelebihan SSL Self-Signed:
- Gratis.
- Mudah dibuat.
- Cocok untuk lab atau server internal.
- Dapat digunakan untuk belajar konfigurasi HTTPS.
Kekurangannya:
- Browser akan menganggap sertifikat tidak terpercaya.
- Tidak cocok digunakan pada website produksi yang diakses oleh banyak pengguna.
Sebelum memulai, pastikan server sudah memenuhi beberapa syarat berikut:
- Rocky Linux 9
- Apache HTTP Server sudah terpasang
- Memiliki akses sebagai root atau pengguna yang dapat menjalankan sudo
- Firewall telah mengizinkan akses HTTP dan HTTPS
Persiapan
Untuk memastikan Apache sudah terinstal, jalankan:
httpd -v
Perintah tersebut digunakan untuk melihat versi Apache yang terpasang.
Contoh hasilnya:
Server version: Apache/2.4.xx
Selanjutnya pastikan service Apache berjalan.
systemctl status httpd
Perintah ini digunakan untuk mengecek apakah layanan Apache sedang aktif.
Jika belum berjalan, aktifkan menggunakan:
sudo systemctl enable --now httpd
Penjelasan:
enablemembuat Apache otomatis aktif ketika server dinyalakan.--nowlangsung menjalankan servicenya tanpa perlu reboot.
Menginstal SSL Apache
Apache memerlukan modul SSL agar mampu melayani koneksi HTTPS.
Install terlebih dahulu paketnya.
sudo dnf install mod_ssl -y
Penjelasan:
dnf installdigunakan untuk menginstal paket.mod_sslmerupakan modul SSL milik Apache.-ymenjawab “Yes” secara otomatis ketika proses instalasi meminta konfirmasi.
Setelah selesai, Apache sudah memiliki kemampuan untuk menggunakan HTTPS.
Membuat Folder Penyimpanan Sertifikat
Agar lebih rapih, buat direktori khusus untuk menyimpan sertifikat.
sudo mkdir -p /etc/pki/tls/private
Penjelasan:
mkdirmembuat direktori baru.-pmembuat folder apabila belum ada sekaligus menghindari error jika direktori sudah tersedia.
Membuat Private Key
Private Key merupakan kunci utama yang akan digunakan saat proses enkripsi.
Jalankan:
sudo openssl genrsa -out /etc/pki/tls/private/server.key 2048
Penjelasan:
openssladalah tools untuk mengelola sertifikat SSL.genrsamembuat RSA Private Key.-outmenentukan lokasi penyimpanan file.2048adalah panjang kunci yang umum digunakan.
Hasilnya akan terbentuk file:
server.key
File ini harus dijaga kerahasiaannya dan tidak boleh dibagikan kepada siapa pun.
Membuat Sertfikat Self-Signed
Setelah memiliki Private Key, langkah berikutnya adalah membuat sertifikat.
sudo openssl req -new -x509 -key /etc/pki/tls/private/server.key \
-out /etc/pki/tls/certs/server.crt -days 365
Penjelasan setiap parameter:
reqmembuat Certificate Request.-newmembuat request baru.-x509langsung menghasilkan sertifikat Self-Signed.-keymenggunakan private key yang telah dibuat.-outmenentukan lokasi penyimpanan sertifikat.-days 365membuat sertifikat berlaku selama satu tahun.
Selanjutnya sistem akan meminta beberapa informasi seperti:
Country Name
State
City
Organization
Organizational Unit
Common Name
Email Address
Bagian yang paling penting adalah Common Name.
Isi dengan:
- alamat IP server, atau
- nama domain jika sudah memiliki domain.
Contoh:
Common Name:
192.168.8.250
Mengonfigurasi Apache Menggunakan SSL
Edit file konfigurasi SSL Apache.
sudo nano /etc/httpd/conf.d/ssl.conf
Cari bagian berikut:
SSLCertificateFile
Ubah menjadi:
SSLCertificateFile /etc/pki/tls/certs/server.crt
Kemudian cari:
SSLCertificateKeyFile
Ubah menjadi:
SSLCertificateKeyFile /etc/pki/tls/private/server.key
Konfigurasi tersebut memberitahu Apache lokasi file sertifikat dan Private Key yang akan digunakan.
Mengecek Konfigurasi Apache
Sebelum melakukan restart, lakukan pengecekan konfigurasi.
sudo apachectl configtest
Apabila konfigurasi benar, hasilnya akan seperti berikut.
Syntax OK
Jika muncul error, periksa kembali lokasi file atau penulisan konfigurasi.
Restart Apache
Setelah konfigurasi selesai, restart Apache.
sudo systemctl restart httpd
Perintah ini digunakan untuk menerapkan seluruh konfigurasi SSL yang baru dibuat.
Kemudian pastikan servicenya kembali berjalan.
sudo systemctl status httpd
Membuka Firewall HTTPS
Agar port HTTPS dapat diakses dari jaringan, buka layanan HTTPS pada firewall.
sudo firewall-cmd --permanent --add-service=https
Penjelasan:
- menambahkan layanan HTTPS secara permanen.
Selanjutnya lakukan reload.
sudo firewall-cmd --reload
Reload digunakan agar perubahan firewall langsung diterapkan tanpa perlu melakukan reboot server.
Untuk memastikan layanan HTTPS telah aktif:
sudo firewall-cmd --list-services
Jika berhasil akan muncul:
http http
Pengujian
Sekarang buka browser dan akses server menggunakan alamat berikut.
https://IP-Server
Contoh:
https://192.168.15.250
Kemungkinan browser akan menampilkan pesan seperti:
Your connection is not private
Hal tersebut normal karena sertifikat dibuat sendiri (Self-Signed) sehingga belum dipercaya oleh browser.
Pilih menu:
Advanced
Proceed to Website
Setelah itu website Apache akan terbuka menggunakan HTTPS.
Apabila ikon gembok belum muncul sempurna, browser biasanya akan memberikan informasi bahwa sertifikat belum dipercaya. Namun komunikasi antara browser dan server tetap sudah menggunakan enkripsi.
Mengecek Sertifikat yang Digunakan
Untuk memastikan Apache benar-benar menggunakan sertifikat tersebut, jalankan:
openssl x509 -in /etc/pki/tls/certs/server.crt -text -noout
Perintah ini digunakan untuk menampilkan informasi lengkap mengenai sertifikat, seperti:
- Masa berlaku sertifikat.
- Algoritma enkripsi.
- Common Name.
- Tanggal pembuatan.
- Tanggal kedaluwarsa.
- Fingerprint sertifikat.
Struktur File SSL
Setelah proses selesai, biasanya struktur file menjadi seperti berikut.
/etc/pki/tls/
├── certs/
│ └── server.crt
└── private/
└── server.key
server.crtadalah sertifikat publik yang akan dikirimkan kepada browser saat proses koneksi HTTPS.server.keyadalah private key yang digunakan server untuk proses enkripsi dan harus dijaga kerahasiaannya.
Menurut aku, praktik seperti ini sangat cocok untuk belajar sebelum menggunakan sertifikat resmi seperti Let’s Encrypt. Selain menambah pengalaman, aku juga jadi lebih paham bahwa mengaktifkan HTTPS ternyata tidak sesulit yang saya bayangkan.
Semoga artikel ini bisa membantu teman-teman yang sedang belajar Apache dan ingin mencoba mengamankan web server mereka dengan SSL Self-Signed.
kudos