Есть ли способ извлечь сертификат из етокена

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

Если да, можно ли его преобразовать в файл хранилища ключей Java (.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();

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

2 ответа

Решение

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

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

Другие вопросы по тегам