Cara Mengatur Server Apache Mandiri dengan Hosting Virtual Berbasis Nama dengan Sertifikat SSL - Bagian 4


LFCE (kependekan dari Linux Foundation Certified Engineer) adalah profesional terlatih yang memiliki keahlian untuk menginstal, mengelola, dan memecahkan masalah layanan jaringan di sistem Linux, dan bertanggung jawab atas desain, implementasi dan pemeliharaan berkelanjutan dari arsitektur sistem.

Pada artikel ini kami akan menunjukkan cara mengonfigurasi Apache untuk menyajikan konten web, dan cara menyiapkan host virtual berbasis nama dan SSL, termasuk sertifikat yang ditandatangani sendiri.

Memperkenalkan Program Sertifikasi Linux Foundation (LFCE).

Catatan: Bahwa artikel ini tidak seharusnya menjadi panduan komprehensif tentang Apache, namun lebih merupakan titik awal untuk belajar mandiri tentang topik ini untuk LFCE ujian. Oleh karena itu, kami juga tidak membahas penyeimbangan beban dengan Apache dalam tutorial ini.

Anda mungkin sudah mengetahui cara lain untuk melakukan tugas yang sama, dan ini OK mengingat Sertifikasi Linux Foundation sepenuhnya berbasis kinerja. Oleh karena itu, selama Anda 'menyelesaikan pekerjaan', Anda memiliki peluang bagus untuk lulus ujian.

Persyaratan

Silakan lihat Bagian 1 dari seri saat ini (“Menginstal Layanan Jaringan dan Mengonfigurasi Startup Otomatis saat Boot”) untuk petunjuk tentang cara menginstal dan memulai Apache.

Sekarang, Anda seharusnya sudah menginstal dan menjalankan server web Apache. Anda dapat memverifikasi ini dengan perintah berikut.

ps -ef | grep -Ei '(apache|httpd)' | grep -v grep

Catatan: Bahwa perintah di atas memeriksa keberadaan apache atau httpd (nama paling umum untuk daemon web) di antara daftar proses yang berjalan. Jika Apache berjalan, Anda akan mendapatkan output seperti berikut.

Metode utama untuk menguji instalasi Apache dan memeriksa apakah instalasi tersebut berjalan adalah dengan meluncurkan browser web dan mengarahkan ke IP server. Kita akan disajikan layar berikut atau setidaknya pesan yang mengonfirmasi bahwa Apache berfungsi.

Mengonfigurasi Apache

File konfigurasi utama untuk Apache dapat ditempatkan di direktori berbeda tergantung pada distribusi Anda.

/etc/apache2/apache2.conf 		[For Ubuntu]
/etc/httpd/conf/httpd.conf		[For CentOS]
/etc/apache2/httpd.conf 		[For openSUSE]

Untungnya bagi kami, arahan konfigurasi didokumentasikan dengan sangat baik di situs web proyek Apache. Kami akan merujuk beberapa di antaranya di seluruh artikel ini.

Melayani Halaman di Server Mandiri dengan Apache

Penggunaan paling dasar dari Apache adalah untuk melayani halaman web di server mandiri di mana belum ada host virtual yang dikonfigurasi. Direktif DocumentRoot menentukan direktori tempat Apache akan menyajikan dokumen halaman web.

Perhatikan bahwa secara default, semua permintaan diambil dari direktori ini, namun Anda juga dapat menggunakan tautan simbolik dan/atau alias dapat digunakan untuk menunjuk ke lokasi lain juga.

Kecuali cocok dengan direktif Alias (yang memungkinkan dokumen disimpan di sistem file lokal dan bukan di bawah direktori yang ditentukan oleh DocumentRoot), server akan menambahkan jalur dari URL yang diminta ke akar dokumen untuk membuat jalur ke dokumen.

Misalnya, dengan DocumentRoot berikut:

Ketika browser web menunjuk ke [IP Server atau nama host]/lfce/tecmint.html, server akan membuka /var/ www/html/lfce/tecmint.html (dengan asumsi file tersebut ada) dan simpan acara ke log aksesnya dengan respons 200 (OK).

Log akses biasanya ditemukan di dalam /var/log dengan nama yang mewakili, seperti access.log atau access_log. Anda bahkan mungkin menemukan log ini (dan juga log kesalahan) di dalam subdirektori (misalnya, /var/log/httpd di CentOS). Jika tidak, kejadian yang gagal akan tetap dicatat ke log akses tetapi dengan respons 404 (Tidak Ditemukan).

Selain itu, kejadian yang gagal akan dicatat dalam log kesalahan:

Format log akses dapat disesuaikan sesuai kebutuhan Anda menggunakan direktif LogFormat di file konfigurasi utama, sedangkan Anda tidak dapat melakukan hal yang sama dengan log kesalahan .

Format default log akses adalah sebagai berikut:

LogFormat "%h %l %u %t \"%r\" %>s %b" [nickname]

Dimana setiap huruf yang diawali dengan tanda persen menunjukkan server mencatat informasi tertentu:

String

Deskripsi

 %h

 Nama host atau alamat IP jarak jauh

 %l

 Nama log jarak jauh

 %u

 Pengguna jarak jauh jika permintaan diautentikasi

 %t

 Tanggal dan waktu permintaan diterima

 %r

 Baris pertama permintaan ke server

 %>s

 Status akhir permintaan

 %b

 Ukuran respons [byte]

dan nama panggilan adalah alias opsional yang dapat digunakan untuk menyesuaikan log lain tanpa harus memasukkan seluruh string konfigurasi lagi.

Anda dapat merujuk ke arahan LogFormat [Bagian format log khusus] di dokumen Apache untuk opsi lebih lanjut.

Kedua file log (akses dan kesalahan) mewakili sumber daya yang bagus untuk menganalisis dengan cepat apa yang terjadi di server Apache. Tentu saja, ini adalah alat pertama yang digunakan administrator sistem untuk memecahkan masalah.

Terakhir, arahan penting lainnya adalah Listen, yang memberitahu server untuk menerima permintaan masuk pada port tertentu atau kombinasi alamat/port:

Jika hanya nomor port yang ditentukan, apache akan mendengarkan port yang diberikan pada semua antarmuka jaringan (tanda wildcard * digunakan untuk menunjukkan 'semua antarmuka jaringan').

Jika alamat IP dan port ditentukan, maka apache akan mendengarkan kombinasi port dan antarmuka jaringan tertentu.

Harap diperhatikan (seperti yang akan Anda lihat pada contoh di bawah) bahwa beberapa arahan Listen dapat digunakan secara bersamaan untuk menentukan beberapa alamat dan port yang akan didengarkan. Opsi ini menginstruksikan server untuk merespons permintaan dari salah satu alamat dan port yang terdaftar.

Menyiapkan Host Virtual Berbasis Nama

Konsep host virtual mendefinisikan situs individual (atau domain) yang dilayani oleh mesin fisik yang sama. Sebenarnya, beberapa situs/domain dapat dilayani dari satu server “nyata ” sebagai host virtual. Proses ini transparan bagi pengguna akhir, yang merasa bahwa situs yang berbeda dilayani oleh server web yang berbeda.

Hosting virtual berbasis nama memungkinkan server mengandalkan klien untuk melaporkan nama host sebagai bagian dari header HTTP. Jadi, dengan menggunakan teknik ini, banyak host berbeda dapat berbagi alamat IP yang sama.

Setiap host virtual dikonfigurasikan dalam direktori dalam DocumentRoot. Untuk kasus kami, kami akan menggunakan domain dummy berikut untuk pengaturan pengujian, masing-masing terletak di direktori yang sesuai:

  1. ilovelinux.com – /var/www/html/ilovelinux.com/public_html
  2. linuxrocks.org – /var/www/html/linuxrocks.org/public_html

Agar halaman dapat ditampilkan dengan benar, kami akan chmod setiap direktori VirtualHost ke 755:

chmod -R 755 /var/www/html/ilovelinux.com/public_html
chmod -R 755 /var/www/html/linuxrocks.org/public_html

Selanjutnya, buat contoh file index.html di dalam setiap direktori public_html:

<html>
  <head>
    <title>www.ilovelinux.com</title>
  </head>
  <body>
    <h1>This is the main page of www.ilovelinux.com</h1>
  </body>
</html>

Terakhir, di CentOS dan openSUSE tambahkan bagian berikut di bagian bawah /etc/httpd/conf/httpd.conf atau / etc/apache2/httpd.conf, masing-masing, atau modifikasi saja jika sudah ada.


<VirtualHost *:80>
     ServerAdmin [email  
     DocumentRoot /var/www/html/ilovelinux.com/public_html
     ServerName www.ilovelinux.com
     ServerAlias www.ilovelinux.com ilovelinux.com
     ErrorLog /var/www/html/ilovelinux.com/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/ilovelinux.com/access.log	myvhost
</VirtualHost>
<VirtualHost *:80>
     ServerAdmin [email  
     DocumentRoot /var/www/html/linuxrocks.org/public_html
     ServerName www.linuxrocks.org
     ServerAlias www.linuxrocks.org linuxrocks.org
     ErrorLog /var/www/html/linuxrocks.org/error.log
     LogFormat "%v %l %u %t \"%r\" %>s %b" myvhost
     CustomLog /var/www/html/linuxrocks.org/access.log	myvhost
</VirtualHost>

Harap dicatat bahwa Anda juga dapat menambahkan setiap definisi host virtual dalam file terpisah di dalam direktori /etc/httpd/conf.d. Jika Anda memilih untuk melakukannya, setiap file konfigurasi harus diberi nama sebagai berikut:

/etc/httpd/conf.d/ilovelinux.com.conf
/etc/httpd/conf.d/linuxrocks.org.conf

Dengan kata lain, Anda perlu menambahkan .conf ke situs atau nama domain.

Di Ubuntu, setiap file konfigurasi individual diberi nama /etc/apache2/sites-available/[nama situs].conf. Setiap situs kemudian diaktifkan atau dinonaktifkan dengan perintah a2ensite atau a2dissite, sebagai berikut.

a2ensite /etc/apache2/sites-available/ilovelinux.com.conf
a2dissite /etc/apache2/sites-available/ilovelinux.com.conf
a2ensite /etc/apache2/sites-available/linuxrocks.org.conf
a2dissite /etc/apache2/sites-available/linuxrocks.org.conf

Perintah a2ensite dan a2dissite membuat tautan ke file konfigurasi host virtual dan menempatkannya (atau menghapusnya) di /etc/apache2/sites-enabled direktori.

Untuk dapat menelusuri kedua situs dari kotak Linux lain, Anda perlu menambahkan baris berikut dalam file /etc/hosts di mesin tersebut untuk mengalihkan permintaan ke domain tersebut ke IP tertentu alamat.


[IP address of your web server]	www.ilovelinux.com
[IP address of your web server]	www.linuxrocks.org 

Sebagai tindakan keamanan, SELinux tidak akan mengizinkan Apache menulis log ke direktori selain /var/log/httpd default.

Anda dapat menonaktifkan SELinux, atau mengatur konteks keamanan yang tepat:


chcon system_u:object_r:httpd_log_t:s0 /var/www/html/xxxxxx/error.log

di mana xxxxxx adalah direktori di dalam /var/www/html tempat Anda mendefinisikan Host Virtual Anda.

Setelah me-restart Apache, Anda akan melihat halaman berikut di alamat di atas:

Menginstal dan Mengonfigurasi SSL dengan Apache

Terakhir, kita akan membuat dan memasang sertifikat yang ditandatangani sendiri untuk digunakan dengan Apache. Pengaturan semacam ini dapat diterima di lingkungan kecil, seperti LAN pribadi.

Namun, jika server Anda akan mengekspos konten ke dunia luar melalui Internet, Anda perlu memasang sertifikat yang ditandatangani oleh pihak ketiga untuk menguatkan keasliannya. Apa pun pilihannya, sertifikat akan memungkinkan Anda mengenkripsi informasi yang dikirimkan ke, dari, atau di dalam situs Anda.

Di CentOS dan openSUSE, Anda perlu menginstal paket mod_ssl.

yum update && yum install mod_ssl 		[On CentOS]
zypper refresh && zypper install mod_ssl	[On openSUSE]

Sedangkan di Ubuntu Anda harus mengaktifkan modul ssl untuk Apache.

a2enmod ssl

Langkah-langkah berikut dijelaskan menggunakan server pengujian CentOS, namun pengaturan Anda harusnya hampir sama dengan distribusi lainnya (jika Anda mengalami masalah apa pun, jangan ragu untuk meninggalkan pertanyaan Anda menggunakan komentar membentuk).

Langkah 1 [Opsional]: Buat direktori untuk menyimpan sertifikat Anda.

mkdir /etc/httpd/ssl-certs

Langkah 2: Buat sertifikat yang Anda tandatangani sendiri dan kunci yang akan melindunginya.

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl-certs/apache.key -out /etc/httpd/ssl-certs/apache.crt

Penjelasan singkat tentang opsi yang tercantum di atas:

  1. req -X509 menunjukkan kita sedang membuat sertifikat x509.
  2. -nodes (NO DES) berarti “jangan mengenkripsi kuncinya ”.
  3. -hari 365 adalah jumlah hari validitas sertifikat.
  4. -newkey rsa:2048 membuat kunci RSA 2048-bit.
  5. -keyout /etc/httpd/ssl-certs/apache.key adalah jalur absolut dari kunci RSA.
  6. -out /etc/httpd/ssl-certs/Apache.crt adalah jalur absolut sertifikat.

Langkah 3: Buka file konfigurasi host virtual pilihan Anda (atau bagian terkait di /etc/httpd/conf/httpd.conf seperti yang dijelaskan sebelumnya) dan tambahkan baris berikut ke deklarasi host virtual yang mendengarkan pada port 443.

SSLEngine on
SSLCertificateFile /etc/httpd/ssl-certs/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl-certs/apache.key

Harap dicatat bahwa Anda perlu menambahkan.

NameVirtualHost *:443

di atas, tepat di bawah

NameVirtualHost *:80

Kedua arahan tersebut memerintahkan Apache untuk mendengarkan pada port 443 dan 80 dari semua antarmuka jaringan.

Contoh berikut diambil dari /etc/httpd/conf/httpd.conf:

Kemudian restart apachenya,

service apache2 restart 			[sysvinit and upstart based systems]
systemctl restart httpd.service 		[systemd-based systems]

Dan arahkan browser Anda ke https://www.ilovelinux.com. Anda akan disajikan dengan layar berikut.

Silakan klik “Saya memahami risikonya ” dan “Tambahkan pengecualian ”.

Terakhir, centang “Simpan pengecualian ini secara permanen ” dan klik “Konfirmasi Pengecualian Keamanan ”.

Dan Anda akan diarahkan ke beranda Anda menggunakan https.

Ringkasan

Dalam postingan ini kami telah menunjukkan cara mengonfigurasi hosting virtual Apache dan berbasis nama dengan SSL untuk mengamankan transmisi data. Jika karena alasan tertentu Anda mengalami masalah apa pun, silakan beri tahu kami menggunakan formulir komentar di bawah. Kami akan dengan senang hati membantu Anda melakukan penyiapan dengan sukses.

Baca Juga

  1. Hosting Virtual Berbasis IP Apache dan Berbasis Nama
  2. Membuat Host Virtual Apache dengan Opsi Aktifkan/Nonaktifkan Vhosts
  3. Pantau "Server Web Apache" Menggunakan Alat "Apache GUI".