Sécuriser l'échange entre un client et un serveur web Apache avec SSL

 

 

 

Travail fait par CHEBBAH Mehdi et HAMMAS Ali Cherif


 

Tableau de Contenue


1. Créer un espace de Publication Web Apache

  1. Création du répertoire delta
  1. Modification du fichier httpd.conf

Le fichier httpd.conf correspond a la configuration du serveur http.

On fait les modifications suivantes:

  1. Création du fichier index.html pour le serveur http
  1. Redémarrage de Apache

  1. Test


 

2. Créer un répertoire pour la zone sécurisée

  1. Création de du répertoire secure:
  1. Modification du fichier httpd-ssl.conf:

Le fichier httpd-ssl.conf correspond a la configuration de serveur HTTPS.

On fait les modifications suivantes:

  1. Création du fichier index.html pour le serveur https

 

3. Créer les certificats et les clés pour la CA et le Serveur Web

  1. Création du certificat du CA:

On lance tinyca2 par la commande suivante:

On remplie les informations de CA comme suit:

la config du CA

On clique sur OK le résultat est:

  1. Création des deux répertoires cles et certifs
  1. Création du clé et du certificat de serveur

On clique sur New dans l'angle certificats puis on choisi serveur

On rempli les informations demandés comme suit:

Puis on sera invité a remplir le mot de pass du CA:

puis on clique sur export dans l'angle Keys, on rempli la fenêtre comme suit:

On confirme qu'on voulez importer la clé sans mot de passe:

Un message de sucée va être affiche tout suite.

Puis on clique sur l'angle certificats puis export et on rempli les informations demandés:

Un message de sucée va être affiche tout suite.

  1. Modification du fichier httpd-ssl.conf:

On fait les modifications suivantes:


 

4. Les tests

  1. Redémarrage de apache:
  1. Test:

Firefox va demander si on accepte le certificat du serveur

firefox demande si accepte le certif

Si on accepte cette certificat la page index.html qu'on a inséré a delta/secure va être chargé mais avec un avertissement indique que la certificat n'est pas sécurisé.

la page index.html a le contenu "Hello World, This is a secure HTTP server."

  1. Exportation du certificat du CA:

On clique sur l'angle CA puis sur export CA puis on choisi l'endroit ou on veut enregistrer le certificat du CA

On ajoute le certificat au navigateur. Pour faire on suit les étapes suivantes:

Les image pour ajouter le certificat de CA a firefox


 

5. Analyse et comparaison des échanges

A. Sans authentification du serveur (HTTP)

  1. On remarque que le port utilisé par le serveur est 80 et que le protocole utilisé dans la couche transport pour cette session est TCP

  1. On remarque que les donnes sont envoyé en clair dans la requête HTTP (Pas de confidentialité)

  1. On remarque aussi que la repense du serveur n'est pas crypté

  1. On remarque aussi qu'il n y a pas d'options dans les paquets pour vérifier l’identité du serveur ou du client

En générale la structure de cette session est la suivante

B. Avec authentification du serveur (HTTPS)

  1. On remarque que le port utilisé par le serveur est 443 et qu'on a utilise deux protocoles dans la couche transport TCP et TLS

  2. On remarque que les données sont cryptées dans les requêtes

  3. On remarque aussi que les repenses du serveur sont cryptées

  4. On remarque qu'il y a des options dans les paquets TLS pour vérifier l’identité du serveur ou du client

En générale la structure de cette session est la suivante

Pour le protocole SSL

  1. ClientHello

  1. ServeurHello

  2. Certificat du serveur

  3. ServerkeyExchange

  4. ServerHelloDone

  5. Clientkeyexchange

  6. ChangeSipherSpec du client

  7. Finished du client

  8. ChangeSipherSpec et Finished du serveur


     

6. Ajouter un certificat Client

  1. Création du certificat du client

On clique sur New dans l'angle certificats puis on choisi client

On rempli les informations demandés comme suit:

Puis on sera invité a remplir le mot de pass du CA:

puis on clique sur export dans l'angle Keys après avoir sélectionner client, on rempli la fenêtre comme suit:

On confirme qu'on voulez importer la clé sans mot de passe:

Un message de sucée va être affiche tout suite.

Puis on clique sur l'angle certificats puis export après avoir sélectionner client et on rempli les informations demandés:

Un message de sucée va être affiche tout suite.

  1. Modification de apache pour que le serveur exige un certificat pour le client:

On ouvre le fichier httpd-ssl.conf et on fait le modifications suivantes:

  1. Testes

On relance apache

On remarque que le client ne peut pas connecter sur le serveur parce que le navigateur ne trouve pas la certificat du client et le serveur demande cette dernier donc le protocole HTTPS génère une alerte au navigateur pour empêcher le client de se connecter au serveur.

Si on analyse cette session on utilisant Wireshark on trouve

  1. L'ajout de certificat du client dans le navigateur:

Puisque Firefox n'accepte que les certificats des clients qui a l’extension .p12 on est obligé de re-exporter la certificat dans cette format en suivant les étapes:

Puis

Ensuit on ajoute la certificat exportée dans le navigateur pour faire :

On clique sur Import... puis on choisi le certificat de client crée dans l’étape précédente

Une fenêtre demandant le mot de passe va apparaître, on la laisse vide

On remarque qu'une entre va être ajouté a l'angle Your certificats

Puis on clique sur OK

  1. Testes

On relance apache

Si on essai d'accéder au serveur via le navigateur on sera invite a choisir une certificats pour être authentifie dans le serveur

Si on clique sur OK, alors on peut accéder au serveur avec toutes sécurité

Dans Wireshark on trouve

On remarque qu'il y a une authentification mutuel entre le serveur et le client