Búsqueda de sitios web

Crear hosts virtuales, generar claves y certificados SSL y habilitar la puerta de enlace CGI 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 relacionado con el anterior sobre Gentoo LAMP y analiza configuraciones adicionales para el entorno LAMP, como crear Hosts virtuales en Apache, generar Archivos y claves de certificado SSL, habilite el protocolo SSL seguro en transacciones HTTP y use Apache CGI Gateway para poder ejecutar Perl o Scripts Bash en su sitio web.

Requisitos

  1. Instalar LAMP en Gentoo Linux

Paso 1: crear hosts virtuales Apache

Este tema utiliza un nombre de dominio falso – gentoo.lan – habilitado a través de un archivo de hosts local, con archivos de sitio web servidos desde /var/www/gentoo.lanDocumentRoot 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, haz que se vea similar a este.

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 sencillo. Simplemente abra el archivo de hosts virtuales predeterminado de Apache ubicado en la ruta /etc/apache2/vhosts.d/ y antes de la última declaración , ingrese su nueva definición de host virtual incluida en <. … directivas . C

Contiene su configuración personalizada como ServerName y la ruta 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 sean 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. No existe de forma predeterminada (en este caso se cambió a /var/www/gentoo.lan). También creé 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 apúntelo con 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 acceso a Internet, asegúrese de tener sus dominios registrados y utilizar registros de servidor DNS válidos.

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

Paso 2: Generar certificados SSL y claves para hosts virtuales

SSL es un protocolo criptográfico utilizado para intercambiar información a través de un canal de comunicación seguro en Internet o dentro de redes utilizando 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, añádale 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 su nombre de 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 utilizando este método es /etc/apache2/ssl/.

8. Ahora es el momento de crear el equivalente SSL del host virtual gentoo.lan. 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 ligeros cambios.

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

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

En la directiva Listen 443 agregue el siguiente contenido.

NameVirtualHost *:443

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

## 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 tres últimas declaraciones.

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

9. Después de terminar de editar el archivo Virtual Host, 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 utilizando hosts virtuales Apache. Para eliminar los hosts virtuales SSL, 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 (Common Gateway Interface) permite a Apache interactuar con programas externos, principalmente consistentes en scripts Perl o BASH, que pueden agregar contenido dinámico a su sitio web.

10. Antes de habilitar la puerta de enlace CGI, asegúrese de que Apache esté compilado con soporte de indicadores de módulos USE CGI en el archivo make.conf de Portage: cgi cgid . Para habilitar la compatibilidad con 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 contenido similar.

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

11. Después de habilitar 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 Perl dinámico. o scripts 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 (inclusión del lado del servidor), agregue la declaración +Includes 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 .cgi y .pl simples en la puerta de enlace Apache CGI, cree los siguientes scripts dentro de su host virtual DocumentRoot ( /var/www/gentoo.lan/).

secuencia de comandos perl
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";
}
Guión de bash
sudo nano /var/www/gentoo.lan/run.cgi

Agregue el siguiente contenido 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 apunte 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 potente plataforma de alojamiento web con ajustes precisos para el rendimiento de su sistema y máximo control sobre todo su entorno.