Creación de hosts virtuales, generación de certificados y claves SSL y habilitación de CGI Gateway en Gentoo Linux


El último tutorial sobre Instalación de LAMP en Gentoo Linux acaba de cubrir el proceso de instalación básico sin configuraciones adicionales disponibles para que Apache controle mejor sus dominios.

Este tutorial está estrictamente conectado con el anterior en Gentoo LAMP y analiza configuraciones adicionales para el entorno LAMP como crear Hosts virtuales en Apache, generar SSL Archivos de certificado y claves, habilite el protocolo seguro SSL en transacciones HTTP y use Apache CGI Gateway para que pueda ejecutar Perl o Aplique secuencias de comandos en su sitio web.

  1. Instale LAMP en Gentoo Linux

Paso 1: crear hosts virtuales Apache

Este tema utiliza un nombre de dominio falso - gentoo.lan - habilitado a través del archivo de hosts locales, con archivos del sitio web servidos desde /var/www/gentoo.lan - DocumentRoot directiva, sin un registro DNS válido, para demostrar cómo se pueden habilitar múltiples hosts virtuales en Gentoo usando el servidor web Apache.

1. Para comenzar, abra el archivo de hosts de Gentoo para editarlo y agregue una nueva línea con su nombre de dominio.

$ sudo nano /etc/hosts

Al final del archivo, haga que se vea similar a esto.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Pruebe su dominio falso con el comando ping y el dominio debería responder con su dirección IP.

$ ping -c2 gentoo.lan

3. El proceso de activación de Apache Virtual Hosts es bastante simple. Simplemente abra el archivo de hosts virtuales predeterminado de Apache ubicado en la ruta /etc/apache2/vhosts.d/ y antes de la última instrucción , ingrese su nueva definición de host virtual incluida en directivas. C

Contiene su configuración personalizada como ServerName y la ruta de DocumentRoot . Utilice la siguiente plantilla de archivo como guía para un nuevo host virtual e inclúyala en el archivo 00_default_vhost.conf (para sitios web que no son 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>

Como puede ver al visualizar el contenido de este archivo, el archivo está muy comentado con explicaciones y también mantiene la definición de host virtual localhost , que puede usar como guía.

4. Después de terminar de editar el archivo con su host virtual personalizado, reinicie Apache para aplicar la configuración y asegúrese de crear el directorio DocumentRoot en caso de que haya cambiado esta directiva y la ruta no exista por defecto (en este caso se cambió a /var/www/gentoo.lan ). También he creado un pequeño archivo PHP para probar las configuraciones 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. Para verificarlo, abra un navegador y apunte su nombre de dominio virtual http://gentoo.lan/info.php .

Con este procedimiento, puede agregar tantos sitios web que no sean SSL como desee utilizando Apache Virtual Hosts, pero para una máquina real con conexión a Internet, asegúrese de tener sus dominios registrados y de utilizar registros válidos del servidor DNS.

Para eliminar un host virtual, simplemente comente o elimine sus directivas incluidas en en el archivo 00_default_vhost.conf .

Paso 2: Genere certificados SSL y claves para hosts virtuales

SSL es un protocolo criptográfico que se utiliza para intercambiar información a través de un canal de comunicación seguro en Internet o redes internas mediante certificados y claves simétricas/asimétricas.

6. Para simplificar el proceso de generación de certificados y claves, utilice el siguiente script Bash que actúa como un comando y crea automáticamente todo lo que necesita con la configuración de su nombre de dominio SSL.

Primero comience creando un script Bash usando el siguiente comando.

$ sudo nano /usr/local/bin/apache_gen_ssl

Agregue el siguiente contenido de archivo.

#!/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. Una vez creado el archivo, agregue los permisos de ejecución y ejecútelo para generar claves y certificados SSL.

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

Cuando lo ejecute por primera vez, le pedirá que ingrese su nombre de dominio . Ingrese el nombre de su dominio para el cual genera la configuración SSL y complete el Certificado con la información requerida, la más importante, Nombre común , use el FQDN de su servidor.

La ubicación predeterminada donde se alojan todos sus certificados y claves mediante este método es /etc/apache2/ssl/.

8. Ahora es el momento de crear gentoo.lan Virtual Host SSL equivalente. Utilice el mismo método que para los hosts virtuales que no son SSL, pero esta vez editando el archivo /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf con cambios leves.

Primero abra el archivo para editarlo y realice los siguientes cambios.

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

Bajo la directiva Listen 443 , agregue el siguiente contenido.

NameVirtualHost *:443

Utilice la siguiente plantilla para un nuevo host virtual y agregue el nuevo certificado SSL + la ruta y los nombres de la clave.

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

Las definiciones de hosts virtuales deben terminar antes de estas últimas tres declaraciones.

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

9. Después de terminar de editar el archivo de host virtual, reinicie el servicio Apache y dirija su navegador a su dominio usando el protocolo HTTPS https: //gentoo.lan .

$ sudo /etc/init.d/apache2 restart

Con este procedimiento, puede agregar sitios web SSL con sus propios Certificados y Claves usando Apache Virtual Hosts. Para eliminar SSL Virtual Hosts, comente o elimine sus directivas incluidas en en el archivo /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf .

Paso 3: habilite la interfaz CGI

El CGI ( Interfaz de puerta de enlace común ) permite a Apache interactuar con programas externos, que consisten principalmente en scripts Perl o BASH, que pueden agregar un contenido dinámico a su sitio web.

10. Antes de habilitar la puerta de enlace CGI, asegúrese de que Apache haya sido compilado con compatibilidad con indicadores de módulos USE CGI en el archivo Portage make.conf : cgi cgid . Para habilitar el soporte de GCI para Apache, abra el archivo /etc/conf.d/apache2 y agregue el módulo CGI en la línea APACHE2_OPTS .

$ sudo nano /etc/conf.d/apache2

Asegúrese de que esta línea tenga un contenido similar.

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

11. Una vez habilitados los módulos CGI, abra el host de definición de su sitio web en el que desea habilitar la interfaz CGI y agregue el siguiente contenido dentro de las directivas del host 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 tiene un directorio dentro de su ruta DocumentRoot ( /var/www/gentoo.lan/ ) que contiene scripts CGI, puede habilitar solo ese directorio para servir scripts dinámicos 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. Para SSI (Server Side Included), agregue la declaración + Incluye en Opciones y agregue la extensión de archivo .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. Para probar algunos scripts simples .cgi y .pl en la puerta de enlace Apache CGI, cree los siguientes scripts dentro de su Virtual Host DocumentRoot (/var/www/gentoo. lan/).

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

Agregue el siguiente contenido 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

Agregue el siguiente contenido de Bash.

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

15. Una vez creados los archivos, conviértalos en ejecutables, reinicie el demonio Apache y dirija su navegador a las siguientes URL.

$ 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

Ahora puede transformar Gentoo en una poderosa plataforma de alojamiento web con ajustes finos para el rendimiento de su sistema y el máximo control sobre todo su entorno.