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

avec Java Discussion :

utilisation de keystore - keytool pour certificat auto-signé


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Par défaut utilisation de keystore - keytool pour certificat auto-signé
    bonjour,

    je rencontre une difficulté quant à l'implémentation du keystore pour un certificat autosigné.

    En me basant sur la doc java: http://docs.sun.com/app/docs/doc/819...40fgu0d?a=view

    l'étape 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    keytool -genkey -alias tomcat -keyalg RSA -keystore /keystore-location
    -storepass password
    me génère mon keystore avec ma clé publique (si j'ai bien compris)

    l'étape 2 génère une clé public pour qu'une instance telle verisign me valide et me renvoi mon certificat (ma clé privé si j'ai bien compris):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    keytool -certreq -v -alias tomcat -keyalg RSA -keystore /keystore-location
    j'obtiens la clé public que je mets dans un fichiers crs qui une fois validé par une autorité de confiance me renvoie dans un fichier ".cert" (clé privé) que je peux importer dans mon keystore.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    keytool -v -import -trustcacerts -keystore /keystore-location
    -file certificate-reply-file -alias tomcat
    Mais voilà, j'aimerai auto-signer mon certificat et obtenir directement mon ".cert" sans avoir à payer. IL faut bien que je fasse des tests en local avant.

    Connaitriez vous la solution? (Si je me trompe sur les histoires de clé public, clé privé, j'en suis bien désolé, j'ai lu toutes les sources en anglais et c'est pas toujours évident.

    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut

    Pas besoin de faire une requête de signature si tu ne veux pas faire signer ton certificat par une CA. Essaye ₵a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Export in binary
    keytool -storepass password -alias myalias -export -file outfilename.cer
     
    // Export in text format
    keytool -storepass password -alias myalias -export -rfc -file outfilename.cer
    Sinon un petit point assez important : la CA qui reçoit ta requête n'aura jamais ta clef privée Elle elle reste dans ton keystore et n'est aps dans la requête. Un certificat ne contient que la clef publique, c'est d'ailleurs à ça que ça sert : affirmer que la clef publique contenue dedans est bien à la personne qui prétend la détenir

    A plus

  3. #3
    Membre éclairé Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Par défaut
    d'accord ça m'a aidé a comprendre j'ai donc suivi les indications de sun et les tiennes, via ce code :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
       DefaultHttpClient httpclient = new DefaultHttpClient();
       KeyStore trustStore= null;
     
       trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());
     
     
       FileInputStream instream = new FileInputStream(new File("my.keystore"));
            try {
                trustStore.load(instream, "coucou".toCharArray());
            } finally {
                instream.close();
            }
     
        SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);
        Scheme sch = new Scheme("https", socketFactory, 443);
        httpclient.getConnectionManager().getSchemeRegistry().register(sch);
     
        HttpGet httpget = new HttpGet("https://localhost/md5/hello.php");
     
        System.out.println("executing request" + httpget.getRequestLine());
     
        HttpResponse response = httpclient.execute(httpget);
        HttpEntity entity = response.getEntity();
        System.out.println("----------------------------------------");
        System.out.println(response.getStatusLine());
        if (entity != null) {
                System.out.println("Response content length: " + entity.getContentLength());
        }
        if (entity != null) {
            entity.consumeContent();
        }
     
            // When HttpClient instance is no longer needed,
            // shut down the connection manager to ensure
            // immediate deallocation of all system resources
            httpclient.getConnectionManager().shutdown();
    qui est celui d'apache fondation: http://svn.apache.org/repos/asf/http...CustomSSL.java

    en mode pas à pas quand j'arrive à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpResponse response = httpclient.execute(httpget);
    j'obtiens ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    quelque chose m'échappe sérieusement

    merci de vos aides

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il semble dire ici que le server n'est pas connu et qu'il ne peut pas l'authentifier, comprendre : son certificat n'est pas dans ton truststore, et tu n'as aucune raison de lui faire confiance
    Est-ce que c'est le certificat que tu as généré avant celui du server ? le truststore que tu charges est bien celui contenant ce certificat ?

  5. #5
    Membre éclairé Avatar de turican2
    Profil pro
    Inscrit en
    Août 2006
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2006
    Messages : 257
    Par défaut
    et pourtant:
    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
    20
    21
    22
    23
    24
    25
    26
    27
     
    c:\Program Files\Java\jdk1.6.0_14\bin>keytool -v -list -keystore e:\Java\projet\httprequete\my.keystore
     
    Tapez le mot de passe du Keystore :
     
    Type Keystore : JKS
    Fournisseur Keystore : SUN
     
    Votre Keystore contient 1 entrÚe(s)
     
    Nom d'alias : snettv
    Date de crÚation : 3 juil. 2009
    Type dentrÚeá: {0}
    Longueur de cha¯ne du certificat : 1
    Certificat[1]:
    PropriÚtaireá: CN=localhost, C=FR
    ╔metteurá: CN=localhost, C=FR
    NumÚro de sÚrieá: 4a4dc62a
    Valide duá: Fri Jul 03 10:49:46 CEST 2009 auá: Mon Jul 02 10:49:46 CEST 2012
    Empreintes du certificatá:
             MD5á:  A0:2B:18:B3:8B:3F:FB:2B:B9:84:CB:FA:FA:6D:A4:BC
             SHA1á: 10:3D:45:3D:CE:EE:66:95:E6:B2:E0:3F:9B:79:AA:14:05:16:64:94
             Nom de lalgorithme de signatureá: {7}
             Versioná: {8}
     
    *******************************************
    *******************************************
    mon certificat semble donc etre dans mon keystore.

  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
    Ton certificat il est paramétré sur ton serveur ?

    A priori le peer dont parle le message d'erreur pour moi c'est le serveur pas ton programme.

    EDIT : Pour être plus clair, au début de la connexion SSL, lors du handshake, le serveur commence par envoyer son certificat au client. Je pense que c'est ce certificat là qui n'est pas reconnu.

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

Discussions similaires

  1. Exception sur l'utilisation d'un certificat auto-signé
    Par hapalemur dans le forum Sécurité
    Réponses: 2
    Dernier message: 18/11/2011, 14h21
  2. Connexion SSL avec certificat auto-signé
    Par hornetbzz dans le forum Apache
    Réponses: 5
    Dernier message: 23/06/2010, 00h49
  3. Réponses: 1
    Dernier message: 16/05/2010, 11h12
  4. Récuperer un certificat auto-signé
    Par zaventem dans le forum VBA Word
    Réponses: 1
    Dernier message: 25/09/2009, 13h57
  5. Prism et https avec certificat auto signé
    Par wodel dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 23/03/2008, 10h46

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