【发布时间】:2021-07-01 15:40:26
【问题描述】:
想知道 Java 中的 JWT 实现(生成令牌)是否只能通过密钥库中的 .jks 文件才能实现,我们是否也可以使用 .pem(证书和密钥)文件来实现?
我想将 .jks 文件存储在运行我的应用程序的 PaaS 提供商提供的安全位置,并且此服务不允许存储物理文件,而是二进制内容的编码格式可以是存储在我们必须通过解码引用的键值对中。但是,当我这样做时,我得到一个 Invalid keystore 错误。因此我想知道 .jks 是否是 JWT 令牌生成的命令?
【问题讨论】:
-
不,.jks 对于 JWT 令牌生成不是强制性的。请在您使用密钥库文件的地方添加代码 sn-p
-
KeyStore keystore = KeyStore.getInstance("jks");
-
//从Keystore证书形成私钥的步骤 KeyStore keystore = KeyStore.getInstance("jks"); keystore.load(new FileInputStream(file), jwtstorePassword.toCharArray()); PrivateKey privateKey = (PrivateKey) keystore.getKey(jwtstoreAlias, jwtstorePassword.toCharArray()); // 将上述步骤中使用的证书形成为“file”的步骤 tmpFileCert = File.createTempFile("certfilejwt", ".jks"); fileWriter = new FileWriter(tmpFileCert);字符串 base64String = jwtValue; byte[] bytedecryptMessage = java.util.Base64.getDecoder().decode(base64String);
-
String decodedString = new String(bytedecryptMessage); fileWriter.write(decodedString);这里的 jwtValue 是存储在 PaaS 提供程序的安全仓库中的 .jks 文件 [base64 -w 0 certfile.jks] 的编码版本。