1
我在Java KeyStore中存储了我的证书,这是访问Restful API所必需的。要访问这个API,我需要创建JWT(Json Web Token),我正在用Java实现它。为了生成JWT,我需要用给定的私钥对有效载荷进行签名。 那么,我做的是,从.jks导入私有密钥文件到我的代码现在java - 需要从jks(java密钥库)导入私钥
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。
您是如何将密钥导入密钥库的?是导入密钥时使用的别名的“钥匙”? – JEY
我有一个.pfx文件。然后使用keytool命令,我将它导入到java密钥库中。 –
你确定“key”是你的私钥的别名? – JEY