Outils pour utilisateurs

Outils du site


tips_informatiques:linux:soft:apache2:apache2

Configurer SSL

OS: Debian Sarge

But:

Configurer Apache2 de manière à pouvoir effectuer des requêtes sécurisées (https)

Solution:

La mise en place de SSL sur Apache2 implique:

  • un clé privée
  • un certificat généré à partir de la clé privée
  • le module SSL pour apache2
  • configurer apache2 pour que le serveur:
  • trouve la clé
  • trouve le certificat
  • écoute sur le port SSL (=443)
  • contienne un virtual host correspondant au port 443

Création de la clé privée:

openssl genrsa -des3 -out alaxos.com.key 1024

Création du certificat:

openssl req -new -key alaxos.com.key -x509 -out sslname.crt

Ou encore

umask 077 && touch alaxos.key alaxos.cert alaxos.info alaxos.pem
openssl genrsa 2048 > alaxos.key 
openssl req -new -x509 -nodes -sha1 -days 3650 -key alaxos.key > alaxos.cert
openssl x509 -noout -fingerprint -text < alaxos.cert > alaxos.info 
cat alaxos.cert alaxos.key > alaxos.pem
chmod 400 alaxos.key alaxos.pem 

La clé et le certificat doivent en théorie être placés dans

/etc/apache2/ssl

Les droits de lecture de la clé privée doivent être réservés à root pour plus de sécurité.

Sous Apache2, le module SSL est présent dans

/etc/apache2/mods-available

Ce dossier contient les modes que l'on peut activer pour Apache2. Pour les activer, il suffit de créer un lien dans le dossier

/etc/apache2/mods-enabled

vers les fichiers .conf et .load du module. Dans notre cas, ssl.conf et ssl.load.

ln -s /etc/apache2/mods-available/ssl.conf ssl.conf
ln -s /etc/apache2/mods-available/ssl.load ssl.load

Pour que Apache2 trouve la clé privée et le certificat, il suffit de rajouter les paths vers ceux-ci dans

/etc/apache2/mods-available/ssl.conf

en fin de fichier:

...
SSLCertificateFile /etc/apache2/ssl/sslname.crt
SSLCertificateKeyFile /etc/apache2/ssl/alaxos.com.key

Note: L'outil apache2-ssl-certificate génèe automatiquement un certificat et une clé pour Apache2. Le fichier créé est de type file.pem. En fait, ce fichier contient la clé et le certificat. Dans ce cas, un seul lien vers celui-ci est évidemment suffisant.

Pour que Apache2 écoute sur le port 443, il suffit de modifier le fichier /etc/apache2/ports.conf en ajoutant

Listen 443

Pour créer un virtual host correspondant au port 443, il faut modifier le fichier /etc/apache2/sites-available/default, en rajoutant:

NameVirtualHost *:443
 
       ServerAdmin email@email.com
       SSLEngine on
 
       DocumentRoot /var/www/
 
               Options FollowSymLinks
               AllowOverride None
 
 
               Options Indexes FollowSymLinks MultiViews
               AllowOverride None
               Order allow,deny
               allow from all
               # This directive allows us to have apache2's default start page
               # in /apache2-default/, but still have / go to the right place
               # RedirectMatch ^/$ /apache2-default/

Permettre à certaines IP de browser un dossier

OS: Debian Sarge

Soft: Apache2

But:

Permettre à quelques adresses IP de naviguer dans les dossiers d'un répertoire.

Solution:

Remarque:

De manière générale, il est préférable de configurer Apache en évitant les .htaccess si on a les droits pour modifier les fichiers principaux. L'utilisation des .htaccess est gourmande, puisque le serveur regarde à chaque niveau d'une arborescence si le fichier existe, puis le(s) traite. Il en résulte une perte de performance. De plus, l'administration est plus simple si elle est centralisée.

Sous Apache2, les droits particuliers sur un dossier sont donnés dans les fichiers présents sous

/etc/apache2/sites-available

Voici un exemple de configuration pour un dossier (dans le fichier default:

Alias /test "/home/rodn/documents/test/"
<Directory "/home/rodn/documents/test/">
  Options Indexes
  IndexOptions NameWidth=*
  AllowOverride None
  Order deny,allow
  Deny from all
 
  #Local
  Allow from 127.0.0.1
  Allow from xxx.xxx.xx.xxx
 
  #une autre IP
  Allow from xxx.xxx.xx.xxx
</Directory>
  • Alias /test “/home/rodn/documents/test/” indique que l'URL /test pointe vers le dossier /home/rodn/documents/test/
  • Options Indexes lance le module mod_autoindex utilisé pour construire les pages html
  • IndexOptions NameWidth=* indique de montrer les noms de fichiers en entier
  • AllowOverride None bloque l'utilisation des .htaccess dans le dossier

Forcer SSL sur certaines URLs

OS: Ubuntu 9.10

Soft: Apache2.2

But:

Forcer SSL lorsque l'on accède à une certaine URL

Solution:

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>

RewriteEngine On 
RewriteCond %{SERVER_PORT} !443                              #pour tout port différent de 443
RewriteRule (.*) https://www.alaxos.ch%{REQUEST_URI} [R,L]   #redirige avec le hostname en dur -> redirige aussi 'localhost' vers le hostname

</Directory>

Ajouter un user à un fichier de "digest authentication"

OS: Ubuntu 9.10

Soft: Apache2.2

But:

Ajouter un utilisateur à un fichier contenant les users pour une “digest authentication”. La particularité de ce fichier est qu'il contient - en plus du login et du hash du mot de passe - un realm correspondant à la directive AuthName dans le fichier de config d'Apache.

Commande:

htdigest ./user_file "The AuthName value" username

Créer un alias sur un dossier au moyen de mod_rewrite

Soft: Apache2.2

But:

Le but était ici de renommer un dossier, tout en préservant des liens vers des images présentes dans ce dossier.

Exemple: renommer le dossier old_name en new_name

Solution:

  1. Renommer le dossier old_name en new_name
  2. Recréer un dossier old_name
  3. Dans le nouveau dossier old_name, créer un fichier .htaccess contenant la config suivante:
<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule (.*) /new_name/$1 [L]
</IfModule>

Bloquer l'accès sauf depuis quelques IP

Soft: Apache2.2

But:

Ne permettre l'accès à un dossier ou autre que depuis certaines adresses IP en particulier

Solution:

<IfModule mod_rewrite.c>
   RewriteEngine on

   RewriteCond %{REMOTE_ADDR} !^987\.654\.32\.10$
   RewriteCond %{REMOTE_ADDR} !^123\.456\.78\.90$
   RewriteRule    ^$ soon_online.html    [L]

</IfModule>
tips_informatiques/linux/soft/apache2/apache2.txt · Dernière modification: 2012/02/23 22:50 (modification externe)