我想使用 Java 创建 jwt 令牌。如果我将证书 (JKS) 本地存储在我的机器中,我的代码就可以工作。但我想使用 Azure Key Vault 中的证书而不将其存储在本地。如何修改文件部分?如果是 PFX 而不是 JKS 呢?
KeyStore keystore = KeyStore.getInstance("JKS");
File keystoreFile = ResourceUtils.getFile("classpath:"+Keystore);
keystore.load(new FileInputStream(keystoreFile), KeyPassword.toCharArray());
PrivateKey privateKey = (PrivateKey) keystore.getKey(KeyAlias, KeyPassword.toCharArray());
答案 0 :(得分:0)
根据 KeyStore JavaDoc (https://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html#load(java.io.InputStream,%20char[])),您使用的方法签名是 KeyStore.load(InputStream, char[])
。这意味着 InputStream
不必是 FileInputStream
。从 Azure 下载您的密钥库字节,将它们包装到 ByteArrayInputStream 中并执行您需要执行的任何操作。
至于如何读取 pfx
密钥库,您应该能够通过像 KeyStore.getInstance("pkcs12", "SunJSSE")
一样启动密钥库然后像加载 JKS 密钥库一样加载它。