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 l’installation de LAMP dans Gentoo Linux vient de couvrir 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 de certificat SSL et de clés, l’activation du protocole SSL sécurisé sur les transactions HTTP et l’utilisation de la passerelle Apache CGI pour que vous puissiez exécuter des scripts Perl ou Bash sur votre site Web.

Exigences

  1. Installer LAMP dans Gentoo Linux

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

Cette rubrique utilise un faux nom de domaine – gentoo.lan – activé via le fichier d’hôtes locaux, avec des fichiers de site Web servis à partir de la directive /var/www/gentoo.lan – DocumentRoot, 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 Gentoo hosts pour le modifier et ajoutez une nouvelle ligne avec votre nom de domaine.

$ sudo nano /etc/hosts

À la fin du fichier, donnez-lui l’impression que c’est le cas.

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. Il suffit d’ouvrir 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 incluse sous ... Directives. c

Contenant vos paramètres personnalisés tels que ServerName et DocumentRoot path. 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é d’éditer le 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 n’existe pas par défaut (dans ce cas, il a été changé en /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-le vers votre nom de domaine virtuel http://gentoo.lan/info.php.

À l’aide de cette procédure, vous pouvez ajouter autant de sites Web non SSL que vous le souhaitez à l’aide d’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, il suffit de commenter ou de supprimer ses directives entourées de ... 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 des 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é d’entrer votre nom de domaine. Entrez votre nom de domaine pour lequel vous générez les paramètres SSL et remplissez le certificat avec les informations requises, le plus important, le nom commun, utilisez le FQDN 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 l’hôte virtuel gentoo.lan. Utilisez la même méthode que pour les hôtes virtuels non SSL, mais cette fois-ci 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 chemin d’accès et les noms de certificat SSL + 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 des hôtes virtuels doivent se terminer avant ces trois dernières instructions.

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

9. Après avoir terminé de modifier le 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 entourées de ... sur le fichier /etc/apache2/vhosts.d/00_default_ssl_vhosts.conf.

Étape 3 : Activer l’interface CGI

Le CGI (Common Gateway Interface) il 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 de modules CGI USE sur le fichier make.conf de Portage : cgi cgid. Pour activer la prise en charge GCI pour Apache, ouvrez le fichier /etc/conf.d/apache2 et ajoutez le module CGI sur APACHE2_OPTS ligne.

$ sudo nano /etc/conf.d/apache2

Assurez-vous que le contenu de cette ligne est 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 votre site Web de définition d’hôte pour lequel vous souhaitez activer l’interface CGI et ajoutez le contenu suivant à l’intérieur des directives 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. Si vous avez un répertoire à l’intérieur de votre chemin DocumentRoot (/var/www/gentoo.lan/) qui contient des scripts CGI, vous pouvez activer uniquement ce répertoire pour servir des scripts Perl ou Bash dynamiques.

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 Includes), ajoutez l’instruction +Include dans 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 des scripts simples .cgi et .pl sur la passerelle CGI Apache, créez les scripts suivants à l’intérieur de 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 maintenant 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.

Articles connexes: