Vous êtes ici :
Accueil Tutoriel Administration Système Sécuriser son serveur web apache avec le SSL

Sécuriser son serveur web apache avec le SSL

Le nombre de site web accroît et de plus en plus les données ne sont pas sécurisées ce tutoriel a pour but de sécuriser votre serveur web apache

INTRODUCTION

Internet est un gigantesque réseau sur lequel la confidentialité des échanges n’est pas assurée, car la plupart des protocoles  de communication utilisés sont non sécurisés. Cependant  SSL (Secure Socket Layer) avec la dernière version TSL (Transport Layer Security) est un  protocole permettant de  pallier à ce problème. Il s’intercale  entre les protocoles habituels de transport  et les protocoles applicatifs, et proposent  ainsi une couche de sécurité  pour tout type d’application. SSL  est plus  généralement  utilisé  dans le contexte  Web(sécurisation  des  échanges  sur  le site web) ou  mail(POP et  SMTP).    

           Comment ce  protocole se présente et fonctionne-ils ?

Dans  ce tutoriel,  je vais le présenter et voir comment il  fonctionne. Un cas pratique met fin à ce tutoriel.

 

 SSL (Secure Sockets Layer)

SSL pour Secure Sockets Layer est un protocole de sécurisation des échanges sur internet. Le protocole SSL était développé à l’origine par Netscape. L’IETF, en a poursuivi le développement en le rebaptisant Transport Layer Security(TSL). On parle parfois de SSL/TLS pour designer indifféremment  SSL ou TSL.

 SSL fonctionne suivant un mode client-serveur. Il permet de satisfaire aux objectifs de sécurité suivants :

  • L’authentification du serveur
  • La confidentialité des données échangées
  • L’intégrité des données échangées
  • De manière optionnelle, l’authentification du client

Le protocole est très largement utilisé, sa mise en œuvre est facilité du fait que les protocoles de la couche application, comme HTTP, n’ont pas été profondément  modifiés pour obtenir une connexion sécurisées, mais seulement implémentés au-dessus de SSL/TLS, ce qui pour HTTP a donné le protocole HTTPS.

  1. Présentation du protocole SSL

Au fur et à mesure qu'Internet se développait, de plus en plus de sociétés commerciales se mirent à proposer des achats en ligne pour les particuliers. L'offre se mit à croître régulièrement, mais le chiffre d'affaires dégagé par le commerce électronique restait modeste tant que les clients n'avaient pas une confiance suffisante dans le paiement par carte bancaire. Une des façons de sécuriser ce paiement fut d'utiliser des protocoles d'authentification et de chiffrement tels que SSL. La session chiffrée est utilisée pour empêcher un tiers d'intercepter des données sensibles transitant par le réseau : numéro de carte lors d'un paiement par carte bancaire, mot de passe lorsque l'utilisateur s'identifie sur un site…

Avec un système SSL, la sécurité a été sensiblement améliorée et les risques pour le client grandement réduits, comparés à l'époque où le paiement par internet était encore une technologie émergente. Bien que, comme tout système de chiffrement, le SSL/TLS ne pourra jamais être totalement infaillible, le grand nombre de banques et de sites de commerce électronique l'utilisant pour protéger les transactions de leurs clients peut être considéré comme un gage de sa résistance aux attaques malveillantes.

En 2009, TLS est utilisé par la plupart des navigateurs Web. L'internaute peut reconnaître qu'une transaction est chiffrée à plusieurs signes :

  • l'URL dans la barre d'adresse commence par https et non http (https://...) ;
  • affichage d'une clé ou un cadenas, dont l'emplacement varie selon le navigateur : généralement à gauche de la barre d'adresse mais aussi dans la barre inférieure de la fenêtre ;
  • les navigateurs peuvent ajouter d'autres signes, comme le passage en jaune de la barre d'adresse (cas de Firefox).

Il existe quelques cas très spécifiques où la connexion peut être sécurisée par SSL sans que le navigateur n'affiche ce cadenas, notamment si le webmaster a inclus la partie sécurisée du code HTML au sein d'une page en http ordinaire, mais cela reste rare. Dans la très grande majorité des cas, l'absence de cadenas indique que les données ne sont pas protégées et seront transmises en clair.

  1. Principe de fonctionnement dans les navigateurs web

Lorsqu'un utilisateur se connecte à un site web qui utilise SSL/TLS, les étapes suivantes ont lieu :

  1. le navigateur du client envoie au serveur une demande de mise en place de connexion sécurisée par SSL.
  2. le serveur envoie au client son certificat, contenant sa clé publique, ses informations (nom de la société, adresse postale, pays, e-mail de contact...) ainsi qu'une signature numérique sous forme de texte chiffré. Optionnel : si le serveur nécessite que le client s'authentifie, il lui envoie également à ce moment une demande d'authentification.
  3. le navigateur du client tente de déchiffrer la signature numérique du certificat en utilisant les clés publiques contenues dans les certificats des autorités de certifications (AC) intégrés par défaut dans le navigateur.
    1. si l'une d'entre elles fonctionne, le navigateur web en déduit le nom de l'autorité de certification qui a signé le certificat envoyé par le serveur. Il vérifie que celui-ci n'est pas expiré puis envoie une demande OCSP (Online Certificate Status Protocol) à cette autorité pour vérifier que le certificat du serveur n'a pas été révoqué.
    2. si aucune d'entre elles ne fonctionne, le navigateur web tente de déchiffrer la signature numérique du certificat du serveur à l'aide de la clé publique contenue dans celui-ci.
      1. en cas de réussite, cela signifie que le serveur web a lui-même signé son certificat. Un message d'avertissement s'affiche alors sur le navigateur web, prévenant l'utilisateur que l'identité du serveur n'a pas été vérifiée par une autorité de certification et qu'il peut donc s'agir potentiellement d'un site frauduleux.
      2. en cas d'échec, le certificat est invalide, la connexion ne peut aboutir.
  4. le navigateur du client génère une clé de chiffrement symétrique (à la différence des clés privés et publiques utilisés par les certificats qui sont asymétriques), appelée clé de session, qu'il chiffre puis envoie ce message chiffré au serveur :
    1. si le serveur ne nécessite pas que le client s'authentifie, le client chiffre la clé symétrique à l'aide de la clé publique contenue dans le certificat du serveur.
    2. si le serveur nécessite que le client s'authentifie,
      1. le client envoie son certificat au serveur
      2. le client chiffre le message avec sa clef privée et l'envoie au serveur (permet de vérifier que l'on possède bien la clef privée associée au certificat que l'on vient d'envoyer)
      3. on chiffre la clef symétrique avec la clef publique du serveur
  5. le serveur déchiffre la clé de session envoyée par le client :
    1. soit grâce à sa propre clé privée si le serveur ne nécessite pas que le client s'authentifie (le client n'envoie donc pas de certificat au serveur),
    2. soit grâce à la clé publique contenue dans le certificat du client si le serveur nécessite que le client s'authentifie. Le serveur utilise alors le même procédé décrit au point n°3 pour authentifier le client.
  6. le serveur en déduit alors la clé de session du client qu'il utilisera à partir de ce moment pour chiffrer et envoyer les données au client à la place de sa clé publique auparavant.
  7. le client et le serveur échangent des données qu'ils chiffrent et déchiffrent uniquement à l'aide de la clé de session. La connexion SSL/TLS est établie.
  8. Une fois la connexion terminée (déconnexion volontaire de l'utilisateur ou si durée d’inactivité trop élevée), le serveur révoque la clé de session.

TP : installation de SSL sous apache

Ce TP doit être réalisé sous l’environnement Linux pour windows un nouveau tutoriel est requis.

Prérequis pour le TP :

  • Un pc sous Linux faisant office de serveur web (apache 2.2)

Le but  étant de sécurisé un serveur apache sous linux en implémentant le protocole SSL.

Etape du TP :

  • Généré un certificat auto-signé pour apache

- D’abord on génère une clé non chiffré sur le disque (Pour éviter de saisir un mot de passe à chaque redémarrage d’Apache) :

         NB : pour eviter le problème avec SSL il est recommendé de choisir le nom des fichiers avec le même nom du domaine du serveur.

        Tout d'abord placez vous dans le repertoire /etc/ssl : cd /etc/ssl

 

# openssl genrsa –out localhost.key 1024

 - Ensuite on crée un certificat signé avec cette clé :

  

# openssl req –new –x509 –days 365 –key localhost.key –out localhost.crt

 -Répondre a toutes les questions posées en s’assurant de retenir les données entrées (Common name, Organisation name, city, country, etc.).

  • Implémentation dans Apache

- Modifier le fichier de définition du VirtualHost : pour cela ouvrez le fichier de configuration d'apache httpd.conf selon le cas ce fichier se trouve dans /etc/apache/httpd.conf ou soit recherchez ce fichier avec la commande find une fois trouvé ouvrez le avec un éditeur comme vim, vi, nano , gedit puis ajoutez les lignes suivantes :

NameVirtualHost *:443 
SSLEngine On 
SSLCertificateFile /etc/ssl/localhost.crt 
SSLCertificateKeyFile /etc/ssl/localhost.key 
SSLVerifyClient None

Sauvegarder le fichier et quitter.

Ensuite redemarrer apache en faisant :

- service httpd restart ou

- service apache2 restart

selon le cas

Maintenant on effectue un test qui consiste à se connecter par un canal sécurisé(SSL) au serveur apache via SSL. Pour cela ouvrez  votre navigateur entrer l’adresse suivante : https://localhost si le test s’effectue en local et https://adresse_du_serveur si le test s’effectue en réseau.

         Le navigateur va lever une exception en disant qu’il ne reconnait pas le certificat du site et que ce site peut être un site malveillant c’est normale parce que c’est nous même qui a signé le certificat.

Voilà le tutoriel prend fin merci à Auguste, Cyriaque, pour le soutien à la réalisation de ce tuto.




Tony NGUEREZA 13 Jan 2016, 05h21

Aucun commentaire n'a encore été ajouté soyez le premier a ajouté un commentaire

Vous n'êtes pas connecter veuillez vous connecter ou créer gratuitement un compte pour poster des commentaires

Vous êtes ici :
Accueil Tutoriel Administration Système Sécuriser son serveur web apache avec le SSL