我使用的是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)
您已生成密钥对,而不是证书。证书包含公钥,但它不是从公钥派生的,因此无法直接从公钥获取证书。
为了验证JWT,接收者只需要公钥,所以发布x5c
实际上是不必要的
如果您确实想要发布证书,我建议使用OpenSSL生成证书,并在代码中导入公钥以获取JWK参数
openssl req -x509 -newkey rsa:2048 -keyout key.pem -days 365 -out certificate.pem
我正在使用azure sdk从azure密钥库获取密钥。这将返回一个KeyBundle,它的key属性类型为 对于我的代码的不同部分,我需要从jwCrypto JWK制作一个签名令牌。make_signed_token方法使用JsonWebKey。从Azure返回的JsonWebKey(我认为)实际上是同一个类,在不同的包中定义。 有没有办法将Azure JWK变成jwcrypto JWK?我认为
假设我将以下JWK作为一些JWS(RFC7515)的反序列化体,其中出于显示目的,部分省略了模数n JWS头指定签名验证所需的alg和kid字段。 如何从这个构造RSA公钥以便验证签名?在研究了一些相关问题之后,我有以下Java实现,它尝试从中的和字段构建RSA公钥 验证()的结果当前正在返回false。 我尝试过生成RSA密钥对,使用生成密钥进行签名和验证,这很有效。我怀疑我的问题是,上面代码中
感谢你的帮助...
问题是如何在Java中以编程方式生成证书链。换言之,我想用java执行此处详述的操作:http://fusesource.com/docs/broker/5.3/security/i382664.html 当然,我可以为新客户端创建RSA密钥: } 并生成相应的证书: } 然后我生成证书签名请求,并将其保存到csrFile文件: 哪里 现在我应该用CA私钥对CSR进行签名,但我不知道如何在java
我需要生成一个具有以下参数的JWK: > “kty”:键类型 “孩子”:密钥标识 “使用”:“sig”公钥使用 “n”:模数 “e”:“AQAB”公众指数 "x5c": X.509证书链 “x5t”:X.509证书SHA-1指纹 注: > 应包含使用“x5t”(X.509 SHA-1指纹)和“x5c”(X.509证书链)参数的X.509证书 前5个参数(kty,孩子,使用,n,e)相当简单,不是问
本文档提供使用 openssl 生成自签名证书的一个示例,用户也可以根据自己的需求生成符合要求的证书和密钥。 假设实例集群拓扑如下: Name Host IP Services node1 172.16.10.11 DM-master1 node2 172.16.10.12 DM-master2 node3 172.16.10.13 DM-master3 node4 172.16.10.14 DM