Создать цепочку сертификатов x5c из JWK - PullRequest
0 голосов
/ 06 июня 2019

Я использую 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();

Теперь мне нужно раскрыть некоторые «метаданные» об открытом ключе:

  • е
  • ребенок
  • KTY
  • п
  • использование
  • x5c

Как я могу получить x5c? Можно ли создать сертификат X509 с этой библиотекой? Это поле пустое:

if (jwk.getX509CertChain() == null)

1 Ответ

1 голос
/ 06 июня 2019

Вы сгенерировали пару ключей, а не сертификат. Сертификат содержит открытый ключ, но он не является производным от него, поэтому вы не можете получить сертификат непосредственно из открытого ключа.

Для проверки JWT получателю нужен только открытый ключ, поэтому публикация x5c фактически не нужна для этой цели


Если вы действительно хотите опубликовать сертификат, я предлагаю сгенерировать его с помощью OpenSSL и импортировать открытый ключ в ваш код, чтобы получить параметры JWK

openssl req -x509 -newkey rsa:2048 -keyout key.pem  -days 365 -out certificate.pem
...