Virtuelle Hosten erstellen, SSL Certificaten & Schlësselen generéieren an CGI Gateway an Gentoo Linux aktivéieren


Déi lescht Tutorial iwwer LAMP an Gentoo Linux installéieren huet just de Basisinstallatiounsprozess ofgedeckt ouni zousätzlech Astellunge verfügbar fir Apache fir Är Domainen besser ze kontrolléieren.

Dësen Tutorial ass strikt mat der fréierer op Gentoo LAMP verbonnen an diskutéiert extra Astellunge fir LAMP Ëmfeld wéi zB Virtual Hosts op Apache erstellen, generéieren SSL Zertifikatdateien a Schlësselen, aktivéiert sécher SSL Protokoll op HTTP Transaktiounen a benotzt Apache CGI Gateway fir datt Dir Perl oder Bash Scripten iwwer Är Websäit.

  1. LAMP an Gentoo Linux installéieren

Schrëtt 1: Erstellt Apache Virtual Hosts

Dëst Thema benotzt e gefälschte Domain Numm - gentoo.lan - aktivéiert duerch lokal Hostdatei, mat Websäit Dateien zerwéiert vun /var/www/gentoo.lan - DocumentRoot Direktiv, ouni gëlteg DNS Rekord, fir ze demonstréieren wéi verschidde Virtuell Hosts op Gentoo mat Apache Web Server aktivéiert kënne ginn.

1. Fir unzefänken, oppen Gentoo Hosts Datei fir z'änneren an eng nei Zeil mat Ärem Domain Numm ze addéieren.

$ sudo nano /etc/hosts

Um Enn vun der Datei maacht et ähnlech wéi dëst.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Test Äre gefälschte Domain mam Kommando ping an d'Domain soll mat senger IP Adress reagéieren.

$ ping -c2 gentoo.lan

3. De Prozess fir Apache Virtual Hosts z'aktivéieren ass ganz einfach. Öffnen einfach Apache Standard virtuelle Host-Datei op /etc/apache2/vhosts.d/ Wee a virun der leschter Ausso, gitt Är nei Virtuell Host Definitioun an ënner Direktiven. c

Enthält Är personaliséiert Astellunge wéi ServerName an DocumentRoot Wee. Benotzt déi folgend Dateischabloun als Guide fir en neie Virtuelle Host an enthält se op 00_default_vhost.conf Datei (fir net-SSL Websäiten).

$ 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>

Wéi Dir gesitt andeems Dir dëse Fichierinhalt visualiséiert, ass d'Datei héich kommentéiert mat Erklärungen an hält och localhost Virtual Host Definitioun - déi Dir et als Guide benotze kënnt.

4. Nodeems Dir d'Editiounsdatei mat Ärem personaliséierte Virtuelle Host ofgeschloss hutt, nei start Apache fir Astellungen z'applizéieren a gitt sécher datt Dir DocumentRoot Verzeichnis erstellt am Fall wou Dir dës Direktiv geännert hutt an de Wee net standardiséiert gëtt ( an Dëse Fall gouf op /var/www/gentoo.lan geännert). Ech hunn och eng kleng PHP-Datei erstallt fir Webserverkonfiguratiounen ze testen.

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

5. Fir et z'iwwerpréiwen, öffnen e Browser a weisen op Äre virtuellen Domain Numm http://gentoo.lan/info.php.

Mat dëser Prozedur kënnt Dir esou vill Net-SSL Websäite addéieren wéi Dir wëllt Apache Virtual Hosts benotzen, awer fir eng real Internet-konfrontéiert Maschinn vergewëssert Iech datt Dir Är Domainen registréiert hutt an Dir gëlteg DNS Server records benotzt.

Fir e virtuelle Host ze läschen, einfach kommentéiert oder läscht seng Direktiven ënner op 00_default_vhost.conf Datei.

Schrëtt 2: Generéiere SSL Certificaten a Schlësselen fir virtuell Hosten

SSL ass e kryptographesche Protokoll deen benotzt gëtt fir Informatioun iwwer e séchere Kommunikatiounskanal am Internet oder bannent Netzwierker auszetauschen mat Certificaten a symmetresche/asymmetresche Schlësselen.

6. Fir Certificaten a Schlësselen Generatioun Prozess vereinfachen benotzen déi folgend Bash Skript datt als Kommando Akten an automatesch all Dir braucht mat Äre SSL Domain Numm Astellunge schaaft.

Als éischt fänkt u mam Bash Skript mat dem folgenden Kommando un.

$ sudo nano /usr/local/bin/apache_gen_ssl

Füügt de folgenden Dateiinhalt.

#!/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. Nodeems d'Datei erstallt gouf, fügen d'Ausféierungsrechter drop a lafen se fir SSL Keys an Certificaten ze generéieren.

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

Wann Dir et fir d'éischte Kéier leeft, freet Dir Iech Ären Domain Numm anzeginn. Gitt Ären Domain Numm fir deen Dir SSL-Astellungen generéiert a fëllt den Zertifika mat erfuerderlechen Informatioun, déi wichtegst, Common Name, benotzt Äre Server FQDN.

Standardplaz wou all Är Certificaten a Schlëssele mat dëser Method gehost ginn ass /etc/apache2/ssl/.

8. Elo ass et Zäit gentoo.lan Virtual Host SSL gläichwäerteg ze kreéieren. Benotzt déiselwecht Method wéi fir Net-SSL Virtuelle Hosten, awer dës Kéier Ännerung /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf Datei mat liicht Ännerungen.

Éischt öffnen d'Datei fir z'änneren a maacht déi folgend Ännerungen.

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

Ënnert Listen 443 Direktiv füügt de folgenden Inhalt.

NameVirtualHost *:443

Benotzt folgend Schabloun fir en neie virtuelle Host an füügt en neien SSL Zertifika + Schlësselwee an Nimm un.

## 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 ###

Virtuell Hosts Definitioune musse virun dëse leschten dräi Aussoen ophalen.

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

9. Nodeems Dir d'Virtuell Host-Datei ofgeschloss hutt, starten den Apache Service nei a leet Äre Browser op Är Domain mat HTTPS Protokoll https://gentoo.lan.

$ sudo /etc/init.d/apache2 restart

Mat dëser Prozedur kënnt Dir SSL Websäite mat hiren eegene Certificaten a Schlësselen mat Apache Virtual Hosts addéieren. Fir SSL Virtual Hosts ze läschen kommentéieren oder läschen seng Direktiven ënner op /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf Datei.

Schrëtt 3: CGI Interface aktivéieren

Den CGI (Common Gateway Interface) et erlaabt Apache fir mat externe Programmer ze interagéieren, primär aus Perl oder BASH Scripten, déi en dynamesche Inhalt op Är Websäit addéiere kënnen.

10. Ier Dir CGI Gateway aktivéiert, vergewëssert Iech datt Apache mat USE CGI Moduler Fändelen ënnerstëtzen op Portage make.conf Datei: cgi cgid. Fir GCI Ënnerstëtzung fir Apache z'aktivéieren, oppen /etc/conf.d/apache2 Datei an fügen CGI Modul op APACHE2_OPTS Linn un.

$ sudo nano /etc/conf.d/apache2

Vergewëssert Iech datt dës Linn ähnlechen Inhalt huet.

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

11. Nodeems d'CGI Moduler aktivéiert sinn, öffnen Äre Websäit Definitiounshost Dir wëllt CGI Interface aktivéieren an de folgenden Inhalt an Virtual Host Direktiven addéieren.

<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. Wann Dir e Verzeechnes an Ärem DocumentRoot (/var/www/gentoo.lan/) Wee hutt, deen CGI Scripten hält, kënnt Dir just dat Verzeechnes aktivéieren fir dynamesch Perl oder Bash Scripten ze déngen.

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. Fir SSI (Server Side Includes) addéieren +Includes Ausso op Optiounen a fügen .shtml Dateierweiterung derbäi.

<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. Fir e puer einfache .cgi an .pl Scripten op Apache CGI Gateway ze testen, erstellt déi folgend Scripten an Ärem Virtual Host DocumentRoot (/var/www/gentoo. lan/).

$ sudo nano /var/www/gentoo.lan/env.pl

Füügt de folgende Perl Inhalt.

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

Füügt de folgende Bash Inhalt.

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

15. Nodeems d'Fichier'en erstallt sinn, maacht se ausführbar, start Apache Daemon nei a weist Äre Browser op déi folgend URLen.

$ 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

Elo kënnt Dir Gentoo an eng mächteg Webhostingplattform transforméieren mat Feintuning Astellunge fir Är Systemleistung a maximal Kontroll iwwer Är ganz Ëmfeld.