У меня есть сохраненный мой сертификат в Java KeyStore, который необходим для доступа к Restful API. Чтобы получить доступ к этому API, мне нужно создать JWT (Json Web Token), который я реализую на Java. Для генерации JWT мне нужно подписать полезную нагрузку с помощью данного закрытого ключа. Итак, что я делаю, импортировать закрытый ключ из файла .jks в мой кодjava - нужно импортировать закрытый ключ из jks (java keystore)
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. Или любая другая альтернатива для достижения такой же. Спасибо заранее.
Edit: Тогда я попробовал эту команду,
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.
Как вы импортировали ключ в хранилище ключей? является «ключевым» псевдоним, используемый при импорте вашего ключа? – JEY
У меня есть файл .pfx. Затем, используя команду keytool, я импортировал ее в java keystore. –
И вы уверены, что «ключ» - это псевдоним вашего закрытого ключа? – JEY