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

Langage Java Discussion :

Configurer et utiliser PKCS12


Sujet :

Langage Java

  1. #1
    Invité
    Invité(e)
    Par défaut Configurer et utiliser PKCS12
    Bonjour,

    Est ce que quelqu'un pourra me montrer comment configurer mon environnement java pour supporter et utiliser PKCS12 ?

    Merci

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Je pense que votre sujet est en lien avec celui-ci :
    http://www.developpez.net/forums/d17...r-mycert-cert/
    Or celui-ci cite le tutoriel suivant sur la cryptographie :
    http://nyal.developpez.com/tutoriel/...cycastle/#L3.1

    Je vous conseil donc de le lire. Si toute fois, vous avez des difficultés, nous somme là pour ça.
    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci je les les tutoriaux et je vous mets au courant.

  4. #4
    Invité
    Invité(e)
    Par défaut
    J'ai testé le bout de code suivant (j'ai pris à partir du tutoriel) pour charger mon keystore :

    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
    // CHARGEMENT DU FICHIER PKCS#12
     
    Keystore ks = null;
    char[] password = null;
     
    Security.addProvider(new BouncyCastleProvider());
    try {
    	ks = KeyStore.getInstance("PKCS12");
    	// Password pour le fichier personnal_nyal.p12
    	password = "2[$0wUOS".toCharArray();
    	ks.load(new FileInputStream("personnal_nyal.p12"), password);
    } catch (Exception e) {
    	System.out.println("Erreur: fichier " +
                           "personnal_nyal.p12" +
                           " n'est pas un fichier pkcs#12 valide ou passphrase incorrect");
    	return ;
    }
    Une exception est levée à la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ks.load(new FileInputStream("personnal_nyal.p12"), password);

    Voilà l'exception que je reçois :
    java.io.IOException: failed to decrypt safe contents entry: java.io.IOException: getSecretKey failed: PBE SecretKeyFactory not available
    at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(Unknown Source)
    at java.security.KeyStore.load(Unknown Source)
    at com.anthil.apns.service.ExtractFile.main(LoadFile.java:21)
    Caused by: java.io.IOException: getSecretKey failed: PBE SecretKeyFactory not available
    at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.getPBEKey(Unknown Source)
    ... 3 more
    Caused by: java.security.NoSuchAlgorithmException: PBE SecretKeyFactory not available
    at javax.crypto.SecretKeyFactory.<init>(DashoA13*..)
    at javax.crypto.SecretKeyFactory.getInstance(DashoA13*..)
    ... 4 more
    Est ce que c'est mon environnement qui n'est pas bien configuré?
    ou est ce que le problème vient de mon certificat.p12 ?

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    Bonjour,

    Essai de commencer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ks = KeyStore.getInstance("PKCS12","BC");

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'ai ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ks = KeyStore.getInstance("PKCS12","BC");
    et l'exception a changé.

    Mais la raison pour laquelle je veux utiliser le PKCS est d'envoyer une push notification à un iphone à partir d'un programme java, voilà le code source de mon programme :
    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
    payLoad.addAlert("My alert message");
    payLoad.addBadge(45);
    payLoad.addSound("default");
     
    PushNotificationManager pushManager = PushNotificationManager.getInstance();
    pushManager.addDevice("iPhone", "f4201f5d8278fe39545349d0868a24a3b60ed732");
    log.warn("Initializing connectiong with APNS...");
     
    // Connect to APNs
    pushManager.initializeConnection(HOST, PORT, 
                                 "c:/myDir/Certificates.p12", "password", 
    SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
     
    Device client = pushManager.getDevice("iPhone");
     
    // Send Push
    log.warn("Sending push notification...");
    PushNotificationManager.getInstance().sendNotification(client, payLoad);
    Une exception est levée un fois l'exécution arrive à la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pushManager.initializeConnection(HOST, PORT, 
                                 "/etc/Certificates.p12", "password", 
    SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
    et l'exception est la suivante :
    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
    Exception in thread "main" com.notnoop.exceptions.InvalidSSLConfig: java.io.IOException: failed to decrypt safe contents entry: java.io.IOException: getSecretKey failed: PBE SecretKeyFactory not available
    	at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:102)
    	at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:139)
    	at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:114)
    	at com.anthil.apns.service.Push.main(Push.java:20)
    Caused by: java.io.IOException: failed to decrypt safe contents entry: java.io.IOException: getSecretKey failed: PBE SecretKeyFactory not available
    	at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(Unknown Source)
    	at java.security.KeyStore.load(Unknown Source)
    	at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:87)
    	... 3 more
    Caused by: java.io.IOException: getSecretKey failed: PBE SecretKeyFactory not available
    	at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.getPBEKey(Unknown Source)
    	... 6 more
    Caused by: java.security.NoSuchAlgorithmException: PBE SecretKeyFactory not available
    	at javax.crypto.SecretKeyFactory.<init>(DashoA13*..)
    	at javax.crypto.SecretKeyFactory.getInstance(DashoA13*..)
    	... 7 more
    Avez vous une idée de comment je peux résoudre ça ?

  7. #7
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    C'est bien ce qui me semblait, tu n'avais pas le bon provider.

    Maintenant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.security.NoSuchAlgorithmException: PBE SecretKeyFactory not available
    Vérifie que tu utilises bien BC comme provider partout.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Comment je peux le vérifier ?

    Et si je trouve que je ne l'utilise pas partout.

    Comment je peux l'utiliser dans ce code source ?

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    Il faut préciser explicitement le provider dans les getInstance.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Je n'ai pas trouver comment le forcer dans ce bout de 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
    payLoad.addAlert("My alert message");
    payLoad.addBadge(45);
    payLoad.addSound("default");
     
    PushNotificationManager pushManager = PushNotificationManager.getInstance();
    pushManager.addDevice("iPhone", "f4201f5d8278fe39545349d0868a24a3b60ed732");
    log.warn("Initializing connectiong with APNS...");
     
    // Connect to APNs
    pushManager.initializeConnection(HOST, PORT, 
                                 "c:/myDir/Certificates.p12", "password", 
    SSLConnectionHelper.KEYSTORE_TYPE_PKCS12);
     
    Device client = pushManager.getDevice("iPhone");
     
    // Send Push
    log.warn("Sending push notification...");
    PushNotificationManager.getInstance().sendNotification(client, payLoad);
    J'ai même ajouté ces 2 ligne au début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider ());
    			KeyStore ks = KeyStore.getInstance("PKCS12","BC");
    , mais j'ai toujours la même exception.

  11. #11
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    L'erreur signifie que la méthode de chiffrement et la signature de la clé n'est pas supporté.

    Comment as-tu fais ton fichier PKCS#12 ?

    Par exemple si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           SecretKey key = SecretKeyFactory.getInstance("PBEWithMD5AndAES").generateSecret( new PBEKeySpec("password".toCharArray()));

    J'ai un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" java.security.NoSuchAlgorithmException: Algorithm PBEWithMD5AndAES not available
    	at javax.crypto.b.a(Unknown Source)
    	at javax.crypto.SecretKeyFactory.getInstance(Unknown Source)
    	at AES.main(AES.java)
    Car mon provider ne connais pas cet algorithme.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Ce n'ai pas moi qui l'ai fait.
    comment je peux faire le mien en y introduisant un certificat.cer ?
    Je dois lui ajouter une clé publique ou une clé privée ? et comment je peux générer les clés ?

    Merci

  13. #13
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    Créé un keystore au format jks avec la commande keytool , une clé privée autosigné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    keytool -genkey -keyalg RSA -alias "selfsigned" -keystore KEYSTORE.jks -storepass "secret" -validity 360
    Converti un jks en jkcs12 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    keytool -importkeystore -srckeystore KEYSTORE.jks -destkeystore KEYSTORE.p12 -srcstoretype JKS -deststoretype PKCS12

  14. #14
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Quand j'exécute la deuxième commande j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    erreur keytool : java.io.IOException: Invalid keystore format

  15. #15
    Invité
    Invité(e)
    Par défaut
    Je viens de tester chez un collègue, ça marche sans problème. Est ce que ça pourrait être due à mon OS ?

    J'ai Windows 7 et mon collègue XP.

  16. #16
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    Bonjour,

    L'OS non , mais la JRE installé très certainement.

  17. #17
    Invité
    Invité(e)
    Par défaut
    Que dois-je vérifier ?

  18. #18
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    Déjà, la version de la JRE et du jar Bouncy Castle.

  19. #19
    Invité
    Invité(e)
    Par défaut
    J'ai jre 7 et bcprov-jdk16-146.jar.

  20. #20
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    767
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 767
    Par défaut
    Et l'autre machine ?

Discussions similaires

  1. [Firebird] Configuration et utilisation
    Par jojo86 dans le forum Bases de données
    Réponses: 5
    Dernier message: 21/04/2016, 00h56
  2. [Commons Configuration] Comment utiliser SubsetConfiguration ?
    Par Pierre8r dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 07/09/2008, 22h27
  3. Upgrader une configuration pour utilisation de jeux récents...
    Par Pierre Fauconnier dans le forum Composants
    Réponses: 15
    Dernier message: 09/11/2007, 17h32
  4. Configuration et utilisation de psotgre
    Par Pe04 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/02/2006, 10h50
  5. Configurer et utiliser les Aliases du projet
    Par EJ dans le forum XMLRAD
    Réponses: 9
    Dernier message: 20/05/2004, 22h51

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