我正在使用nimbus-jose-jwt 5.14,并使用以下代码生成了RSA密钥对
KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
gen.initialize(2048);
KeyPair keyPair = gen.generateKeyPair();
JWK jwk = new RSAKey.Builder((RSAPublicKey)keyPair.getPublic())
.privateKey((RSAPrivateKey)keyPair.getPrivate())
.keyUse(KeyUse.SIGNATURE)
.keyID(UUID.randomUUID().toString())
.build();
现在,我需要讨论一些有关公钥的“元数据”:
如何获得x5c?是否可以使用此库生成X509证书?此字段为空:
if (jwk.getX509CertChain() == null)
答案 0 :(得分:1)
您已生成密钥对,而不是证书。证书包含公钥,但它不是从公钥派生的,因此您不能直接从公钥获取证书。
要验证JWT,接收者仅需要公共密钥,因此实际上不需要为此发布x5c
如果您真的要发布证书,建议您使用OpenSSL生成该证书,然后将公钥导入代码中以获取JWK参数
openssl req -x509 -newkey rsa:2048 -keyout key.pem -days 365 -out certificate.pem