java - необходимо импортировать закрытый ключ из jks(хранилище ключей java)

Я храню свой сертификат в Java KeyStore, который необходим для доступа к Restful API. Чтобы получить доступ к этому API, мне нужно создать JWT (Json Web Token), который я реализую на Java. Для генерации JWT мне нужно подписать полезную нагрузку с данным закрытым ключом. Итак, я делаю, импортируя закрытый ключ из файла.jks в мой код

FileInputStream is = new FileInputStream("src/main/resources/file.jks");
            KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
            keystore.load(is, "password".toCharArray());  
PrivateKey privateKey = (PrivateKey) keystore.getKey("key", "".toCharArray());
JWTClaimsSet claimsSetOne = new JWTClaimsSet.Builder()
                .subject("alias")
                .issueTime(new Date(123000L))
                .issuer("https://issuer")
                .audience("https://audience")
                .build();

JWSSigner signer = new RSASSASigner(privateKey);
SignedJWT signedJWT = new SignedJWT (new JWSHeader(JWSAlgorithm.RS256), claimsSetOne);
signedJWT.sign(signer);
String orderOne = signedJWT.serialize();

Теперь, с этим фрагментом кода, он возвращает закрытый ключ как нулевое значение. что приводит к провалу моего кода. Итак, что может быть моим кодом, чтобы я мог прочитать закрытый ключ, чтобы подписать полезную нагрузку для генерации JWT. Или любая другая альтернатива для достижения того же. Заранее спасибо.
Изменить: Затем я попробовал эту команду,

File file = new File("src/main/resources/sho1.jks");
InputStream   is = new FileInputStream(file);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
String password = "sho123";
keystore.load(is, password.toCharArray());

KeyStore.PrivateKeyEntry keyEnt = 
   (KeyStore.PrivateKeyEntry) keystore.getEntry("sho",new KeyStore.PasswordProtection(password.toCharArray()));
PrivateKey privateKey = keyEnt.getPrivateKey();

Это дает мне ошибку как Invalid_Signature.

1 ответ

Решение

Нет ничего плохого в реализации кода JAVA. Этот код работает нормально. Ошибка, которую я получаю как INVALID_SIGNATURE, связана с JKS. Сертификат, который я импортировал, неверный, т.е. не имеет правильного пути сертификата. Я попытался импортировать правильный путь, тогда он работает. Поэтому убедитесь, что в этом типе сценария вы импортируете сертификат с правильной парой ключей, чтобы получить правильный отпечаток в JKS. Спасибо всем.

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