Installer Apache, PHP5, MySQL, Postfix SMTP et Courier POP
sur un serveur Kimsufi ou RPS d'OVH
Configuration HTTPS (HTTP avec SSL) du serveur Apache
Pour supporter Https il faut le package openssl qui a déjà été installé. Il faut aussi activer des modules spécifiques dans Apache. Pour cela il suffit de copier les modules depuis le dossier "/etc/apache2/mods-available/" vers "/etc/apache2/mods-enabled/"
r10198:~# cd /etc/apache2
r10198:/etc/apache2# cp mods-available/ssl.* mods-enabled/
Le serveur Web doit aussi posséder un certificat qu'il doit présenter au navigateur Web pour établir la connexion sécurisée. Nous allons ici créer un certificat auto-signé (SSC - Self Signed Certificat), ce qui n'est pas parfait au niveau sécurité, mais est beaucoup mieux que rien.
Pour créer un certificat on utilise openssl.
Dans un premier temps on génère une clé privée dans un fichier. Cette clé doit rester secrête ("privée"), car elle permet de générer des certificats valides :
r10198:~# openssl genrsa -des3 -out /etc/ssl/private/apache-rps-phpconcept-net.key 1024
Generating RSA private key, 1024 bit long modulus
..++++++
...................++++++
e is 65537 (0x10001)
Enter pass phrase for /etc/ssl/private/apache-rps-phpconcept-net.key:
Verifying - Enter pass phrase for /etc/ssl/private/apache-rps-phpconcept-net.key:
r10198:~# ls /etc/ssl/private/
apache-rps-phpconcept-net.key ssl-cert-snakeoil.key
r10198:~#
On conserve bien la "pass phrase" qui permet d'accéder à la clé car elle sera nécessaire plus tard.
On génère ensuite le certificat pour le serveur Web. On va le générer pour 3 ans :
r10198:~# openssl req -new -key /etc/ssl/private/apache-rps-phpconcept-net.key
-x509 -out /etc/ssl/certs/apache-rps-phpconcept-net.crt -days
1095
Enter pass phrase for /etc/ssl/private/apache-rps-phpconcept-net.key:
You are about to be asked to enter information that will be
incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished
Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:Paris
Locality Name (eg, city) []:Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]:PhpConcept
Organizational Unit Name (eg, section) []:RPS
Common Name (eg, YOUR name) []:rps.phpconcept.net
Email Address []: This e-mail address is being protected from spambots. You need JavaScript enabled to view it
r10198:~#
Pour que Apache puisse utiliser SSL il lui faut à la fois le certificat (.crt) et le clé privée (.key). Hors la clé privée est protégée par un mot de passe (pass phrase). Pour que Apache ne demande pas le mot de passe à chaque démarrage, il nous faut générer un fichier de clé privée non protégé par une pass phrase :
r10198:~# openssl rsa -in /etc/ssl/private/apache-rps-phpconcept-net.key
-out /etc/ssl/private/apache-rps-phpconcept-net.nopass.key
Enter pass phrase for /etc/ssl/private/apache-rps-phpconcept-net.key:
writing RSA key
r10198:~# ls /etc/ssl/private/
apache-rps-phpconcept-net.key ssl-cert-snakeoil.key
apache-rps-phpconcept-net.nopass.key
r10198:~#
r10198:~# chmod 400 /etc/ssl/private/apache-rps-phpconcept-net.nopass.key
r10198:~# ls -al /etc/ssl/private/apache-rps-phpconcept-net.nopass.key
-r-------- 1 root root 891 2008-01-03 08:54 /etc/ssl/private/apache-rps-phpconcept-net.nopass.key
r10198:~#
Afin de limiter au maximum l'accès à ce fichier de clé privé on change son mode de lecture pour n'autoriser que root.
Nous allons maintenant configurer Apache.
La première chose à faire est d'activer l'écoute sur le port 443, celui réservé pour Https. Pour cela on ajoute le port dans le fichier de configuration /etc/apache2/ports.conf
r10198:~# vi /etc/apache2/ports.conf
Listen 80
Listen 443
r10198:~#
Puis on créé un nouveau serveur virtuel (VHOST) qui contiendra la configuration pour https://rps.phpconcept.net. Pour cela on copie le fichier du VHOST par defaut et on édite ses propriétés :
- On supprime la première ligne "NameVirtualHost *" qui ne doit être présente deux fois.
- On spécifie bien le nom DNS du serveur Web dans la directive VirtualHost, ainsi que le port d'écoute SSL 443.
- On ajoute alors les 3 lignes pour configurer la partie SSL et l'usage du certificat que l'on a créé précédemment.
r10198:~# cp /etc/apache2/sites-enabled/000-default /etc/apache2/sites-enabled/001-ssl-rps-phpconcept-net
r10198:~# vi /etc/apache2/sites-enabled/001-ssl-rps-phpconcept-net
<VirtualHost rps.phpconcept.net:443>
ServerAdmin This e-mail address is being protected from spambots. You need JavaScript enabled to view it
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-rps-phpconcept-net.crt
SSLCertificateKeyFile /etc/ssl/private/apache-rps-phpconcept-net.nopass.key
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
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/
</Directory>
[...]
</VirtualHost>
r10198:~#
On redémarre Apache :
r10198:~# /etc/init.d/apache2 restart
Forcing reload of web server (apache2)... waiting .
r10198:~#
On teste le serveur : https://rps.phpconcept.net

Le navigateur va alors demander au serveur son certificat pour l'identifier.

On peut cliquer sur "Examine Certificate ..." pour valider qu'il s'agit bien du bon serveur.

Si l'on accepte le certificat, le navigateur établi alors la connection chiffrée avec le serveur Web. Dans notre exemple nous sommes pour le moment avec une page "vide" montrant simplement le dossier /var/www.
Toute cette configuration Https peut paraitre longue est fastidieuse, cependant elle permettra plus tard d'utiliser les outils comme Phpmyadmin pour la gestion de la base de données, ou Sqwebmail pour la lecture des mails. Le transfert des données (mot de passes, mails, etc) se fait alors de façon chiffrée et donc bien plus sécurisé.
Note sur les certificats :
L'utilisation de certificats auto-signés apporte une certaine sécurité dans l'accès aux données de son site Web. Cependant il ne protège pas de toutes les intrusions, puisqu'aucune autorité "de confiance" n'a validé le certificat. Pour augmenter le niveau de sécurité il est nécessaire d'obtenir un certificat par une autorité de certification.
OVH offre un service de certificat que vous pouvez découvrir à l'URL suivante : https://www.ovh.com/fr/particulier/produits/ssl.xml
| [Sommaire] | Installation PHP5 |




