gpt4 book ai didi

java - 需要从 jks(java keystore) 导入私钥

转载 作者:行者123 更新时间:2023-11-30 06:52:49 24 4
gpt4 key购买 nike

我在 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();

现在,通过这段代码,它返回私钥作为“null”值。这导致我的代码失败。那么,我的代码是什么,以便我可以读取私钥来签署有效负载以生成 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。

最佳答案

JAVA代码的执行没有任何问题。这段代码工作正常。我收到的 INVALID_SIGNATURE 错误是由于 JKS 造成的。我导入的证书不正确,即它没有正确的证书路径。我尝试以正确的方式导入然后它就可以工作了。因此,请确保在这种情况下您导入具有正确 key 对的证书,以便在 JKS 中获取正确的指纹。谢谢大家。

关于java - 需要从 jks(java keystore) 导入私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42413592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com