Есть ли способ извлечь сертификат из етокена
Есть ли способ извлечь сертификат из 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 ответа
Решение
Вам нужен сертификат или закрытый ключ? Сертификаты являются извлекаемыми, закрытые ключи в большинстве случаев - нет. Вот почему вы получаете исключение.
Вы не можете извлечь секретный ключ с устройства, но вы можете взять ссылку на секретный ключ, и с помощью этого вы можете создать Подпись с помощью токена.