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 :

[SSL]X509Certificate à la place d'un Keystore


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Par défaut [SSL]utilisation d'un certificat sur carte a puce
    Bonjour,

    Je mets en place SSL avec authentification mutuelle sur des web services jax-ws sous Tomcat 5.5, en local sur ma machine Windows.
    Grace à des tutos trouvés sur le net, j'ai pu suivre les étapes suivantes :
    1) J'ai créé avec keytool un keystore pour le serveur
    2) J'ai exporté de ce keystore la clé publique et je l'ai ajouté au truststore java (dans jre\lib\security\cacerts)
    3) J'ai créé avec keytool un certificat pour le client
    4) J'ai exporté la clé publique de ce certificat et je l'ai ajouté au truststore java (dans jre\lib\security\cacerts)
    5) J'ai configuré mon web service en CLIENT-CERT ds le web.xml

    Puis dans mon client Java, j'appelle le web service comme ceci
    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
     
    // avoir les logs SSL
    System.setProperty("javax.net.debug", "SSL,handshake");
    // init du trustore de la JVM
    System.setProperty("javax.net.ssl.trustStore", "C:\\Program Files\\Java\\jdk\\jre\\lib\\security\\cacerts");
    // init du password du trustore de la JVM
    System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
    // init du certificat client
    System.setProperty("javax.net.ssl.keyStore", "D:\\certs\\mycert.jks");
    // init du password du certificat client
    System.setProperty("javax.net.ssl.keyStorePassword", "mypass");
    ...
    final WSTestImpl proxy = service.getWSTestImplPort();
    ((BindingProvider) proxy).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://localhost:8443/test-service/WSTest?wsdl");
    final String result = proxy.getMessage("toto");
    System.out.println("Response : " + result);
    Jusque la tout marche bien, j'obtiens bien la réponse de mon web service.
    Cependant, dans l'exemple ci-dessus pour mes développements, je récupère le certificat sur mon disque local et je dois fournir le password.
    Mais, en réalité, en production, le certificat sera issu d'une carte introduite dans un lecteur de carte et pour laquelle l'utilisateur tape son mot de passe.
    C'est-à-dire :
    1) l'utilisateur met sa carte dans le lecteur de carte
    2) une application installée sur la machine détecte qu'une carte a été introduite ds le lecteur et demande le code PIN (password du certificat).
    3) l'application se charge d'installer le certificat dans le magasin Windows.

    Donc, dans mon client Java, je dois récupérer le certificat non pas sur le disque mais dans le magasin Windows, ça je sais faire (je récupère un objet X509Certificate).
    Mais comment je fais pour les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.setProperty("javax.net.ssl.keyStore", "D:\\certs\\mycert.jks");
    System.setProperty("javax.net.ssl.keyStorePassword", "mypass");
    Comment passer mon objet X509Certificate, de plus je ne connais pas le mot de passe du certificat !

    Qq'un peut-il me dire si c'est possible et comment utiliser un certificat récupéré du magasin et sans connaitre le mot de passe ?
    Merci d'avance
    Le marlou

  2. #2
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Les certificats n'ont pas de notion de mots de passes. Seuls les magasins (pkcs12, jks, etc ...) en ont d'où l'intérêt d'avoir des magasins.

    En clair, le password que tu donnes pour ta carte n'est pas celui du certificat mais celui du magasin sur la carte contenant le certificat.

    Donc pour ton histoire de properties ssl je te suggère de créer un magasin de type JKS et d'y importer le certificat récupéré sur ta carte. En le créant tu auras la possibilité de définir un mot de passe que tu n'auras plus qu'à le passer à tes properties.

  3. #3
    Membre confirmé
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Par défaut
    oui mais pour importer le certificat de la carte dans un magasin JKS, il faut que je récupére le certificat ds la magasin windows et que je fournisse le mot de passe, que je n'ai pas...

  4. #4
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Tu n'as pas besoin d'un mot de passe pour récupérer un certificat à partir du magasin. Pour une clef privée oui, pour un certificat non. Un certificat ne contient que des données publiques (identité des AC Racines et intermédiaires, adresse des CRLs, clef publique, etc ...).

    En plus tu as dit toi-même que tu savais taper dans le magasin de Windows. Donc tu tapes dedans, tu récupères ton X.509, tu crées un magasin de type JKS en y attribuant le mot de passe de ton choix et ensuite tu passes à tes properties le magasin et le mot de passe choisi.

  5. #5
    Membre confirmé
    Homme Profil pro
    responsable technique
    Inscrit en
    Novembre 2002
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : responsable technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 100
    Par défaut
    Je comprends ce que tu dis, mais dans ce cas, dans mon premier exemple qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // init du certificat client
    System.setProperty("javax.net.ssl.keyStore", "D:\\certs\\mycert.jks");
    // init du password du certificat client
    System.setProperty("javax.net.ssl.keyStorePassword", "mypass");
    pourquoi y aurait-il besoin du mot de passe si il n'y avait que la clé publique ? cela voudrait dire que dans le cas réel je dois récupérer la clé privée sur la carte a puce et pas ds le magasin windows ?

  6. #6
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Parce que quand tu crées un magasin, tu dois lui donner un mot de passe. Même si c'est espace il faut bien que le système voulant utiliser un magasin puisse ouvrir le magasin.

    EDIT : Note qu'il y a peut être besoin de la clef privée, j'en sais rien je connais pas le système que tu utilises.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/10/2009, 09h35
  2. Mettre en place SSL sur IIS
    Par KenPark dans le forum Sécurité
    Réponses: 3
    Dernier message: 04/07/2007, 11h30
  3. mise en place SSL apache
    Par Le fut dans le forum Apache
    Réponses: 4
    Dernier message: 30/03/2007, 10h03
  4. Probleme de mise en place SSL sur iis 6
    Par yzf600r6 dans le forum IIS
    Réponses: 1
    Dernier message: 13/02/2007, 09h07
  5. Apache, ISA et mise en place de certificats SSL
    Par valou7518 dans le forum Apache
    Réponses: 4
    Dernier message: 14/12/2006, 11h42

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