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. Спасибо всем.