java-需要从jks(java密钥库)导入私钥
我将证书存储在Java密钥库中,这是访问Restful API所必需的。要访问这个API,我需要创建JWT(JSONWeb令牌),我正在用Java实现它。为了生成JWT,我需要使用给定的私钥对有效负载进行签名。 所以,我要做的是,将私钥从.jks文件导入到我的代码中java-需要从jks(java密钥库)导入私钥,java,jwt,private-key,jks,Java,Jwt,Private Key,Jks,我将证书存储在Java密钥库中,这是访问Restful API所必需的。要访问这个API,我需要创建JWT(JSONWeb令牌),我正在用Java实现它。为了生成JWT,我需要使用给定的私钥对有效负载进行签名。 所以,我要做的是,将私钥从.jks文件导入到我的代码中 FileInputStream is = new FileInputStream("src/main/resources/file.jks"); KeyStore keystore = KeyStore.ge
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();
它给我的错误是无效的\u签名。JAVA代码的实现中没有任何错误。这段代码运行良好。作为无效的_签名获取的错误是由JKS引起的。我导入的证书不正确,即没有正确的证书路径。我试着以正确的方式导入,然后就可以了。 因此,请确保在这种情况下,您正在导入具有正确密钥对的证书,以便在JKS中获得正确的指纹。
谢谢大家 JAVA代码的实现没有任何错误。这段代码运行良好。作为无效的_签名获取的错误是由JKS引起的。我导入的证书不正确,即没有正确的证书路径。我试着以正确的方式导入,然后就可以了。 因此,请确保在这种情况下,您正在导入具有正确密钥对的证书,以便在JKS中获得正确的指纹。
谢谢大家 您是如何在密钥库中导入密钥的?“key”是导入密钥时使用的别名吗?我有一个.pfx文件。然后使用keytool命令,我在java密钥库中导入了它。您确定“key”是您的私钥的别名吗?现在看看编辑的代码。其中“sho”是我们给jks的别名。服务器返回的是无效的_签名吗?或者它是由提供的代码引发的?您是如何在密钥库中导入密钥的?“key”是导入密钥时使用的别名吗?我有一个.pfx文件。然后使用keytool命令,我在java密钥库中导入了它。您确定“key”是您的私钥的别名吗?现在看看编辑的代码。其中“sho”是我们给jks的别名。服务器返回的是无效的_签名吗?还是由提供的代码抛出?