Creació d'amfitrions virtuals, generació de certificats i claus SSL i activació de la passarel·la CGI a Gentoo Linux


L'últim tutorial sobre Instal·lació de LAMP a Gentoo Linux acaba de cobrir el procés bàsic d'instal·lació sense opcions addicionals disponibles per a Apache per controlar millor els vostres dominis.

Aquest tutorial està estrictament connectat amb l'anterior a Gentoo LAMP i parla de la configuració addicional per a l'entorn LAMP, com ara crear amfitrions virtuals a Apache, generar SSL, activeu el protocol SSL segur en transaccions HTTP i utilitzeu Apache CGI Gateway perquè pugueu executar Perl o Scripts Bash al vostre lloc web.

  1. Instal·leu LAMP a Gentoo Linux

Pas 1: creeu hosts virtuals Apache

Aquest tema utilitza un nom de domini fals (gentoo.lan) habilitat mitjançant un fitxer d'amfitrions locals, amb fitxers del lloc web que es distribueixen des de /var/www/gentoo.lanDocumentRoot , sense un registre DNS vàlid, per demostrar com es poden habilitar diversos hosts virtuals a Gentoo mitjançant el servidor web Apache.

1. Per començar, obriu el fitxer hosts de Gentoo per editar-lo i afegiu una línia nova amb el vostre nom de domini.

$ sudo nano /etc/hosts

Al final del fitxer, feu que sembli semblant a aquest.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Proveu el vostre domini fals amb l'ordre ping i el domini hauria de respondre amb la seva adreça IP.

$ ping -c2 gentoo.lan

3. El procés d'activació d'Apache Virtual Hosts és bastant senzill. Només cal que obriu el fitxer d'amfitrions virtuals per defecte d'Apache situat a la ruta /etc/apache2/vhosts.d/ i abans de l'última instrucció , introduïu la vostra nova definició d'amfitrió virtual adjunta a directives. c

Conté la vostra configuració personalitzada, com ara ServerName i la ruta de DocumentRoot. Utilitzeu la plantilla de fitxer següent com a guia per a un nou host virtual i incloeu-lo al fitxer 00_default_vhost.conf (per a llocs web que no siguin 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>

Com podeu veure visualitzant el contingut d'aquest fitxer, el fitxer està molt comentat amb explicacions i també manté la definició d'amfitrió virtual localhost, que podeu utilitzar com a guia.

4. Després d'acabar d'editar el fitxer amb el vostre host virtual personalitzat, reinicieu Apache per aplicar la configuració i assegureu-vos que creeu el directori DocumentRoot en cas que hàgiu canviat aquesta directiva i el camí no existeix per defecte (en aquest cas es va canviar a /var/www/gentoo.lan). També he creat un petit fitxer PHP per provar les configuracions del servidor web.

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

5. Per verificar-ho, obriu un navegador i assenyaleu el vostre nom de domini virtual http://gentoo.lan/info.php.

Mitjançant aquest procediment, podeu afegir tants llocs web que no siguin SSL com vulgueu amb Apache Virtual Hosts, però per a una màquina real orientada a Internet, assegureu-vos que teniu els vostres dominis registrats i que utilitzeu registres de servidor DNS vàlids.

Per eliminar un amfitrió virtual, només cal comentar o eliminar les seves directives a sota de ... al fitxer 00_default_vhost.conf.

Pas 2: genereu certificats i claus SSL per a hosts virtuals

SSL és un protocol criptogràfic utilitzat per intercanviar informació a través d'un canal de comunicació segur a Internet o dins de xarxes mitjançant certificats i claus simètriques/asimètriques.

6. Per simplificar el procés de generació de certificats i claus, utilitzeu el següent script Bash que actua com a ordre i crea automàticament tot el que necessiteu amb la configuració del vostre nom de domini SSL.

Primer comenceu creant l'script Bash amb l'ordre següent.

$ sudo nano /usr/local/bin/apache_gen_ssl

Afegiu el contingut del fitxer següent.

#!/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. Un cop creat el fitxer, afegiu-hi els permisos d'execució i executeu-lo per generar claus i certificats SSL.

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

Quan l'executeu per primera vegada, us demanarà que introduïu el vostre nom de domini. Introduïu el vostre nom de domini per al qual genereu la configuració SSL i ompliu el Certificat amb la informació necessària, el més important, Nom comú, utilitzeu el FQDN del vostre servidor.

La ubicació per defecte on s'allotgen tots els vostres certificats i claus amb aquest mètode és /etc/apache2/ssl/.

8. Ara és el moment de crear l'equivalent a gentoo.lan Virtual Host SSL. Feu servir el mateix mètode que per als hosts virtuals que no siguin SSL, però aquesta vegada editeu el fitxer /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf amb lleugers canvis.

Primer obriu el fitxer per editar-lo i feu els canvis següents.

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

A la directiva Escolta 443 afegiu el contingut següent.

NameVirtualHost *:443

Utilitzeu la plantilla següent per a un amfitrió virtual nou i afegiu un nou certificat SSL + camí i noms de clau.

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

Les definicions dels hosts virtuals han d'acabar abans d'aquestes tres últimes declaracions.

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

9. Després d'acabar d'editar el fitxer Virtual Host, reinicieu el servei Apache i dirigiu el vostre navegador al vostre domini mitjançant el protocol HTTPS https://gentoo.lan.

$ sudo /etc/init.d/apache2 restart

Mitjançant aquest procediment, podeu afegir llocs web SSL amb els seus propis certificats i claus mitjançant Apache Virtual Hosts. Per eliminar els hosts virtuals SSL, feu comentaris o suprimiu-ne les directives que s'inclouen a al fitxer /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Pas 3: habiliteu la interfície CGI

El CGI (Common Gateway Interface) permet a Apache interactuar amb programes externs, que consisteixen principalment en scripts Perl o BASH, que poden afegir un contingut dinàmic al vostre lloc web.

10. Abans d'habilitar la passarel·la CGI, assegureu-vos que Apache s'ha compilat amb el suport de senyals de mòduls USE CGI al fitxer make.conf de Portage: cgi cgid. Per habilitar el suport GCI per a Apache, obriu el fitxer /etc/conf.d/apache2 i afegiu el mòdul CGI a la línia APACHE2_OPTS.

$ sudo nano /etc/conf.d/apache2

Assegureu-vos que aquesta línia tingui contingut similar.

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

11. Un cop habilitats els mòduls CGI, obriu el vostre amfitrió de definició de lloc web que voleu habilitar la interfície CGI i afegiu el contingut següent dins de les directrius d'amfitrió virtual.

<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. Si teniu un directori dins de la vostra ruta de DocumentRoot (/var/www/gentoo.lan/) que conté scripts CGI, podeu habilitar només aquest directori per servir scripts dinàmics de Perl o 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. Per a SSI (Server Side Includes) afegiu la instrucció +Includes a Opcions i afegiu l'extensió de fitxer .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. Per provar alguns scripts .cgi i .pl senzills a la passarel·la Apache CGI, creeu els següents scripts dins del vostre Virtual Host DocumentRoot (/var/www/gentoo. lan/).

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

Afegiu el següent contingut de Perl.

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

Afegiu el següent contingut de Bash.

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

15. Un cop creats els fitxers, feu-los executables, reinicieu el dimoni Apache i dirigiu el vostre navegador als URL següents.

$ 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

Ara podeu transformar Gentoo en una potent plataforma d'allotjament web amb una configuració fina per al rendiment del vostre sistema i el màxim control sobre tot el vostre entorn.