|
Il y a actuellement 4 visiteurs connectés sur le site !
Installer un LAMP avec ssl
|
Installer un LAMP avec ssl
|
|
Introduction
J'avais tout d'abord dans l'idée de monter un serveur apache avec certaines données sensibles mais néanmoins
accessibles au web et que je placerai dans un répertoire sécurisé .
Après diverses recherches ,il apparaît que la protection par .htaccess ,ou bien par authentification http (via un script
php) fait transiter les données en clair par le protocole http et n'offre pas une sécurisation bien élevée .
Je me suis donc orienté vers une solution ménageant la chèvre et le chou :
un accès normal via http pour mon site d'aide , accessible sans mot de passe ,ni protection.
un accès via https, pour mon autre site ,accessible a des personnes bien définies.
Prérequis:
Procurez vous les applications sources suivantes
httpd-2.0.54
php-5.0.5/
mysql-4.1.13
openssl-0.9.8
Il vous faudra sans doute quelques rpm (ou deb) relatifs aux librairies que vous souhaiterez compiler avec php: zlib, jpeg,t1lib etc.....
J'ai toujours apprécie de compiler mes applications LAMP ,afin de pouvoir affiner ultérieurement
ma configuration (rajout de modules apache) et aussi parce que j'ai du mal avec les RPM a voir
ou ces derniers placent leurs fichiers .
Ceci n'engageant que moi ,nul doute que pour la plupart des utilisateurs une installation via RPM,ou
DEB serait plus conviviale (mot à la mode qui évite toute méningite à l'installation)
Installation:
1/Mysql
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> cd /usr/local/mysql
shell> bin/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql var
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
si il y a une erreur au lancement
If faut modifier dans le fichier my.cnf la ligne
#tmpdir=/tmp/ (en tant que commentaire vu le #)
2/apache
cd httpd-2.0.54
make distclean
./configure --prefix=/usr/local/apache2 --enable-ssl --enable-mods-shared=all
make
make install
Apache doit être configuré avec l'option --enable-ssl
3/php
tar -vzxf php-5.0.5.tar.gz
cd php-5.0.5
./configure --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs --with-zlib=/usr --with-gd --with-png=/usr --with-jpeg=/usr --enable-png --enable-jpeg --with-ttf --with-t1lib --enable-gd-native-ttf --enable-dbase --with-dom=shared --with-dom-xslt=shared --with-dom-exslt=shared --with-iconv
make
make install
cp php.ini-dist /usr/local/lib/php.ini
Ssl:
Avant de démarrer le serveur apache,
vous devez toutefois créer les certificats pour apache ssl
Voici quelques étapes basiques pour faire un certificat auto-signé a des fins de tests
1/ mkdir ssl; chown root:root ssl; chmod 700 ssl; cd ssl
créer un répertoire protégé pour ssl ou on mettre les fichiers KEY, CSR, et CRT
2/ openssl genrsa -des3 1024 > www.xxx.com.key
Générer la clef. Si vous ne désirez pas faire un certificat réel, ce fichier est très important. Ne le perdez pas et ne laissez pas dans de mauvaises mains.
Cela vous coûtera au moins un nouveau certificat et le piratage de vos données protégées par la paire certificat/clé. Note au sujet des 3 options:
spécification de l'option permettant d'encrypter ultérieurement la clé avec une pass phrase. Cela offre une protection accrue, car même si la clé est volée ,on est encore protégé. Cela a pour inconvénient a chaque fois qu'on démarre le serveur (apachectl startssl),
d'être physiquement devant la console et d'entrer la pass phrase
3/ openssl req -new -key www.xxx.com.key > www.xxx.com.csr
Création du Certificat Signing Request (CSR). Le Common Name (CN)
spécifié ici doit concorder avec l'adresse du serveur, (server.com et www.server.com sont par exemple différents).
4/ openssl req -x509 -days 30 -key www.xxx.com.key -in www.xxx.com.csr >
www.xxx.com.crt
Auto-signe votre certificat comme si vous étiez un Certificate Authority (CA).
5/ chown root.root *; chmod 400 *
Protection ultérieure des fichiers KEY, CSR et CRT
Configuration apache pour ssl et virtual host
Il vous faut maintenant modifier votre fichier ssl.conf d'apache2 pour tenir compte du chemin de ces nouveaux fichiers:
#SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server-dsa.crt
deviendra chez moi
SSLCertificateFile /home/deny/ssl/www.mesvoyages.org.crt
et de même pour
SSLCertificateKeyFile /home/deny/ssl/www.mesvoyages.org.key
Configurer ensuite vos virtuals hosts
J'ai désiré ,pour ma part ,configurer un nom de domaine en http , et un autre en https
Le https est configuré de la sorte dans ssl.conf
#afin de binder le port https
# General setup for the virtual host
DocumentRoot "/home/deny/host"
ServerName www.mondomaine.org:443
ServerAdmin admin@toto.net
ErrorLog /home/deny/host/error_log
TransferLog /home/deny/host/access_log
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
etc..............
et mon second en mode non sécurisé est configuré de la sorte dans httpd.conf:
ServerAdmin admin@toto.net
DocumentRoot /home/deny/host
ServerName linux-pour-lesnuls.com
ErrorLog /home/deny/error_log
CustomLog /home/deny/access.log combined
Ne pas oublier de relancer apache avec un :
/usr/local/apache2/bin/apachectl startssl
Bon linux !
|