Projet Système Distribué : Implémentation d'un serveur générateur de certicats. BEUQUE Eric, CORNEVAUX Sébastien, MOUTENET Cyril 13 janvier 2009



Documents pareils
Compte-rendu de projet de Système de gestion de base de données

Cryptographie. Master de cryptographie Architectures PKI. 23 mars Université Rennes 1

Raja Bases de données distribuées A Lire - Tutoriel

PROJET : ETNIC ESB JANUS. Guide technique : WS-Notification - Clustering. BULL Services et Solutions

TD sur JMS ) Qu est-ce qu un middleware orienté message (MOM)? Quelles différences faites-vous entre un MOM et JMS?

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Polux Développement d'une maquette pour implémenter des tests de sécurité

RMI le langage Java XII-1 JMF

TP2 - Conguration réseau et commandes utiles. 1 Généralités. 2 Conguration de la machine. 2.1 Commande hostname

II- Préparation du serveur et installation d OpenVpn :

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Client Kiwi Backup : procédures d'installation et de mise à jour. Gilles Arnoult, Clément Varaldi

Installation et utilisation d'un certificat

SÉCURITÉ DU SI. Mini PKI. Denoun Jérémy De Daniloff Cyril Bettan Michael SUJET (3): Version : 1.0

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Pour valider les pré-requis nécessaires, avant d'aborder le TP, répondez aux questions ciaprès

Stockage du fichier dans une table mysql:

Connexion au Wifi "Recherche" avec un Smartphone Symbian (Nokia)

LANDPARK NETWORK IP LANDPARK NETWORK IP VOUS PERMET D'INVENTORIER FACILEMENT VOS POSTES EN RÉSEAU

LISTES DE DISTRIBUTION GÉRÉ PAR SYMPA DOCUMENT EXPLICATIF DE ÉCOLE POLYTECHNIQUE

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Installation d OwnCloud 8.0 sous Debian Avec connexion des utilisateurs active directory et mise en place de HTTPS

Qu'est-ce que le BPM?

contact@nqicorp.com - Web :

Guide d'installation. Release Management pour Visual Studio 2013

Projet Active Object

Mini-projet systèmes & réseau serveur de «tchatche»

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

Serveur de partage de documents. Étude et proposition d'une solution afin de mettre en place un serveur de partage de documents.

THEGREENBOW FIREWALL DISTRIBUE TGB::BOB! Pro. Spécifications techniques

Télécom Nancy Année

Vous y trouverez notamment les dernières versions Windows, MAC OS X et Linux de Thunderbird.

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

Généralités sur le Langage Java et éléments syntaxiques.

Mysql. Les requêtes préparées Prepared statements

Sage CRM. 7.2 Guide de Portail Client

Service de certificat

[ Sécurisation des canaux de communication

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

Mise en œuvre des serveurs d application

Contrôle d accès UTIL TP N 1 découverte

TP architecture N-tiers en Java EE ou Java EE, Android : la synthèse. Le serveur GereCompteBancaireServlet

Mises à jour CELCAT depuis la version 6.4

Proxy et reverse proxy. Serveurs mandataires et relais inverses

Réaliser un inventaire Documentation utilisateur

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

TP 1 : 1 Calculs en binaire, octal et hexadécimal

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

Le rôle Serveur NPS et Protection d accès réseau

Sécurité du Système d Information. Mini PKI

Le service FTP. M.BOUABID, Page 1 sur 5

molis result portal Description fonctionnelle La structure système Configuration système requise Architecture du système

TAGREROUT Seyf Allah TMRIM

nouvelles fonctions et modifications

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

OpenVPN Manager. Projet M2-ESECURE - Robin BUREL. Date 10 Janvier 2013 Tuteur : M. Richard

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Sécurité des applications Retour d'expérience

SweetyPix, mode d'emploi

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Documentation utilisateur, manuel utilisateur MagicSafe Linux. Vous pouvez télécharger la dernière version de ce document à l adresse suivante :

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

CORBA. (Common Request Broker Architecture)

Authentification avec CAS sous PRONOTE.net Version du lundi 19 septembre 2011

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Architectures web/bases de données

Windows Server Chapitre 3 : Le service d annuaire Active Directory: Concepts de base

Module 0 : Présentation de Windows 2000

Internet Information Services (versions 7 et 7.5) Installation, configuration et maintenance du serveur Web de Microsoft

Middleware eid v2.6 pour Windows

Hadoop / Big Data. Benjamin Renaut <renaut.benjamin@tokidev.fr> MBDS

Stratégie de groupe dans Active Directory

AFTEC SIO 2. Christophe BOUTHIER Page 1

Cours Langage C/C++ Programmation modulaire

Intergiciel - concepts de base

Projet : PcAnywhere et Le contrôle à distance.

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

ESXi: Occupation RAM avec VM_Windows et VM_Linux. R. Babel, A. Ouadahi April 10, 2011

Méthodes de développement. Analyse des exigences (spécification)

Compte Rendu d intégration d application

Présentation d'un MOM open-source

2010 Ing. Punzenberger COPA-DATA GmbH. Tous droits réservés.

Programmation Web. Introduction

Configurer son courrier électrique avec votre compte Abicom

Initiation à la messagerie

Annexe : La Programmation Informatique

Chapitre 5 : Les procédures stockées PL/SQL

Introduction à Eclipse

Services OSI. if G.Beuchot. Services Application Services Présentation - Session Services Transport - Réseaux - Liaison de Données - Physique

Errata partie 2 Kit de formation Configuration d une infrastructure Active Directory avec Windows Server 2008

Installation et configuration de Vulture Lundi 2 février 2009

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Sage 100 CRM - Guide d installation Version Mise à jour : 2015 version 8

Logiciel Version 1.0 ConnectKey TM Share to Cloud Avril Xerox ConnectKey Share to Cloud Guide de l'utilisateur et de l'administrateur

Transcription:

Projet Système Distribué : Implémentation d'un serveur générateur de certicats BEUQUE Eric, CORNEVAUX Sébastien, MOUTENET Cyril 13 janvier 2009 1

Table des matières 1 Sujet 3 2 Analyse 4 3 Création clé client 4 4 Client C/C++ 5 5 Communication Java/C++ entre client et relais : Corba 5 6 Les relais Java 5 6.1 Fonctionnement.......................... 6 6.2 Modélisation............................ 6 7 Communication entre relais et serveur : JMS 7 8 Serveur Java 7 8.1 Fonctionnement.......................... 7 8.2 Modélisation............................ 7 9 Gestion des certicats 8 10 Guide d'utilisation 8 10.1 Arborescence du dossier projet.................. 8 10.2 Exécution............................. 9 11 Bilan 9 2

1 Sujet An d'appliquer plusieurs des technologies découvertes en module de Systèmes Distribués, les étudiants de Master 2 SDR avaient un projet à réaliser à deux ou à trois. Le but du projet était l'implémentation d'un serveur Java délivrant des certicats X509 à deux clients, disposant de clés, pour permettre à ces derniers d'établir une connexion sécurisée et authentiée. L'acheminement des certicats jusqu'aux clients était fait de manière à ce que les technologies JMS et Corba soient entre autres utilisées. Ce rapport revient sur nos choix de réalisation et de développement en partant de l'implémentation des clients jusqu'à celle du serveur. 3

2 Analyse Si nous avions toutes les clés en main pour mener à bien le projet avec les TPs réalisés en amont de ce travail, l'utilisation de nombreuses technologies nécessitait un indispensable travail d'analyse. Nous avons donc rapidement schématisé de la manière suivante notre vision du sujet : Fig. 1 Analyse 3 Création clé client Pour la génération des clés client et des requêtes à destination du serveur de certicats, nous nous sommes appuyé sur le TP OpenSSL. L'opération se découpe donc en deux commandes : 1. openssl genrsa out key 1024 : génération d'une clé RSA (1024 correspond à la taille), 4

2. openssl req new key key out req : génération de la requête à destination d'une autorité de certication à partir de la clé client. C'est donc cette requête générée qui sera envoyée en direction du serveur de certicats. Dans notre projet, on appel les deux commandes en exécutant le script de lancement "genkey.sh" avec l'option "-c". 4 Client C/C++ Notre client va d'abord "charger" la requête générée avec sa clé dans le bon chier. Après l'initialisation de Corba, le client peut aller "récupérer" (protocole RPC) son nouveau certicat chez le relais en lui passant la requête. Le client stocke alors le certicat dans le chier "key.pem". Le client va de la même manière aller (mais sans passer de clé cette fois-ci) ensuite "récupérer" le certicat de l'autorité de certication. Ce second certicat est stocké dans "cacert.pem". Une fois que nos deux clients ont réalisé ces opérations, ils peuvent communiquer (échange de messages de bienvenue) de manière sécurisée et authentiée. En pratique, les deux clients vérient d'abord que le nouveau certicat reçu est compatible avec leurs clés privées. Ensuite, ils établissent la connection SSL par laquelle ils vérient d'abord la validité entre le certicat de l'autre client et celui d'autorité. 5 Communication Java/C++ entre client et relais : Corba Corba est un standard qui permet la communication sur le modèle RPC en environnement hétérogène et l'accès normalisé à des services. Pour faire communiquer notre client C/C++ et notre relais Java, il fallait qu'ils partagent la même interface Idl ("RelaisApp.idl"). 6 Les relais Java Le relais fait l'intermédiaire entre le client et le serveur. La fonction du relais est de communiquer avec le serveur de certicat au moyen d'un topic et d'une queue JMS. La queue et le topic sont crées par le 5

serveur de certicat. Le relais possède deux méthodes pouvant être appelées par un client corba. 6.1 Fonctionnement Au démarrage du relais, celui-ci se connecte au topic. La référence du topic est stockée dans le JNDI ("fr.sd.topic"). On y récupére aussi le Connection- Factory du topic. Nous avons ajouté la possibilité de réessayer plusieurs fois de récupérer le topic au moment du démarrage du relais. La récupération des messages du topic est réalisée de façon asynchrone avec validation automatique des messages lus. Au moment de la réception d'un message MessageServeurPret dans le topic, on récupére la référence de la queue contenue dans le message transmit. Pour la queue, nous avons choisi de récupérer les messages de façon asynchrone avec validation des messages lus par le relais. En eet, la queue contient un message pour le serveur de certiticat et un message de réponse pour le relais à un moment donné. Seul les messages concernant le relais sont consommés avec msg.acknowledge() 6.2 Modélisation Nous avons modélisé les classes suivantes pour le relais : RelaisServeur : Classe gérant les fonctionnalités métier du relais. TopicRelaisServeur : Classe gérant la communication avec le topic, donc seulement la réception de messages ServeurPret. QueueRelaisServeur : Classe gérant la communication avec la queue ; Elle permet l'envoi et l'écoute de message sur la queue ; Dès qu'un messsage CerticatReponse arrive dans la queue celle-ci appelle la méthode retournercerticat correspondant au certicat demandé. Les messages de demande situés dans la queue sont ignorés. Lorque le serveur est prêt, un message de demande est envoyé dans la queue. Lorsqu'un client demande un certicat, celui-ci est mis en attente par un système wait notify jusquà reception du certicat. une fois la demande eectuée, l'indication serveur prêt débloque l'envoi d'un message de demande dans la queue. Lorsque le message certicat est capté dans la queue cela déclenche de déblocage du client. Le client suivant peut ainsi être traité à la suite. 6

7 Communication entre relais et serveur : JMS La spécication JMS suppose que les objets de connexion et de communication soient déjà créés avant l'exécution des programmes Donc on créer les objets et on les déclare à Jndi avant d'utiliser le Serveur JMS-Joram avec nos programmes. 8 Serveur Java Le serveur JMS-Joram intègre un service Jndi pour la déclaration des objets qu'il gère. Pour le serveur de message et l'accès aux entités Queue et Topics pour la communication par message, nous avons utilisé l'implantation JORAM de JMS comme en TP La fonction du relais est de communiquer avec le serveur de certicat au moyen d'un topic et d'une queue JMS. La queue et le topic sont crées par le serveur de certicat. Le relais possède deux méthodes pouvant être appelées via un client corba. 8.1 Fonctionnement Au démarrage du relais, crée le topic et le référence dans le JNDI ("fr.sd.topic"). Même chose pour ConnectionFactory du topic. De même, le queue est créée mais n'est pas enregistrée dans le JNDI. Seule son instance est stockée dans un message ServeurPret envoyé dans le topic lorsque celui-ci est prêt à traiter une demande de certicat. Le message serveur prêt est envoyé dans le topic toutes les cinq secondes. Pour la queue, nous avons choisi de récupérer les messages de façon asynchrone avec validation des messages lus par le serveur de certicats. En eet, la queue contient un message pour le serveur de certiticat et un message de réponse pour le relais à un moment donné. Seuls les messages concernant le serveur de certicats sont consommés avec msg.acknowledge() 8.2 Modélisation Nous avons modélisé les classes suivantes pour le relais : CerticatServeur : Classe gérant les fonctionnalités métier du serveur de certicats. TopicCerticatServeur : Classe gérant la communication avec le topic, donc seulement l'envoi de messages ServeurPret. 7

QueueCerticatServeur : Classe gérant la communication avec la queue ; Elle permet l'envoi et l'écoute de message sur la queue ; Dès qu'un messsage DemandeCerticat arrive dans la queue celle-ci appelle la méthode métier generercerticatclient ou generercerticatautorite en fonction du message reçu. Dès que le certicat est ni d'être généré, celui-ci est retourné au relais. 9 Gestion des certicats Comme pour la gestion des clés clients, nous nous sommes appuyés sur le TP OpenSSL pour la gestion des certicats. Dans notre projet, on appel les commandes en exécutant "genkey.sh" avec l'option "-s". 10 Guide d'utilisation 10.1 Arborescence du dossier projet Conguration de départ : Fichiers racine : on retrouve à la racine du dossier de notre projet les chiers lanceurs de celui-ci. Dossier cong : contient les chiers de conguration (omniorb, Joram, Jndi... ). Dossier doc : contient le sujet du projet ainsi que ce rapport. Dossier src : contient les sources Java ou C++ des client, relais, serveur ainsi que l'interface Idl commune au client et au relais pour la communication via Corba. Dossiers créés au l de l'exécution du projet : Dossier bin : va accueillir les chiers exécutables du projet. Dossier run : va accueillir une copie des chiers de conguration. Dossier dirclient1 : va accueillir la clé et la requête du client 1. 8

Dossier dirclient2 : va accueillir la clé et la requête du client 2. Dossier CA : va accueillir le certicat serveur. 10.2 Exécution Après s'être positionné à la racine du dossier de notre projet : 1. Génération du certicat serveur :./genkey.sh -s CA 2. Génération des clés des clients :./genkey.sh -c dirclient1./genkey.sh -c dirclient2 3. Compilation du projet : ant 4. Lancement du serveur CORBA : tnameserv -ORBInitialPort 1664 5. Lancement su serveur JMS :./single_server.sh 6. Lancement du serveur de certicats et du relais : ant run_all 7. Lancement du client 1 :./bin/client/client -s dirclient1/ 8888 8. Lancement du client 2 :./bin/client/client -c dirclient2/ 8888 127.0.0.1 11 Bilan Ce projet nous a d'abord permis de parfaire nos connaissances sur les technologies utilisées, à savoir la manipulation des clés et certicats avec 9

openssl pour la sécurité et l'authentication de la connexion entre les deux clients, ainsi que Corba et Jms pour les communications entre nos entités client, relais et serveur. Ce travail a donc constitué un bon complément aux TPs du module de Systèmes Distribués. De plus, une piqûre de rappel de C++ n'était pas inutile tant on oublie vite lorsqu'on utilise trop rarement un langage de programmation. 10