Vous êtes sur la page 1sur 4

Comment sécuriser une communication entre un site web et le

navigateur ?

Vous allez développer une sécurité concernant l'authentification d'un serveur HTTP (le
navigateur doit être certain de se connecter au "bon" serveur et les données qui transitent
doivent être cryptées).

Vous allez mettre en place le protocole SSL/TLS sur votre serveur Web, et sécuriser un site
en créant un certificat numérique.

Pré-requis : Apache 2 déjà installé sur une VM Linux (version serveur ou desktop) + VM
de test (avec graphique)

Etape 1: Installation de la bibliothèque openSSL


Vous allez commencer par installer le paquetage openssl depuis le terminal.

Tapez :

sudo su

puis

apt install openssl

Etape 2: La création des certificats

1) Déplacez-vous dans le répertoire de configuration de votre serveur Apache2: /etc/apache2

2) Créez un répertoire appelé ssl. Vous vous placerez dans ce répertoire afin que les clés et les
certificats soient créés à l'intérieur avant d'effectuer les manipulations.

3) Création du certificat serveur

Pour vous renseigner sur l'utilisation de la bibliothèque OpenSSL, tapez :

openssl genrsa --help

a) Génération de la clé privée :

Génèrez la clé privée avec la commande suivante en définissant un nom de fichier :

openssl genrsa -out nom_fichier_cle taille_cle

soit par exemple :

openssl genrsa -out macleprive.key 1024


Ceci a pour effet de créer une clé SSL (fichier macleprive.key), c'est votre clé privée.

- Vous pouvez observer son contenu :

cat macleprive.key

- Protégez votre fichier en tapant :

chmod 400 macleprive.key

b) Création d'un certificat X509 :

La clé privée ne doit jamais être diffusée. Vous allez donc générer la partie publique sous
forme d'un certificat.

Pour que ce dernier soit accessible aux navigateurs, on a recours au format standard X509.

La création va donc passer par deux étapes (ceci c'est la syntaxe):

- Création d'un certificat générique (vous devez renseigner vos coordonnées)

openssl req -new -key nom_cle -out nom_certif_generic.csr

-Transformation vers un format X509

openssl x509 -req -days nb_jours -in nom_certif_generic.csr -signkey nom_cle


-out nom_certif_X509.crt

Générez la demande de certificat avec la commande suivante :

openssl req -new -key macleprive.key -out macleprive.csr

Le système va vous demander de saisir des champs ; remplissez-les en adaptant sauf le champ
"Common Name" qui doit être identique au nom d'hôte de votre serveur virtuel :

Country Name (2 letter code) [AU]:TN


State or Province Name (full name) [Some-State]:TUNISIE
Locality Name (eg, city) []:Nabeul
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ISET
Organizational Unit Name (eg, section) []:DEPTI
Common Name (eg, YOUR name) []: monsitewebsec.com
Email Address []:

Ce n'est pas la peine de saisir d'autres "extra attributes"...

Ceci a pour effet de créer le formulaire de demande de certificat (le fichier macleprive.csr)
à partir de votre clé privée préalablement créée.

Ce fichier contient la clé publique à certifier.

- Pour voir son contenu, tapez : cat macleprive.csr


Maintenant, deux choix s'offrent à vous :

 envoyer le fichier macleprive.csr à un organisme (le tiers de confiance ou


l'autorité de certification (CA)) et ainsi obtenir le certificat dûment signé par la clé
privée de l'organisme (après avoir payé),
 ou bien signer vous-même le certificat. Inconvénient : une erreur s’affiche dans le
navigateur et c’est à l’utilisateur d'autoriser le site.

Vous allez signer vous même votre certificat :


openssl x509 -req -days 365 -in macleprive.csr -signkey
macleprive.key -out Certif_demonserveur.crt

Le certificat est alors prêt. Il ne reste plus qu'à configurer le service Apache2 qui est
susceptible de s'appuyer sur ce certificat.

- Essayez de visualiser le certificat.

Il ne reste plus maintenant qu'à configurer Apache2.

Etape 3 : Configuration d'Apache2

a) Activation du module ssl

Il est nécessaire dans un premier temps d'activer le module ssl :

a2enmod ssl

Deux nouveaux fichiers s'ajoutent dans /etc/apache2/mods-enabled/: ssl.conf et


ssl.load.

b) Configuration du port

Dans le fichier /etc/apache2/ports.conf, vérifiez que le serveur écoute sur le port


standard 443.

sinon ajoutez au fichier /etc/apache2/ports.conf la ligne suivante :

Listen 443

c) Configuration du virtual host

Sous /etc/apache2/sites-available, il existe 2 fichiers pour deux sites


différents :

 000-default.conf ==> fichier de configuration du site par défaut


fonctionnant sous HTTP(accessible sur le port 80)
 default-ssl.conf ==> fichier de configuration du site par défaut
fonctionnant sous HTTPS(accessible sur le port 443), Seulement ce site
n'est pas actif comme le premier, il faut l'activer avec la commande :
a2ensite /etc/apache2/sites-available/default-ssl.conf

Voici ce que vous devez modifier au minimum dans le fichier /etc/apache2/site-


available/default-ssl (les commentaires et/ou explications éventuelles précèdent les
directives).

<VirtualHost *:443>

ServerName www.monsitewebsec.com
DocumentRoot /var/www/monsitewebsec

#Les directives pour les certificats

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/Certif_demonserveur.crt
SSLCertificateKeyFile /etc/apache2/ssl/macleprive.key

</VirtualHost>

- Si le site a été déjà activé, il ne reste qu'à créer le dossier /var/www/monsitewebsec et y


ajoutez au moins un fichier index.html.

Etape 4 : Test
A partir d'un navigateur sur la VM serveur, tapez :

https://127.0.0.1

ou bien :

- rajoutez la ligne : 127.0.0.1 www.monsitewebsec.com

dans le fichier /etc/hosts

- et tapez : https://www.monsitewebsec.com

Votre page devrait s'afficher normalement (après votre accord à accepter l'exception).

Du fait que le certificat que vous avez créé n'est pas garanti par un organisme officiel, le navigateur
vous met en garde sur le manque de confiance accordée à un certificat signé par son créateur. On doit
vérifier qu'un cadenas fermé au bas du navigateur atteste d'une navigation sécurisée.

Vous aimerez peut-être aussi