Stvaranje virtualnih hostova, generiranje SSL certifikata i ključeva i omogućavanje CGI pristupnika u Gentoo Linuxu


Zadnji vodič o Instaliranju LAMP-a u Gentoo Linux pokrivao je samo osnovni proces instalacije bez dodatnih postavki dostupnih za Apache za bolju kontrolu vaših domena.

Ovaj vodič je usko povezan s prethodnim na Gentoo LAMP i raspravlja o dodatnim postavkama za LAMP okruženje kao što je stvaranje Virtualnih hostova na Apacheu, generiranje SSL Datoteke certifikata i ključevi, omogućite siguran SSL protokol na HTTP transakcijama i koristite Apache CGI Gateway kako biste mogli pokrenuti Perl ili Bash skripte preko vaše web stranice.

Zahtjevi

  1. Instalirajte LAMP u Gentoo Linux

Korak 1: Stvorite Apache virtualne hostove

Ova tema koristi lažni naziv domene – gentoo.lan – omogućen kroz datoteku lokalnih domaćina, s datotekama web stranica koje se poslužuju s /var/www/gentoo.lanDocumentRoot direktiva, bez važećeg DNS zapisa, kako bi se pokazalo kako se višestruki virtualni hostovi mogu omogućiti na Gentoou koristeći Apache web poslužitelj.

1. Za početak otvorite Gentoo host datoteku za uređivanje i dodajte novi redak s nazivom svoje domene.

sudo nano /etc/hosts

Neka na kraju datoteke izgleda slično ovome.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Testirajte svoju lažnu domenu naredbom ping i domena bi trebala odgovoriti svojom IP adresom.

ping -c2 gentoo.lan

3. Proces aktivacije Apache Virtual Hosts je prilično jednostavan. Samo otvorite datoteku zadanog virtualnog hosta Apache koja se nalazi na stazi /etc/apache2/vhosts.d/ i prije zadnje izjave unesite svoju novu definiciju virtualnog hosta priloženu pod direktive. c

Sadrži vaše prilagođene postavke kao što su ServerName i DocumentRoot path. Koristite sljedeći predložak datoteke kao vodič za novi virtualni host i uključite ga u datoteku 00_default_vhost.conf (za web stranice koje nisu 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>

Kao što možete vidjeti vizualizacijom sadržaja ove datoteke, datoteka je jako komentirana s objašnjenjima i također zadržava definiciju virtualnog hosta localhost – koju možete koristiti kao vodič.

4. Nakon završetka uređivanja datoteke s vašim prilagođenim virtualnim hostom, ponovno pokrenite Apache da biste primijenili postavke i provjerite jeste li stvorili direktorij DocumentRoot u slučaju da ste promijenili ovu direktivu i putanja ne 'ne postoji prema zadanim postavkama (u ovom slučaju je promijenjeno u /var/www/gentoo.lan). Također sam izradio malu PHP datoteku za testiranje konfiguracija web poslužitelja.

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

5. Da biste to potvrdili, otvorite preglednik i usmjerite u njega naziv svoje virtualne domene http://gentoo.lan/info.php.

Koristeći ovu proceduru možete dodati koliko god želite ne-SSL web stranica koristeći Apache Virtual Hosts, ali za pravi stroj okrenut prema Internetu provjerite jeste li registrirali svoje domene i koristite važeće zapise DNS poslužitelja.

Da biste uklonili virtualni host, samo komentirajte ili izbrišite njegove direktive priložene pod u datoteci 00_default_vhost.conf.

Korak 2: Generirajte SSL certifikate i ključeve za virtualne hostove

SSL je kriptografski protokol koji se koristi za razmjenu informacija putem sigurnog komunikacijskog kanala na Internetu ili unutar mreža korištenjem certifikata i simetričnih/asimetričnih ključeva.

6. Za pojednostavljenje procesa generiranja certifikata i ključeva upotrijebite sljedeću Bash skriptu koja djeluje kao naredba i automatski stvara sve što trebate s postavkama naziva vaše SSL domene.

Prvo započnite stvaranjem Bash skripte pomoću sljedeće naredbe.

sudo nano /usr/local/bin/apache_gen_ssl

Dodajte sljedeći sadržaj datoteke.

#!/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. Nakon što je datoteka stvorena, dodajte joj dozvole za izvršavanje i pokrenite je za generiranje SSL ključeva i certifikata.

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

Kada ga pokrenete prvi put, od vas će se tražiti da unesete naziv svoje domene. Unesite ime svoje domene za koju generirate SSL postavke i popunite Certifikat potrebnim informacijama, najvažnijim, Uobičajeno ime, koristite FQDN vašeg poslužitelja.

Zadana lokacija na kojoj su svi vaši certifikati i ključevi smješteni ovom metodom je /etc/apache2/ssl/.

8. Sada je vrijeme da stvorite SSL ekvivalent za gentoo.lan virtualni host. Upotrijebite istu metodu kao za ne-SSL virtualne hostove, ali ovaj put uređujete /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf datoteku s malim izmjenama.

Prvo otvorite datoteku za uređivanje i napravite sljedeće promjene.

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

Pod direktivom Slušaj 443 dodajte sljedeći sadržaj.

NameVirtualHost *:443

Upotrijebite sljedeći predložak za novi virtualni host i dodajte novi SSL certifikat + stazu ključa i imena.

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

Definicije virtualnih hostova moraju završiti prije ove tri posljednje izjave.

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

9. Nakon završetka uređivanja datoteke Virtual Host, ponovno pokrenite uslugu Apache i usmjerite svoj preglednik na svoju domenu koristeći HTTPS protokol https://gentoo.lan.

sudo /etc/init.d/apache2 restart

Koristeći ovaj postupak, možete dodati SSL web stranice s vlastitim certifikatima i ključevima koristeći Apache Virtual Hosts. Da biste uklonili SSL Virtual Hosts, komentirajte ili izbrišite njegove direktive priložene pod u datoteci /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Korak 3: Omogućite CGI sučelje

CGI (Common Gateway Interface) omogućuje Apacheu interakciju s vanjskim programima, koji se prvenstveno sastoje od Perl ili BASH skripti, koji mogu dodati dinamički sadržaj vašoj web stranici.

10. Prije nego omogućite CGI pristupnik, provjerite je li Apache kompajliran s podrškom za zastavice USE CGI modula na Portage make.conf datoteci: cgi cgid . Da omogućite GCI podršku za Apache, otvorite /etc/conf.d/apache2 datoteku i dodajte CGI modul na APACHE2_OPTS retku.

sudo nano /etc/conf.d/apache2

Uvjerite se da ovaj redak ima sličan sadržaj.

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

11. Nakon što su CGI moduli omogućeni, otvorite host za definiciju web stranice za koji želite omogućiti CGI sučelje i dodajte sljedeći sadržaj unutar direktiva 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. Ako imate direktorij unutar DocumentRoot (/var/www/gentoo.lan/) staze koji sadrži CGI skripte, možete omogućiti da samo taj direktorij posluži dinamički Perl ili Bash skripte.

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. Za SSI (Server Side Includes) dodajte izjavu +Includes na Options i dodajte ekstenziju datoteke .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. Za testiranje nekih jednostavnih .cgi i .pl skripti na Apache CGI pristupniku kreirajte sljedeće skripte unutar vašeg Virtual Host DocumentRoot ( /var/www/gentoo.lan/).

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

Dodajte sljedeći Perl sadržaj.

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

Dodajte sljedeći Bash sadržaj.

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

15. Nakon što su datoteke stvorene, učinite ih izvršnim, ponovno pokrenite Apache daemon i usmjerite svoj preglednik na sljedeće URL-ove.

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

Sada možete pretvoriti Gentoo u snažnu platformu za web hosting s postavkama finog podešavanja za performanse vašeg sustava i maksimalnu kontrolu nad cijelim okruženjem.