Formation Formation Sécurité JAVA Sécurité JAVA
- Formation SPRING A propos d’Objis… Centre de formation depuis 2005 Spécialiste technologies Java/J2ee Formations intra/inter entreprises 70% de pratique Paris – Lyon – Dakar Sponsor salon Solutions Linux + de 100 tutoriaux Java/j2ee sur Formation Sécurité JAVA
- Formation SPRING Sommaire Périmètre Sécurité JAVA API Sécurité Java Notions clés Cryptographie Sécurité applications J2EE (JAAS) Outils Formation Sécurité JAVA
- Formation SPRING Objectifs 1) Comprendre périmètre et Architecture Sécurité JAVA 2) Identifier les différentes APIs / outils 3) Mettre en oeuvre stratégie sécurité Applications Formation Sécurité JAVA
- Formation SPRING Introduction 2 aspects sécurité JAVA Sécurité plateforme Sécurité outils & API Architecture Sécurité JAVA Authentification Controle d'accès Sécurité J2EE avec JAAS Déploiement sécurité Formation Sécurité JAVA
- Formation SPRING Introduction Java pensé avec objectif de sécurité 2 aspects sécurité JAVA Sécurité plateforme Sécurité outils & API Dév. Appli sécurisés : APIs Cryptographie + PKI Control accès : API Authentification & Autorisation Services implémentés sous forme de 'provider' java.security.Provider Formation Sécurité JAVA
- Formation SPRING Périmètre sécurité JAVA 7 2: cryptographi e 5: infrastructure à clé publique (PKI) 4: communicati ons réseau 3:authentifica tion & contrôle d'accès 1: plateforme - Formation Sécurité JAVA
- Formation SPRING Périmètre sécurité JAVA (1/5) : La plateforme Java pensé avec objectif de sécurité typage fort gestion mémoire Charger seulement les classes 'légitimes' Vérification bytecode Chargement de classe sécurisé Plateforme sécurisée Contribue à la robustesse du code Specs langage : Specs JVM : Formation Sécurité JAVA
- Formation SPRING Périmètre sécurité JAVA (2/5) la cryptographie API de services Cryptographie : signature numérique message digest chiffrement simétrique / asymétrique généréteurs de clés Support algorithmes standard : Triple DES, RSA, DSA, SHA, PKCS#5 Jeton PKCS#11 Java Cryptography Architecture toSpec.html toSpec.html Formation Sécurité JAVA
- Formation SPRING Périmètre sécurité JAVA (3/5) : authentification & controle d'accès API d'authentification pouvant inclure différents mécanisme de login. API de 'Policy' et de 'Permissions' permettant au développeur de créer et administrer des applications dont certaines ressources necessitent un niveau fin de sécurité Exemple : mise en oeuvre Single Sign On (SSO) Java Security architecture : JAAS Formation Sécurité JAVA
- Formation SPRING Périmètre sécurité JAVA (4/5) : Sécurisation communications Protocoles de communication sécurisées Transport Layer Security (TLS) Secure Socket Layer (SSL) Kerberos Simple Authentication & Security Layer (SASL) HTTPS Java SASL: Java Socket Secure Extensions (JSSE) Formation Sécurité JAVA
- Formation SPRING Périmètre sécurité JAVA (5/5) : Infrastructure à clé publique Faciliter développement d'applications avec sécurité basée sur certificats Gestion clés, certificats, liste révocation Certificats X.509 KeyStores : PKCS#11, PKCS#12 Certificate Store : LDAP, java.util.Collection Certificat et liste de révocation Java PKCS#11 Ref guide : Formation Sécurité JAVA
- Formation SPRING Liens utiles Sécurité JAVA Présentation Sécurité JAVA Bonnes pratiques dév. JAVA pour sécurité Sécurité Java 6 Sécurité Java 5 Sécurité Java Formation Sécurité JAVA
- Formation SPRING Historique approche sécurité JAVA Formation Sécurité JAVA 1 3 2
- Formation SPRING Notion clé cryptographie N°1 : fonction de hachage Formation Sécurité JAVA
- Formation SPRING Notion clé cryptographie N°2 : Crypographie à clé secrète Formation Sécurité JAVA
- Formation SPRING Notion clé cryptographie N°3 : Crypographie à clé publique / privée Formation Sécurité JAVA
- Formation SPRING Notion clé cryptographie N°4 : Serveur de clés Formation Sécurité JAVA
- Formation SPRING Sécurité code et documents Si vous envoyez du code (applet, application) ou document de haute importance, le destinataire a besoin d'un moyen pour vérifier que : Vous êtes l'émetteur Le message n'a pas été modifié en route Les éléments suivants contribuent à la sécurité : Signature numérique Certificat KeyStore Formation Sécurité JAVA
- Formation SPRING Sécurité code et documents Si vous envoyez du code (applet, application) ou document de haute importance, le destinataire a besoin d'un moyen pour vérifier que : Vous êtes l'émetteur Le message n'a pas été modifié en route Les éléments suivants contribuent à la sécurité : Signature numérique Certificat KeyStore Formation Sécurité JAVA
- Formation SPRING Signature numérique Vous 'signez' un document ou un code en utilisant votre clé privée (générée via outil keytool ou API) Vous générez une signature numérique via jarsigner Vous envoyez le document signé au destinataire Vous envoyez votre clé publique au destinataire Le destinataire utilise votre clé publique pour vérifier : le document provient de vous Le document n'a pas été altéré Formation Sécurité JAVA
- Formation SPRING Certificat Le destinataire a besoin de vérifier que la clé publique que vous lui avez envoyée est authentique,provient bien de vous. Vous envoyez en fait un certificat contenant Votre clé publique La signature d'une autorité de certification (Certificate Authority) se portant garant de l'authenticité de votre clé publique. Analogie Certificat / Passeport Exemple : le site de la banque BNP Paribas pour permettre à ses clients de voir compte en ligne. Analyser certificat Formation Sécurité JAVA
- Formation SPRING Exemple certificat Formation Sécurité JAVA
- Formation SPRING Certificat Formation Sécurité JAVA 1
- Formation SPRING Certificat Formation Sécurité JAVA 1
- Formation SPRING keytool L'outil keytool est disponible dan le répertoire bin du JDK et permet : Créer des clés privées et certificats clé publique Créer des demande de certificat (CSR) Importer les certificats obtenus d'une autorité Importer des clés publiques via certificats Vous envoyez en fait un certificat contenant Votre clé publique La signature d'une autorité de certification (Certificate Authority) se portant garant de l'authenticité de votre clé publique. Keytool -list -keystore cacerts -storepass changeit Formation Sécurité JAVA
- Formation SPRING Savoir-faire Créer une paire de clés dans un store keytool -genkey -alias objiscert -keyalg RSA -keysize dname "CN=objis.com,OU=Formation,O=intra,L=Paris,S=Paris,C =FR" -keypass changeit -keystore objisKS.jks - storepass changeit Analyser le contenu cacerts (/lib/security/cacerts) keytool -list -keystore cacerts -storepass changeit Faire une demande de certificat à autorité VeriSign keytool -certreq -v -alias objiscert -file objiscert-csr.pem -keypass changeit -storepass changeit -keystore objisKS.jks Formation Sécurité JAVA
- Formation SPRING
Savoir-faire Analyser le contenu cacerts (/lib/security/cacerts) keytool -list -keystore cacerts -storepass changeit Créer une paire de clés keytool -genkey -alias objiscert -keyalg RSA -keysize dname "CN=objis.com,OU=Formation,O=intra,L=Paris,S=Paris,C =FR" -keypass changeit -keystore objisKS.jks -storepass changeit Créer un certificat 'auto-signé' keytool Faire une demande de certificat à autorité VeriSign Signer une livraison de type 'war' Formation Sécurité JAVA
- Formation SPRING Sécurité JAAS : contexte 30
- Formation SPRING Sécurité conteneur web Sécurité déclarative avec JAAS QUOI ? QUI ? OU ? (stockage login/pwd) (File, DB, Ldap...) COMMENT ? (BASIC, FORM, CLIENT-CERT...) 31 web.xml Coté serveur+ sun-web.xml web.xml
- Formation SPRING Sécurité web : exemple configuration web.xml
- Formation SPRING Sécurité web : exemple configuration sun-web.xml Correspondance entre les roles j2ee définis dans web.xml et la notion de groupe de GlassFish
- Formation SPRING Sécurité : transport (SSL) client-serveur Balise dans web.xml CONFIDENTIAL : communication client / Serveur sous SSL uniquement. Encryption totale INTEGRAL : encryption non totale mais Intégrité données vérifiable NONE : le serveur accepte http et https 34
- Formation SPRING Sécurité programmative conteneur web : méthodes disponibles String getRemoteUser() boolean isUserInRole() Principal getUserPrincipal() String getAuthType() void login(String username, String password) void logout() String getSheme() 35
- Formation SPRING Sécurité programmative conteneur web : annotaions 36 Equivalence
- Formation SPRING Sécurité programmative conteneur web : les alias 37 Ecrit 'en dur' Rôle configuré par admin
- Formation SPRING Sécurité conteneur web : Bonnes pratiques gestion session Utiliser danbs web.xml Utiliser HttpSessionListener Encrypter les informations qui sont en session Invalider toutes les sessions après un temps absolue (Ex : 10 heures) ou après temps relatif d'inactivité (Ex : 30 min). Proposer fonctionalité Logout à l'utilisateur Eviter les informations inutiles en session et supprimer une info dès qu'elle n'est + utile. 38
- Formation SPRING Outils Jar Jarsigner Keytool Policytool Klist Kinit Ktab 39
- Formation SPRING Outil : keytool Jar Jarsigner Keytool Policytool Klist Kinit Ktab Summary.html 40