Membuat Virtual Host, Menghasilkan Sertifikat & Kunci SSL dan Mengaktifkan CGI Gateway di Gentoo Linux


Tutorial terakhir tentang Menginstal LAMP di Gentoo Linux hanya membahas proses instalasi dasar tanpa tersedia pengaturan tambahan untuk Apache agar dapat mengontrol domain Anda dengan lebih baik.

Tutorial ini terkait erat dengan tutorial sebelumnya di Gentoo LAMP dan membahas pengaturan tambahan untuk lingkungan LAMP seperti membuat Virtual Hosts di Apache, menghasilkan SSL File dan Kunci Sertifikat, aktifkan protokol SSL yang aman pada transaksi HTTP dan gunakan CGI Gateway Apache sehingga Anda dapat menjalankan Perl atau Skrip Bash di situs web Anda.

Persyaratan

  1. Instal LAMP di Gentoo Linux

Langkah 1: Buat Host Virtual Apache

Topik ini menggunakan nama domain palsu – gentoo.lan – diaktifkan melalui file host lokal, dengan file situs web disajikan dari /var/www/gentoo.lanDocumentRoot direktif , tanpa catatan DNS yang valid, untuk mendemonstrasikan bagaimana beberapa Virtual Host dapat diaktifkan di Gentoo menggunakan Server web Apache.

1. Untuk memulai, buka file host Gentoo untuk diedit dan tambahkan baris baru dengan nama domain Anda.

sudo nano /etc/hosts

Di akhir file buatlah terlihat seperti ini.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Uji domain palsu Anda dengan perintah ping dan domain tersebut akan merespons dengan alamat IP-nya.

ping -c2 gentoo.lan

3. Proses mengaktifkan Apache Virtual Hosts cukup sederhana. Cukup buka file host virtual default Apache yang terletak di jalur /etc/apache2/vhosts.d/ dan sebelum pernyataan terakhir, masukkan definisi Host Virtual baru Anda yang terlampir di bawah … arahan . C

Berisi pengaturan khusus Anda seperti jalur ServerName dan DocumentRoot. Gunakan templat file berikut sebagai panduan untuk Virtual Host baru dan sertakan di file 00_default_vhost.conf (untuk situs web non-SSL).

sudo nano /etc/apache2/vhosts.d/00_default_vhost.conf
## Another Virtual hosts statemes ending in </VirtualHost> ###

<VirtualHost *:80>
        ServerName gentoo.lan
        DocumentRoot "/var/www/gentoo.lan"
                        <Directory "/var/www/gentoo.lan"
                Options Indexes FollowSymLinks ExecCGI MultiViews
         # AllowOverride controls what directives may be placed in .htaccess files.       
                        AllowOverride All
        # Controls who can get stuff from this server file
                        Order allow,deny
                        Allow from all
        </Directory>
        <IfModule mpm_peruser_module>
                ServerEnvironment apache apache
        </IfModule>
</VirtualHost>

## Another Virtual hosts statemes ###
## LAST STATEMENT which closes virtual hosts file ##

</IfDefine>

Seperti yang dapat Anda lihat dengan memvisualisasikan konten file ini, file tersebut mendapat banyak komentar disertai penjelasan dan juga menyimpan definisi Host Virtual localhost – yang dapat Anda gunakan sebagai panduan.

4. Setelah selesai mengedit file dengan Virtual Host khusus Anda, mulai ulang Apache untuk menerapkan pengaturan dan pastikan Anda membuat direktori DocumentRoot jika Anda telah mengubah arahan ini dan jalurnya tidak tidak ada secara default (dalam hal ini diubah menjadi /var/www/gentoo.lan). Saya juga membuat file PHP kecil untuk menguji konfigurasi server web.

sudo mkdir /var/www/gentoo.lan
su "echo '<?php phpinfo(); ?>' > /var/www/gentoo.lan/info.php"
sudo /etc/init.d/apache2 restart

5. Untuk memverifikasinya, buka browser dan arahkan ke nama domain virtual Anda http://gentoo.lan/info.php.

Dengan menggunakan prosedur ini Anda dapat menambahkan situs web non-SSL sebanyak yang Anda inginkan menggunakan Apache Virtual Host, tetapi untuk mesin yang terhubung ke Internet, pastikan domain Anda terdaftar dan Anda menggunakan catatan server DNS yang valid.

Untuk menghapus Virtual Host, cukup beri komentar atau hapus arahannya yang terlampir di bawah pada file 00_default_vhost.conf.

Langkah 2: Buat Sertifikat dan Kunci SSL untuk Host Virtual

SSL adalah protokol kriptografi yang digunakan untuk bertukar informasi melalui saluran komunikasi aman di Internet atau di dalam jaringan menggunakan Sertifikat dan Kunci simetris/asimetris.

6. Untuk menyederhanakan proses pembuatan Sertifikat dan kunci, gunakan skrip Bash berikut yang bertindak sebagai perintah dan secara otomatis membuat semua yang Anda perlukan dengan pengaturan nama domain SSL Anda.

Pertama mulai dengan membuat skrip Bash menggunakan perintah berikut.

sudo nano /usr/local/bin/apache_gen_ssl

Tambahkan konten file berikut.

#!/bin/bash
mkdir /etc/apache2/ssl
cd /etc/apache2/ssl
echo -e "Enter a name for this certificate:\nEx: mydomain.lan"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate $cert has been generated!\nPlease link it to Apache SSL website!"
ls -all /etc/apache2/ssl/
exit 0

7. Setelah file dibuat, tambahkan izin eksekusi pada file tersebut dan jalankan untuk menghasilkan Kunci dan Sertifikat SSL.

sudo chmod +x /usr/local/bin/apache_gen_ssl
sudo apache_gen_ssl

Saat Anda menjalankannya pertama kali, Anda akan diminta memasukkan nama domain Anda. Masukkan nama domain Anda yang pengaturan SSLnya Anda buat dan isi Sertifikat dengan informasi yang diperlukan, yang paling penting, Nama Umum, gunakan FQDN server Anda.

Lokasi default di mana semua Sertifikat dan Kunci Anda dihosting menggunakan metode ini adalah /etc/Apache2/ssl/.

8. Sekarang saatnya membuat gentoo.lan Virtual Host SSL yang setara. Gunakan metode yang sama seperti untuk Virtual Host non-SSL tetapi kali ini mengedit file /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf dengan sedikit perubahan.

Pertama buka file untuk diedit dan lakukan perubahan berikut.

sudo nano /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf

Di bawah arahan Listen 443 tambahkan konten berikut.

NameVirtualHost *:443

Gunakan templat berikut untuk Virtual Host baru dan tambahkan Sertifikat SSL baru + Jalur kunci dan nama.

## Another Virtual hosts statemes ending in </VirtualHost> ###

<VirtualHost *:443>
                ServerName gentoo.lan
    DocumentRoot "/var/www/gentoo.lan"
                ErrorLog /var/log/apache2/gentoo.lan-ssl_error_log
                <IfModule log_config_module>
                                TransferLog /var/log/apache2/gentoo.lan-ssl_access_log
                </IfModule>

                SSLEngine on
                SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

## Edit with new generated SSL certificate and key and change path to /etc/apache2/ssl/

		SSLCertificateFile /etc/apache2/ssl/gentoo.lan.crt
		SSLCertificateKeyFile /etc/apache2/ssl/gentoo.lan.key

                <Directory "/var/www/gentoo.lan">
                                Options Indexes FollowSymLinks ExecCGI MultiViews Includes
                                AllowOverride All
			        Order allow,deny
        			Allow from all
                </Directory>

                <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>

                <Directory "/var/www/gentoo.lan ">
                                SSLOptions +StdEnvVars
                </Directory>

                <IfModule setenvif_module>
                                BrowserMatch ".*MSIE.*" \
                                                nokeepalive ssl-unclean-shutdown \
                                                downgrade-1.0 force-response-1.0
                </IfModule>

                <IfModule log_config_module>
                                CustomLog /var/log/apache2/ssl_request_log \
                                                "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
                </IfModule>
</VirtualHost>

## Another Virtual hosts statements ###

Definisi Virtual Host harus diakhiri sebelum tiga pernyataan terakhir ini.

</IfModule>
</IfDefine>
</IfDefine>

9. Setelah selesai mengedit file Virtual Host, restart layanan Apache dan arahkan browser Anda ke domain Anda menggunakan protokol HTTPS https://gentoo.lan.

sudo /etc/init.d/apache2 restart

Dengan menggunakan prosedur ini, Anda dapat menambahkan situs web SSL dengan Sertifikat dan Kuncinya sendiri menggunakan Apache Virtual Host. Untuk menghapus SSL Virtual Host, beri komentar atau hapus arahannya yang terlampir di bawah pada file /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Langkah 3: Aktifkan Antarmuka CGI

CGI (Common Gateway Interface) memungkinkan Apache berinteraksi dengan program eksternal, terutama yang terdiri dari skrip Perl atau BASH, yang dapat menambahkan konten dinamis ke situs web Anda.

10. Sebelum mengaktifkan gateway CGI pastikan Apache telah dikompilasi dengan dukungan flag modul USE CGI pada file make.conf Portage: cgi cgid . Untuk mengaktifkan dukungan GCI untuk Apache, buka file /etc/conf.d/Apache2 dan tambahkan modul CGI pada baris APACHE2_OPTS.

sudo nano /etc/conf.d/apache2

Pastikan baris ini memiliki konten serupa.

APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D SSL -D SSL_DEFAULT_VHOST -D LANGUAGE -D STATUS -D CGI"

11. Setelah modul CGI diaktifkan, buka host definisi situs web yang ingin Anda aktifkan antarmuka CGInya dan tambahkan konten berikut di dalam arahan Virtual Host.

<Directory "/var/www/gentoo.lan">
	Options Indexes +ExecCGI MultiViews
        AddHandler cgi-script .cgi .pl
	DirectoryIndex index.cgi index.php index.html index.pl
        AllowOverride All
        Order allow,deny
        Allow from all
</Directory>

12. Jika Anda memiliki direktori di dalam jalur DocumentRoot (/var/www/gentoo.lan/) yang menyimpan skrip CGI, Anda dapat mengaktifkan direktori tersebut saja untuk melayani Perl dinamis atau skrip Bash.

ScriptAlias /cgi-bin/ /var/www/gentoo.lan/cgi-bin/

<Location /cgi-bin>
                Options +ExecCGI
AddHandler cgi-script .cgi .pl
 DirectoryIndex index.cgi index.php index.html index.pl
</Location>

13. Untuk SSI (Server Side Includes) tambahkan pernyataan +Includes pada Options dan tambahkan ekstensi file .shtml.

<Directory "/var/www/gentoo.lan">
                                Options Indexes +ExecCGI +Includes
                                AddHandler cgi-script .cgi .pl
                AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
        DirectoryIndex index.shtml index.cgi index.pl index.php index.html
                AllowOverride All
                Order allow,deny
                Allow from all
</Directory>

14. Untuk menguji beberapa skrip .cgi dan .pl sederhana di gateway Apache CGI, buat skrip berikut di dalam Virtual Host DocumentRoot Anda ( /var/www/gentoo.lan/).

Skrip Perl
sudo nano /var/www/gentoo.lan/env.pl

Tambahkan konten Perl berikut.

#!/usr/bin/perl
print "Content-type: text/html\n\n"; foreach my $keys (sort keys %ENV) { print "$keys =
$ENV{$keys}<br/>\n";
}
Skrip Bash
sudo nano /var/www/gentoo.lan/run.cgi

Tambahkan konten Bash berikut.

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "---------------------------------------------------------------------------------"
              ./env.pl 
echo "---------------------------------------------------------------------------------"

15. Setelah file dibuat, buat file tersebut dapat dieksekusi, mulai ulang daemon Apache dan arahkan browser Anda ke URL berikut.

sudo chmod +x /var/www/gentoo.lan/run.cgi
sudo chmod +x /var/www/gentoo.lan/env.pl
sudo /etc/init.d/apache2 restart
https://gentoo.lan/run.cgi 

OR

https://gentoo.lan/env.pl

Sekarang Anda dapat mengubah Gentoo menjadi platform hosting Web yang kuat dengan pengaturan yang tepat untuk kinerja sistem Anda dan kontrol maksimal atas seluruh lingkungan Anda.