2016-10-28 5 views
0

これは私のプログラムです。エラー "キーファイルを開くエラー"が表示されます。親切にも、どこに間違っているのか教えてください。java sun securityを使用して.p12ファイルから秘密鍵を抽出する方法

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

を –

+0

だけでなく、ここでスタックトレースをコピー&ペーストしてください私はあなたの.P12ファイルが間違った何かを持っていると思います、有効な証明書を使用している場合は、[here](https://itv.mit-xperts.com/clientssl/issue/dload/index.php?id=1411134668)のコードが有効です。有効な証明書を見つけることができます。 – user6904265

+0

プログラムで.p12ファイルを作成する場合、見て[ここ](http://stackoverflow.com/questions/5312559/how-do-i-programmatically-create-a-new-keystore) – user6904265

答えて

0

私はあなたのスタックトレースがあると仮定します。

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 

ので、このしようとした場合:Java Error opening registry key

+0

FILE java.io .FileInputStream @ java.util.LinkedHashMap $ LinkedHashIterator.nextNode(不明なソース)java.util.LinkedHashMap $ LinkedKeyIterator.next(不明なソース)で \t \tで\t java.util.NoSuchElementException キーファイル を開く エラー659e0bfd at ExtractionCode.ExtractionClass.main(ExtractionClass.java:17)Stack Traceはそうです。私は正しいパスワードを与えています。もしString alias = keystore.aliases()。nextElement();を削除します。 keyStoreException - 初期化されていないキーストア –

+0

私は秘密鍵でnullを取得しています。 –

関連する問題