Restful API에 액세스하는 데 필요한 Java KeyStore에 내 인증서가 저장되어 있습니다. 이 API에 액세스하려면 Java에서 구현할 JWT (Json Web Token)를 만들어야합니다. JWT 생성을 위해 주어진 개인 키를 사용하여 페이로드에 서명해야합니다. 그래서, 제가 .jks에서 개인 키를 가져, IS하고있는 중이 야 것은이 코드 조각, 그것은 "NULL"값으로 개인 키를 반환java - 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();
이제 내 코드에 파일. 내 코드가 실패하게됩니다. 그렇다면 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 키 저장소에 가져 왔습니다. –
"키"가 개인 키의 별칭인지 확인하십시오. – JEY