Transports sécurisés avec les interfaces de programmation JSSE et JCE

Cette rubrique fournit des informations détaillées sur la sécurité du transport à l'aide des interfaces de programmation JSSE (Java™ Secure Socket Extension) et JCE (Java Cryptography Extension). Elle décrit la version IBM®de Java Cryptography Extension Federal Information Processing Standard (IBMJCEFIPS).

Java Secure Socket Extension

JSSE fournit les fonctions de sécurité de transport pour WebSphere Application Server. JSSE fournit la structure d'API et l'implémentation des interfaces API pour les protocoles SSL (Secure Sockets Layer) et TLS (Transport Layer Security), y compris la fonctionnalité nécessaire au chiffrement des données, à l'intégrité des messages et à l'authentification.

Les interfaces API JSSE sont intégrées à Java 2 SDK, Standard Edition (J2SDK) version 5. Le package correspondant aux interfaces API JSSE est javax.net.ssl.*. La documentation relative à l'utilisation de ces API est disponible dans la documentation portant sur l'API J2SE 6, accessible à l'adresse http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html.

Plusieurs fournisseurs JSSE sont inclus dans le SDK Java 2 version 5 fourni avec WebSphere Application Server. Le fournisseur IBMJSSE est utilisé dans les éditions précédentes de WebSphere Application Server.

Pour plus d'informations sur le nouveau fournisseur IBMJSSE2, consultez la documentation se trouvant à l'adresse http://www.ibm.com/developerworks/java/jdk/security/60/.

Personnalisation de Java Secure Socket Extension

Vous pouvez personnaliser un certain nombre d'aspects de JSSE en lui ajoutant différentes implémentations du fournisseur de packages de chiffrement, de certificat X509 et de protocoles HTTPS ou en spécifiant différents fichiers de clés par défaut et différentes fabriques de gestionnaire de clés et de gestionnaire de relations de confiance. Le tableau suivant récapitule les aspects pouvant être personnalisés, les valeurs par défaut et les mécanismes utilisés pour la personnalisation.
Tableau 1. Eléments personnalisables. Vous pouvez personnaliser les aspects clés suivants :
Elément personnalisable Valeut par défaut Méthode de personnalisation
X509Certificate Implémentation de X509Certificate d'IBM Propriété de sécurité cert.provider.x509v1
Protocole HTTPS Implémentation d'IBM Propriété système java.protocol.handler.pkgs
Fournisseur de packages de chiffrement IBMJSSE2 Ligne security.provider.n= dans le fichier des propriétés de sécurité. Voir la description.
Fichier de clés par défaut Aucun Propriété système * javax.net.ssl.keyStore
Fichier de clés certifiées par défaut jssecacerts, s'il existe. Sinon, cacerts Propriété système * javax.net.ssl.trustStore
Fabrique des gestionnaires de clés par défaut IbmX509 Propriété de sécurité ssl.KeyManagerFactory.algorithm
Fabrique des gestionnaires d'accréditation IbmX509 Propriété de sécurité ssl.TrustManagerFactory.algorithm

Pour les aspects pouvant être personnalisés en définissant une propriété système, définissez la propriété système de manière statique à l'aide de l'option -D de la commande Java. Vous pouvez définir la propriété système à l'aide de la console d'administration ou de manière dynamique en appelant la méthode java.lang.System.setProperty dans le code : System.setProperty(nomPropriété,"valeurPropriété").

Pour les aspects pouvant être personnalisés en définissant une propriété de sécurité Java, spécifiez une valeur de propriété de sécurité de manière statique dans le fichier de propriétés java.security. La propriété de sécurité est nomPropriété=valeurPropriété. Définissez de manière dynamique la propriété de sécurité Java en appelant la méthode java.security.Security.setProperty dans le code.

Le fichier de propriétés java.security se trouve dans le répertoire suivant :

[AIX Solaris HP-UX Linux Windows]répertoire racine_serveur_app/java/jre/lib/security.

[z/OS]répertoire racine_serveur_app/properties.

[IBM i]racine_profil/properties.

Interface de programmation d'application

JSSE offre une interface de programmation d'application standard (API) disponible dans les packages des fichiers javax.net, javax.net.ssl etjavax.security.cert. Les API couvrent :
  • les sockets et les sockets SSL
  • Les fabriques permettant de créer les sockets et les sockets SSL
  • Le contexte de socket sécurisée qui agit en tant que fabrique pour les fabriques de sockets sécurisée.
  • Interfaces des gestionnaires de clés et des relations de confiance
  • Classes de connexion URL HTTP sécurisées
  • API du certificat de clé publique
[AIX Solaris HP-UX Linux Windows][IBM i]Pour obtenir plus d'informations documentées sur les interfaces API JSSE, accédez au site suivant :
Version 1.6
  1. Accédez au site Web http://www.ibm.com/developerworks/java/jdk/security/.
  2. Cliquez sur Java 1.6.
  3. Cliquez sur Javadoc HTML documentation dans la section Java Secure Socket Extension (JSSE) Guide.

Exemples utilisant JavaSecure Socket Extension

JSSE (JavaSecure Socket Extension) fournit également des exemples illustrant ses fonctionnalités. JSSE (JavaSecure Socket Extension) fournit également des exemples illustrant ses fonctionnalités. Vous pouvez accéder aux exemples à l'emplacement suivant :
Version 1.6
  1. Accédez au site Web http://www.ibm.com/developerworks/java/jdk/security/.
  2. Cliquez sur Java 1.6.
  3. Cliquez sur jssedocs_samples.zip dans la section Java Secure Socket Extension (JSSE) Guide.
Tableau 2. Fichiers extraits. Ce tableau répertorie les fichiers extraits suivants :
Fichiers Description
ClientJsse.java Illustre une simple interaction Client/Serveur à l'aide de JSSE. Tous les codes de chiffrement activés sont utilisés.
OldServerJsse.java Exemples de versions antérieures
ServerPKCS12Jsse.java Illustre une simple interaction Client/Serveur à l'aide de JSSE et du fichier de clés PKCS12. Tous les codes de chiffrement activés sont utilisés.
ClientPKCS12Jsse.java Illustre une simple interaction Client/Serveur à l'aide de JSSE et du fichier de clés PKCS12. Tous les codes de chiffrement activés sont utilisés.
UseHttps.java Illustre l'accès à un serveur web SSL ou non à l'aide du gestionnaire de protocole Java de la classe com.ibm.net.ssl.www.protocol. L'URL est spécifiée à l'aide du préfixe http ou https. Le fichier HTML renvoyé à partir de ce site s'affiche.
Pour plus d'instructions, reportez-vous au code source. Suivez ces instructions avant d'exécuter les exemples.

Autorisations pour la sécurité Java 2

Vous devez peut-être disposer des droits d'accès suivants pour exécuter une application avec JSSE (cette liste n'est fournie qu'à titre de référence).
  • java.util.PropertyPermission "java.protocol.handler.pkgs", "write"
  • java.lang.RuntimePermission "writeFileDescriptor"
  • java.lang.RuntimePermission "readFileDescriptor"
  • java.lang.RuntimePermission "accessClassInPackage.sun.security.x509"
  • java.io.FilePermission "${racine.installation.utilisateur}${/}etc${/}.keystore", "read"
  • java.io.FilePermission "${racine.installation.utilisateur}${/}etc${/}.truststore", "read"
Pour le fournisseur IBMJSSE :
  • java.security.SecurityPermission "putProviderProperty.IBMJSSE"
  • java.security.SecurityPermission "insertProvider.IBMJSSE"
Pour le fournisseur SUNJSSE :
  • java.security.SecurityPermission "putProviderProperty.SunJSSE"
  • java.security.SecurityPermission "insertProvider.SunJSSE"

Débogage

En effectuant la configuration via la propriété système javax.net.debug, JSSE fournit la trace de débogage dynamique suivante : -Djavax.net.debug=true.

[AIX Solaris HP-UX Linux Windows][IBM i]La valeur true active la fonction de trace, à condition que la version de débogage de JSSE soit installée.

[z/OS]La valeur true active la fonction de trace. Utilisez la console d'administration pour définir la propriété système permettant de déboguer le serveur d'applications.

Documentation

Pour connaître les références des documentations sur JSSE, voir la rubrique Sécurité : Ressources pour l'apprentissage.

JCE

JCE (Java Cryptography Extension) offre des algorithmes cryptographiques, de clé et de hachage à WebSphere Application Server. Il offre une structure et des implémentations pour les algorithmes de chiffrement, de génération de clés, de concordance de clés et de codes MAC (Message Authentication Code). La prise en charge du chiffrement inclut des codes symétriques, asymétriques, de bloc et de flux.

IBMJCE

La version IBM de JCE (Java Cryptography Extension) est une implémentation du fournisseur de services cryptographiques JCE utilisé dans WebSphere Application Server. IBMJCE est comparable à SunJCE, mais il offre un plus grand nombre d'algorithmes.
  • Algorithme de chiffrement (AES, DES, TripleDES, PBEs, Blowfish, etc.)
  • Algorithme de signature (SHA1withRSA, MD5withRSA, SHA1withDSA)
  • Algorithme de synthèse de message (MD5, MD2, SHA1, SHA-256, SHA-384, SHA-512)
  • Code d'authentification de message (HmacSHA1, HmacMD5)
  • Algorithme de concordance de clés (DiffieHellman)
  • Algorithme de génération par nombre aléatoire (IBMSecureRandom, SHA1PRNG)
  • Fichier de clés (JKS, JCEKS, PKCS12, JCERACFKS [z/OS uniquement])
IBMJCE fait partie du package com.ibm.crypto.provider.*.

Pour plus d'informations, voir les informations à propos de JCE sur le site Web suivant : http://www.ibm.com/developerworks/java/jdk/security/60/.

IBMJCEFIPS

La version IBM de Java Cryptography Extension Federal Information Processing Standard (IBMJCEFIPS)) est une implémentation du fournisseur de services cryptographiques JCE utilisé dans WebSphere Application Server. Le fournisseur de services IBMJCEFIPS implémente les éléments suivants :
  • Algorithmes de signature (SHA1withDSA, SHA1withRSA)
  • Algorithmes de chiffrement (AES, TripleDES, RSA)
  • Algorithme de concordance de clés (DiffieHellman)
  • Générateur de paires de clés (DSA, AES, TripleDES, HmacSHA1, RSA, DiffieHellman)
  • Code d'authentification de message (MAC) (HmacSHA1)
  • Algorithme de synthèse de message (MD5, SHA-1, SHA-256, SHA-384, SHA-512)
  • Générateur de paramètre d'algorithme (DiffieHellman, DSA)
  • Paramètre d'algorithme (AES, DiffieHellman, DES, TripleDES, DSA)
  • Fabrique de clés (DiffieHellman, DSA, RSA)
  • Fabrique de clés secrètes (AES, TripleDES)
  • Certificat (X.509)
  • Mécanisme aléatoire sécurisé (IBMSecureRandom)

Interface de programmation d'application

JCE (Java Cryptography Extension) possède une architecture basée sur les fournisseurs. Les fournisseurs peuvent être intégrés à la structure JCE en implémentant les API définies par JCE. Les interfaces API JCE sont les suivantes :
  • Le chiffrement de masse par clé symétrique, tel que DES, RC2 et IDEA
  • Le chiffrement de flux par clé symétrique, tel que RC4
  • Le chiffrement par clé asymétrique, tel que RSA
  • Le chiffrement par mot de passe (PBE)
  • La concordance de clés
  • Les codes d'authentification de message (MAC)

[AIX Solaris HP-UX Linux Windows][IBM i]Pour obtenir plus d'informations documentées sur les interfaces API JCE, connectez-vous au site Web http://www.ibm.com/developerworks/java/jdk/security/.

Exemples utilisant JavaCryptography Extension

Des exemples sont disponibles sur le site Web http://www.ibm.com/developerworks/java/jdk/security/, dans le fichier jceDocs_samples.zip. Décompressez le fichier et recherchez les exemples dans le répertoire jceDocs/samples :
Tableau 3. Exemples utilisant JavaCryptography Extension. Le tableau suivant décrit des exemples utilisant Java Cryptography Extension.
Fichier Description
SampleDSASignature.java Illustre comment générer une paire de clés DSA (une clé publique et une clé privée) et utiliser ces clés pour signer numériquement un message à l'aide de l'algorithme SHA1withDSA
SampleMarsCrypto.java Illustre comment générer une clé secrète Mars et comment la chiffrer et la déchiffrer
SampleMessageDigests.java Illustre comment utiliser le prétraitement des messages pour les algorithmes MD2 et MD5
SampleRSACrypto.java Illustre comment générer une paire de clés RSA et comment la chiffrer et la déchiffrer
SampleRSASignatures.java Illustre comment générer une paire de clés RSA (une clé publique et une clé privée) et utiliser ces clés pour signer numériquement un message à l'aide de l'algorithme SHA1withRSA
SampleX509Verification.java Explique comment vérifier les certificats X509.

Documentation

Pour connaître les références des documentations sur JCE, voir la rubrique Sécurité : Ressources pour l'apprentissage.


Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csec_jsse
Nom du fichier : csec_jsse.html