【发布时间】:2020-04-24 01:25:44
【问题描述】:
我正在尝试使用这里给出的简单示例:
https://github.com/auth0/java-jwt
//HMAC
Algorithm algorithmHS = Algorithm.HMAC256("secret");
//RSA
RSAPublicKey publicKey = //Get the key instance
RSAPrivateKey privateKey = //Get the key instance
Algorithm algorithmRS = Algorithm.RSA256(publicKey, privateKey);
不幸的是,获取公钥和私钥的密钥实例并不是那么简单。
- 我关注How to create public and private key with openssl?生成公钥和私钥。
- 我将私钥转换为 DER 形式
openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem -out pkcs8.der -nocrypt -
现在我可以将私钥加载为:
val privateKey = readKeyAsBytes("pkcs8.der") .run { PKCS8EncodedKeySpec(this) } .run { KeyFactory.getInstance("RSA").generatePrivate(this) } as RSAPrivateKey -
但是这对生成公钥不起作用:
val publicKey = readKeyAsBytes("publickey.crt") .run { X509EncodedKeySpec(this) } .run { KeyFactory.getInstance("RSA").generatePublic(this) } as RSAPublicKey
因为 InvalidKeyException: invalid key format 失败。我不确定.getInstnace(RSA) 在这里是否正确,但我也无法让它与其他任何东西一起使用。我猜公钥不是 X509 格式,但我似乎无法将其转换为它。
【问题讨论】:
标签: openssl jwt rsa x509 jwt-auth