Sécurisation d’une application Web

Sécurisation d’une application Web

L’objectif de la sécurisation d’une application Web est de donner accès à certaines ressources qu’aux utilisateurs ayant  le  profil  adéquat.  Cela  suppose  d’authentifier  l’utilisateur  et  de  vérifier  s’il  est  autorisé  à  accéder  aux  ressources  demandées. Le plan de développement de la sécurisation d’une application peut se résumer aux étapes suivantes : ● définir la méthode d’authentification ; ● définir le domaine de sécurité ; ● déclarer les contraintes de sécurité pour les ressources qui doivent être protégées ; ● définir les profils d’utilisateurs qui ont le droit d’accéder aux ressources. Ces étapes ne  sont pas liées. Par exemple, nous pouvons  changer la méthode d’authentification  sans  toucher aux  autres contraintes. Différents exemples vont illustrer quelques­unes des  configurations possibles. Tous  ces exemples  sont basés  sur la  même  application Web  qui  comporte  trois  espaces  de  navigation  dont  certains  sont  uniquement  accessibles  à  des  utilisateurs authentifiés. 1. Mise en place de HTTPS Les  données  qui  transitent  entre  le  navigateur  et  le  serveur  transitent  en  clair.  TSL  (Transport  Secure  Layer),  anciennement  baptisé  SSL  (Secure  Sockets  Layer),  permet  le  chiffrement  de  ces  données.  Ce  protocole  a  été  développé à l’origine par Netscape, l’IETF (Internet Engineering Task Force) ayant depuis, racheté le brevet. Le port d’écoute par défaut de HTTPS est le port 443. Ce numéro de port n’a pas besoin d’être précisé dans l’URL.  Lorsque l’URL contient le protocole HTTPS, automatiquement le navigateur se connecte sur le port 443. Ce protocole permet d’atteindre les objectifs suivants : ● authentification du serveur : le serveur possède un certificat numérique ; ● confidentialité des données échangées entre le navigateur et le serveur ; ● intégrité des données échangées ; ● possibilité  de  mettre  en  place  une  authentification  forte  par  authentification  mutuelle  entre  le  client  et  le  serveur. Pour mettre en place le protocole HTTPS sur JBoss, il faut : ● Installer un certificat numérique qui identifie le serveur et qui contient la clé de chiffrement. Ce certificat est  normalement émis par un tiers de confiance, l’autorité de certification (Verisign, par exemple). Nous verrons  comment créer notre propre certificat. ● Configurer le fichier server.xml du conteneur Web pour ajouter un connecteur sécurisé. 

Création du certificat numérique

Un outil de gestion des certificats : keytool est inclus dans les outils du JDK. Cet utilitaire est dans le répertoire bin du répertoire d’installation du JDK. Pour créer votre certificat, tapez la commande suivante (sur une seule ligne) : keytool -keyalg RSA -genkey -alias eni -keystore /server/default/conf/eni.keystore ATTENTION : certaines commandes de l’outil keytool ont changé de nom avec JSE 6 : ● -export, a été renommée en ­exportcert ; ● -genkey, a été renommée en ­genkeypair ; ● -import, a été renommée en ­importcert. Cette commande permet de préciser : ● l’algorithme de chiffrement utilisé, par l’option -keyalg, ici RSA ; ● l’alias utilisé pour retrouver la clé, par l’option -alias, ici eni ; ● le fichier où seront enregistrées les clés, le trousseau de clés, par l’option -keystore, ici, serveur.keystore.  Si cette option n’est pas précisée, un fichier .keystore est créé, sans nom devant l’extension (fichier caché  sous LINUX). L’utilitaire vous demande alors le mot de passe qui sera utilisé, ici nous avons entré « editions ». Vous devez ensuite  confirmer le mot de passe. Ensuite, vous devez entrer un certain nombre de renseignements nom, prénom, ville,  etc. $jboss-4.2.2.GA\server\default\conf>keytool -genkey -keyalg RSA -alias eni -keystore serveur.keystore Tapez le mot de passe du Keystore :editions Ressaisissez le nouveau mot de passe :editions Quels sont vos prénom et nom ? [Unknown] : localhost Quel est le nom de votre unité organisationnelle ? [Unknown] : eni Quelle est le nom de votre organisation ? –

Quel est le nom de votre ville de résidence ?

[Unknown] : Paris Quel est le nom de votre état ou province ? [Unknown] : France Quel est le code de pays à deux lettres pour cette unité ? [Unknown] : FR Est-ce CN=Franck SIMON, OU=editions eni, O=eni, L=Paris, ST=France, C=FR ? [non] : oui Spécifiez le mot de passe de la clé pour (appuyez sur Entrée s’il s’agit du mot de passe du Keystore) : Le premier mot de passe entré correspond au mot de passe du trousseau de clés (le fichier serveur.keystore), le  dernier mot de passe correspond à celui de la clé, ici le même que le trousseau de clés. Le fichier  keystore a été  généré dans le répertoire conf de la configuration de serveur par défaut. Vérifiez que le fichier serveur.keystore soit  bien créé. Notez que les renseignements sur le prénom et nom correspondent à la partie CN  (Common  Name) du certificat.  Certains navigateurs vérifient que la valeur du CN corresponde à une partie du nom de domaine, sur laquelle est  faite la requête. S’il  n’y a pas correspondance, le navigateur peut alors afficher une message d’avertissement. Ici,  nous mettrons donc localhost, dans le monde réel cela pourrait être votre nom de domaine. Le certificat généré ici est un certificat autosigné. Pour faire signer le certificat par une autorité de certification, des  manipulations supplémentaires sont nécessaires, référez­vous à la documentation de l’utilitaire keytool. b. Configuration du fichier server.xml Le  fichier  server.xml  se  trouve  dans  le  répertoire  :  \server\default\deploy\jbossweb.deployer Avant de manipuler ce fichier, faites­en une copie. Ajoutez l’élément  suivant, en veillant à le positionner  dans la balise . Les attributs utilisés sont : ● port  :  port  d’écoute  du  connecteur,  ici  8443.  Il  faudra  donc  préciser  le  port  dans  l’URL  :  https://localhost:8443/secu. Si vous indiquez le port 443, vous n’avez pas besoin de le préciser dans l’URL ; ● protocol : il s’agit du protocole HTTP 1.1 ; ● SSLEnabled : positionné à true ; ● address : adresse d’écoute de JBoss ; ● maxThreads : nombre maximum de threads exécutés en même temps sur ce connecteur ; ● scheme : préfixe https pour l’URL ; ● secure : positionné à true ; ● clientAuth : positionné à false pour que le navigateur n’ait pas à envoyer une chaîne certifiée, sauf pour  l’authentification en CLIENT­CERT ; ● sslProtocol : positionné à TSL ; ● keystoreFile : nom du fichier contenant le certificat, avec son chemin ; ● keystorePass : mot de passe du certificat ; ● keyAlias : nécessaire si plusieurs clés sont présentes dans le trousseau. Il contient alors l’alias vers la clé  utilisée. Redémarrez le serveur, et testez l’URL suivante : https://localhost:8443/. Par défaut, le port d’écoute en mode HTTPS est le port 443, si le serveur est configuré sur le port HTTPS par défaut,  vous n’avez pas à préciser le port, l’URL devient alors : https://localhost/. Attention de bien préciser le protocole  https pour activer la communication sécurisée. 

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *