Recherche de site Web

Création d'hôtes virtuels, génération de certificats et de clés SSL et activation de la passerelle CGI dans Gentoo Linux


Le dernier tutoriel sur Installer LAMP dans Gentoo Linux couvrait simplement le processus d'installation de base sans paramètres supplémentaires disponibles pour Apache afin de mieux contrôler vos domaines.

Ce tutoriel est strictement lié au précédent sur Gentoo LAMP et traite des paramètres supplémentaires pour l'environnement LAMP tels que la création d'Hôtes virtuels sur Apache, la génération de Fichiers et clés de certificat SSL, activez le protocole SSL sécurisé sur les transactions HTTP et utilisez Apache CGI Gateway pour pouvoir exécuter Perl ou Scripts Bash sur votre site Web.

Exigences

  1. Installer LAMP dans Gentoo Linux

Étape 1 : Créer des hôtes virtuels Apache

Ce sujet utilise un faux nom de domaine – gentoo.lan – activé via un fichier d'hôtes local, avec des fichiers de site Web servis depuis /var/www/gentoo.lanDocumentRoot , sans enregistrement DNS valide, pour démontrer comment plusieurs hôtes virtuels peuvent être activés sur Gentoo à l'aide du serveur Web Apache.

1. Pour commencer, ouvrez le fichier hosts Gentoo pour le modifier et ajoutez une nouvelle ligne avec votre nom de domaine.

sudo nano /etc/hosts

À la fin du fichier, faites-le ressembler à ceci.

127.0.0.1 localhost gentoo
192.168.1.13  gentoo.lan

2. Testez votre faux domaine avec la commande ping et le domaine devrait répondre avec son adresse IP.

ping -c2 gentoo.lan

3. Le processus d'activation des hôtes virtuels Apache est assez simple. Ouvrez simplement le fichier d'hôtes virtuels par défaut d'Apache situé sur le chemin /etc/apache2/vhosts.d/ et avant la dernière instruction , entrez votre nouvelle définition d'hôte virtuel sous directives. c

Contenant vos paramètres personnalisés tels que le chemin ServerName et DocumentRoot. Utilisez le modèle de fichier suivant comme guide pour un nouvel hôte virtuel et incluez-le dans le fichier 00_default_vhost.conf (pour les sites Web non 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>

Comme vous pouvez le voir en visualisant le contenu de ce fichier, le fichier est très commenté avec des explications et conserve également la définition de l'hôte virtuel localhost - que vous pouvez utiliser comme guide.

4. Après avoir terminé l'édition du fichier avec votre hôte virtuel personnalisé, redémarrez Apache pour appliquer les paramètres et assurez-vous de créer le répertoire DocumentRoot au cas où vous auriez modifié cette directive et que le chemin ne le serait pas. 'n'existe pas par défaut (dans ce cas, il a été remplacé par /var/www/gentoo.lan). J'ai également créé un petit fichier PHP pour tester les configurations du serveur Web.

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

5. Pour le vérifier, ouvrez un navigateur et pointez-y votre nom de domaine virtuel http://gentoo.lan/info.php.

En utilisant cette procédure, vous pouvez ajouter autant de sites Web non SSL que vous le souhaitez à l'aide des hôtes virtuels Apache, mais pour une véritable machine connectée à Internet, assurez-vous que vos domaines sont enregistrés et que vous utilisez des enregistrements de serveur DNS valides.

Pour supprimer un hôte virtuel, commentez ou supprimez simplement ses directives placées sous dans le fichier 00_default_vhost.conf.

Étape 2 : Générer des certificats et des clés SSL pour les hôtes virtuels

SSL est un protocole cryptographique utilisé pour échanger des informations sur un canal de communication sécurisé sur Internet ou à l'intérieur de réseaux à l'aide de certificats et de clés symétriques/asymétriques.

6. Pour simplifier le processus de génération de certificats et de clés, utilisez le script Bash suivant qui agit comme une commande et crée automatiquement tout ce dont vous avez besoin avec les paramètres de votre nom de domaine SSL.

Commencez par créer un script Bash à l’aide de la commande suivante.

sudo nano /usr/local/bin/apache_gen_ssl

Ajoutez le contenu du fichier suivant.

#!/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. Une fois le fichier créé, ajoutez-y les autorisations d'exécution et exécutez-le pour générer des clés et des certificats SSL.

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

Lorsque vous l'exécutez pour la première fois, il vous sera demandé de saisir votre nom de domaine. Entrez le nom de votre domaine pour lequel vous générez les paramètres SSL et remplissez le certificat avec les informations requises, la plus importante, Nom commun, utilisez le nom de domaine complet de votre serveur.

L'emplacement par défaut où tous vos certificats et clés sont hébergés à l'aide de cette méthode est /etc/apache2/ssl/.

8. Il est maintenant temps de créer l'équivalent SSL de gentoo.lan Virtual Host. Utilisez la même méthode que pour les hôtes virtuels non SSL, mais cette fois en modifiant le fichier /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf avec de légères modifications.

Ouvrez d’abord le fichier pour le modifier et apportez les modifications suivantes.

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

Sous la directive Listen 443, ajoutez le contenu suivant.

NameVirtualHost *:443

Utilisez le modèle suivant pour un nouvel hôte virtuel et ajoutez le nouveau certificat SSL + chemin et noms de clé.

## 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 définitions d'hôtes virtuels doivent se terminer avant ces trois dernières instructions.

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

9. Après avoir terminé la modification du fichier Virtual Host, redémarrez le service Apache et dirigez votre navigateur vers votre domaine à l'aide du protocole HTTPS https://gentoo.lan.

sudo /etc/init.d/apache2 restart

À l'aide de cette procédure, vous pouvez ajouter des sites Web SSL avec leurs propres certificats et clés à l'aide d'hôtes virtuels Apache. Pour supprimer les hôtes virtuels SSL, commentez ou supprimez ses directives placées sous dans le fichier /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Étape 3 : Activer l'interface CGI

Le CGI (Common Gateway Interface) permet à Apache d'interagir avec des programmes externes, principalement constitués de scripts Perl ou BASH, qui peuvent ajouter un contenu dynamique à votre site Web.

10. Avant d'activer la passerelle CGI, assurez-vous qu'Apache a été compilé avec la prise en charge des indicateurs des modules USE CGI sur Portage. Fichier make.conf : cgi cgid . Pour activer la prise en charge GCI pour Apache, ouvrez le fichier /etc/conf.d/apache2 et ajoutez le module CGI sur la ligne APACHE2_OPTS.

sudo nano /etc/conf.d/apache2

Assurez-vous que cette ligne a un contenu similaire.

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

11. Une fois les modules CGI activés, ouvrez l'hôte de définition de site Web sur lequel vous souhaitez activer l'interface CGI et ajoutez le contenu suivant dans les directives de l'hôte virtuel.

<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 vous avez un répertoire dans votre chemin DocumentRoot (/var/www/gentoo.lan/) qui contient des scripts CGI, vous pouvez activer uniquement ce répertoire pour servir Perl dynamique. ou des 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. Pour SSI (Server Side Include), ajoutez l'instruction +Includes sur Options et ajoutez l'extension de fichier .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. Pour tester quelques scripts simples .cgi et .pl sur la passerelle Apache CGI, créez les scripts suivants dans votre Virtual Host DocumentRoot ( /var/www/gentoo.lan/).

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

Ajoutez le contenu Perl suivant.

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

Ajoutez le contenu Bash suivant.

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

15. Une fois les fichiers créés, rendez-les exécutables, redémarrez le démon Apache et pointez votre navigateur vers les URL suivantes.

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

Vous pouvez désormais transformer Gentoo en une puissante plate-forme d'hébergement Web avec des paramètres de réglage précis pour les performances de votre système et un contrôle maximal sur l'ensemble de votre environnement.