2010-06-30 2 views
3

Я создал сертификат в основном прямо из Keytool пример страницы:не удается войти рыть сиг с использованием Java/Keytool

Keytool -genkey -dNAME «сп = Anything, НУ = что-нибудь, о = Anything , C = US»-alias бизнес -keypass kpi135 -keystore C: \ mykeystore -storepass ab987c -validity 1095

Я пытаюсь открыть сертификат и использовать секретный ключ части для цифровой подписи части текста, аутентифицировать третью сторону. Ниже приведен код, который я пытаюсь:

//Add bouncyCastle as a provider 
    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); 

    KeyStore keystore = KeyStore.getInstance("JKS"); 
    keystore.load(new FileInputStream("C:\\mykeystore"), "ab987c".toCharArray()); 
    Signature sig = Signature.getInstance("MD5withRSA", "BC"); 
    PrivateKey privateKey = (PrivateKey)keystore.getKey("business", "kpi135".toCharArray()); //Exception here 
    sig.initSign(privateKey); 
    sig.update("myUID__myNonce".getBytes()); 
    byte[] digitalSignature = sig.sign(); 

    System.out.println("Signature Formulated: " + digitalSignature); 

я получаю следующее исключение:

java.security.InvalidKeyException: Supplied key (sun.security.provider.DSAPrivat 
eKey) is not a RSAPrivateKey instance 
     at org.bouncycastle.jce.provider.JDKDigestSignature.engineInitSign(Unkno 
wn Source) 
     at java.security.Signature$Delegate.engineInitSign(Signature.java:1095) 
     at java.security.Signature.initSign(Signature.java:480) 
     at MainClass.<init>(MainClass.java:15) 
     at MainClass.main(MainClass.java:28) 

Я предполагаю, что это потому, что я каким-то образом создал сертификат с неправильным типом ключа, но я я не уверен, что я нахожу то, что мне нужно, копаясь через страницу keytool. Это делает Упоминания, что вы можете по-видимому, сгенерировать ключ с помощью -keysig RSA и -sigalg RSA однако при попытке этих флагов при создании сертификата я получаю:

keytool error: java.security.NoSuchAlgorithmException: RSA Signature not availab 
le 

enter code here 

ответ

4

На самом деле, кажется, вы можете добавить «-keyalg RSA "к команде keygen, которая устраняет проблему несоответствия. Я неправильно использовал оба ключа -keyalg и -sigalg в одной команде keygen. Следующий код теперь выполняется без исключений.

Смежные вопросы