Bonjour,
Est ce que quelqu'un pourra me montrer comment configurer mon environnement java pour supporter et utiliser PKCS12 ?
Merci
Bonjour,
Est ce que quelqu'un pourra me montrer comment configurer mon environnement java pour supporter et utiliser PKCS12 ?
Merci
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.
Merci je les les tutoriaux et je vous mets au courant.
J'ai testé le bout de code suivant (j'ai pris à partir du tutoriel) pour charger mon keystore :
Une exception est levée à la ligne 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 // 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 ; }
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 :
Est ce que c'est mon environnement qui n'est pas bien configuré?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
ou est ce que le problème vient de mon certificat.p12 ?
Bonjour,
Essai de commencer par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ks = KeyStore.getInstance("PKCS12","BC");
J'ai ajouteret l'exception a changé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ks = KeyStore.getInstance("PKCS12","BC");
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 :
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
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);
et l'exception est la 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);
Avez vous une idée de comment je peux résoudre ça ?
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
C'est bien ce qui me semblait, tu n'avais pas le bon provider.
Maintenant ceci :
Vérifie que tu utilises bien BC comme provider partout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part java.security.NoSuchAlgorithmException: PBE SecretKeyFactory not available
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 ?
Il faut préciser explicitement le provider dans les getInstance.
Je n'ai pas trouver comment le forcer dans ce bout de code :
J'ai même ajouté ces 2 ligne au début
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);, mais j'ai toujours la même exception.
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");
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 :
Car mon provider ne connais pas cet algorithme.
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)
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
Créé un keystore au format jks avec la commande keytool , une clé privée autosigné :
Converti un jks en jkcs12 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part keytool -genkey -keyalg RSA -alias "selfsigned" -keystore KEYSTORE.jks -storepass "secret" -validity 360
Code : Sélectionner tout - Visualiser dans une fenêtre à part keytool -importkeystore -srckeystore KEYSTORE.jks -destkeystore KEYSTORE.p12 -srcstoretype JKS -deststoretype PKCS12
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
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.
Bonjour,
L'OS non , mais la JRE installé très certainement.
Que dois-je vérifier ?
Déjà, la version de la JRE et du jar Bouncy Castle.
J'ai jre 7 et bcprov-jdk16-146.jar.
Partager