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

java - need to import private key from jks(java keystore)

我将我的证书存储在 Java KeyStore 中,这是访问 Restful API 所必需的。要访问此 API,我需要创建我在 Java 中实现的 JWT(Json Web 令牌)。为了生成 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();

现在,有了这段代码,它 returns 私钥作为 "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。我导入的证书不正确,即它没有正确的证书路径。我尝试导入正确的方法然后它起作用了。 因此,请确保在这种情况下,您正在导入具有正确密钥对的证书,以便在 JKS 中获得正确的指纹。 谢谢大家。