====== 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/"
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
* 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
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
====== 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__:
- Renommer le dossier //old_name// en //new_name//
- Recréer un dossier //old_name//
- Dans le nouveau dossier //old_name//, créer un fichier //.htaccess// contenant la config suivante:
RewriteEngine on
RewriteRule (.*) /new_name/$1 [L]
====== 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__:
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^987\.654\.32\.10$
RewriteCond %{REMOTE_ADDR} !^123\.456\.78\.90$
RewriteRule ^$ soon_online.html [L]