2015-02-12 8 views
0

Есть ли способ извлечь сертификат из etoken программно с помощью java?Есть ли способ извлечь сертификат из etoken

Если да, то может ли он быть преобразован в файл Java KeyStore (.jks)?

Это мой код

String alias; 
    SunPKCS11 sunpkcs11; 
    Key privateKey; 


    String cfgFile = "D:\\cfgFile.cfg"; 

    sunpkcs11 = new SunPKCS11(cfgFile); 

    Security.addProvider(sunpkcs11); 
    alias = "myAlias"; 
KeyStore.Builder builderRunning = KeyStore.Builder.newInstance("PKCS11", sunpkcs11,new KeyStore.CallbackHandlerProtection(new CallbackHandler() { 
     public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { 

      }})); 

KeyStore KeyStore = builder.getKeyStore();

 // get my private key 

      KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias, 
        new KeyStore.PasswordProtection("password".toCharArray())); 
      privateKey = pkEntry.getPrivateKey(); 

Он возвращает нулевой указатель Исключение. Я новичок в этом и не знаю, как двигаться дальше.

ответ

0

Вам нужен сертификат или закрытый ключ? Сертификаты вынимаются, закрытых ключей в большинстве случаев нет. Вот почему вы получаете исключение.

+0

Хорошо. Мне нужен как сертификат, так и закрытый ключ .. и преобразовать их в файл jks. Есть ли способ как-то прочитать секретный ключ? – Vin

+0

@Vin no, это цель устройства предотвратить извлечение секретного ключа. –

+0

Ох .. хорошо .. спасибо за ответ. Просто последнее. Это идиотский вопрос, но все же ... парень, который сгенерировал ключ, знает это, может быть? – Vin

0

Вы не можете извлечь секретный ключ с устройства, но вы можете воспользоваться ссылкой частного ключа и с помощью которого вы можете использовать подпись с помощью токена.