IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Java Discussion :

Erreur "the import sun.security.pkcs11 cannot be resolved"


Sujet :

Sécurité Java

  1. #21
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Dans ton exemple de code ton socket je suppose que c'est la référence "conduit" de la classe HTTPConduit (une classe perso visiblement). Ce conduit provient au final d'un proxy. Là on est dans des classes non standard donc j'aurai du mal à t'aider.

    Les conditions permettent de définir à partir de quelle source on va chercher le certificat d'authentification.

    Soit par un magasin PKCS#12, c'est un magasin standard de stockage de certificats et de clefs privées.
    Soit par un magasin PKCS#11, c'est à dire le magasin sur ta CPS.

    Visiblement, l'algorithme est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    SI paramètres SSL = null ALORS
     
    	Récupérer IP et Port du Proxy // définies dans les Properties
     
    	SI PKCS#12 paramétré dans les Properties ALORS
    		Récupérer le magasin
    	SINON
    		Récupérer un magasin PKCS#11
    	FIN SI
     
    	Configuration des paramètres SSL
    	Ouverture du canal HTTP
     
    SINON // les paramètres sont déjà définis
     
    	Ouverture du canal HTTP
     
    FIN SI
    En gros c'est l'idée.

    Ceci dit il y a des utilisations bizarres.

    Cette ligne par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X509Certificate[] certificatesChain = new X509Certificate[1];
    Ton environnement est visiblement pré-configuré via la classe Properties dont les infos peuvent être chargées depuis un fichier texte (genre ini ou XML).

    Sur un plan plus théorique, il te faut maitriser les concepts de PKI, de chaines de certifications, de certificats, etc ... Tout ce qui touche aux fonctions de sécurité. Ce n'est pas spécifique à Java, je parle de connaissances théoriques.

    Sur un plan métier, je sais que la sécu dispose d'une PKI complète, avec un annuaire LDAP où les certificats sont publiés. La chaine de certification jusqu'aux certificats racines (il y a plusieurs branches) est disponible sur cet annuaire.
    Ces certificats racines doivent être importés dans le magasin de la JVM qui s'appelle cacerts. C'est le magasin contenant tous les certificats racines reconnus par Java, exactement comme un navigateur web ou un système d'exploitation contiennent un magasin listant les autorités de confiance.

    Lors qu'une connexion SSL est initiée, lors du handshake, le certificat proposé par le site web est vérifié (cf chaine de certification) par ton programme Java, c'est l'option 1 proposée par ton tutoriel. L'option 2 doit être ignorée, surtout pour dialoguer avec la sécu.
    Ça c'est pour vérifier que le serveur est bien celui qu'il prétend être.

    Ensuite il y a la notion d'authentification. C'est à dire que pour que le serveur t'autorise à te connecter à lui, il faut disposer d'un certificat émis par la PKI du serveur. Ce certificat est visiblement contenu soit sur la carte à puce, soit dans un magasin PKCS#12.
    Tout ce processus est transparent pour le développeur, il faut juste configurer la connexion (ce qui est fait visiblement dans ton exemple de code mais je suis pas certain des détails j'ai pas compris tout le code) et l'API standard de Java fait le reste. Lorsqu'il y a un problème (certificat invalide, non reconnu, etc ...) tu manges une exception, sinon tu obtiens ton socket connecté.

    Voilà, je sais pas trop quoi te dire de plus pour t'aiguiller. Tu as en fait pas mal de recherches à faire ^^

  2. #22
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut kamguir
    j'avais le même problème, j'ai juste modifié la version du jre en jre6 est le problème résolu

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/04/2015, 00h08
  2. Erreur "the import javax.vecmath can not be resolved"
    Par oumay dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 17/03/2015, 17h54
  3. Réponses: 0
    Dernier message: 19/10/2012, 13h10
  4. the import javax.media.jai cannot be resolved
    Par s.amina dans le forum Graphisme
    Réponses: 3
    Dernier message: 22/01/2010, 02h16
  5. the import org.jdom can not be resolved
    Par samia13 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 19/05/2007, 17h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo