2016-10-28 2 views
0

Ceci est mon programme. Je reçois l'erreur "erreur d'ouverture du fichier de clé". Veuillez m'aider où je vais mal.comment extraire la clé privée du fichier .p12 en utilisant java sun security

import java.io.FileInputStream; 
import java.security.KeyStore; 
import java.security.KeyStoreException; 
import java.security.PrivateKey; 
import java.util.Base64; 

public class ExtractionClass { 
    public static void main(String args[]) { 
     String p12Password = "PassWord"; 
     try{ 
     FileInputStream file = new FileInputStream("C:/Users/Aarti_Jangid/Desktop/p12/certChain.p12"); 
     System.out.println("FILE "+ file); 
     KeyStore keystore = KeyStore.getInstance("PKCS12", "SunJSSE"); 
     keystore.load(file, p12Password.toCharArray()); 
     String alias = keystore.aliases().nextElement(); 
     PrivateKey key = (PrivateKey)keystore.getKey(alias, p12Password.toCharArray()); 
     System.out.println(Base64.getEncoder().encodeToString(key.getEncoded())); 
     } catch(KeyStoreException kse) { 
      kse.printStackTrace(); 
      System.err.println("Error getting the key"); 
     } catch (Exception e) { 
       System.err.println("Error opening the key file"); 
       e.printStackTrace(); 
    } 
    } 
} 
+0

S'il vous plaît copier coller la trace de la pile ici aussi –

+0

je pense que votre fichier .p12 a quelque chose de mal, Si vous utilisez un certificat valide, votre code fonctionne, [ici] (https://itv.mit-xperts.com/clientssl/issue/dload/index.php?id=1411134668) vous pouvez trouver un certificat valide. – user6904265

+0

Si vous créez le fichier .p12 par programme, jetez un oeil [ici] (http://stackoverflow.com/questions/5312559/how-do-i-programmatically-create-a-new-keystore) – user6904265

Répondre

0

Je suppose que votre trace de la pile est:

Error opening registry key 'C:/Users/Aarti_Jangid/Desktop/p12/certChain.p12' 
Error: could not find Java.dll 
Error: could not find Java 2 Runtime Environment 

Si oui, essayez ceci: Java Error opening registry key

+0

FILE java.io .FileInputStream @ 659e0bfd erreur d'ouverture du fichier de clé java.util.NoSuchElementException \t à java.util.LinkedHashMap $ LinkedHashIterator.nextNode (Source inconnue) \t à java.util.LinkedHashMap $ LinkedKeyIterator.next (Source inconnue) \t à java.util.Collections $ 3.nextElement (source inconnue) \t à ExtractionCode.ExtractionClass.main (ExtractionClass.java:17) Stack Trace est comme ça. Je donne le mot de passe correct et si je supprime String alias = keystore.aliases(). NextElement(); alors il donne keyStoreException - keystore non initialisé –

+0

Je reçois null dans la clé privée. –