私は、安心なAPIにアクセスするために必要なJava KeyStoreに保存された証明書を持っています。このAPIにアクセスするには、Javaで実装しているJWT(Json Web Token)を作成する必要があります。 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