Как включить пароль при регистрации CSR в EJBCA с помощью JSCEP

Я пытаюсь зарегистрировать запрос на подпись сертификата в EJBCA, используя JSCEP, как описано здесь: https://github.com/jscep/jscep

Я могу отправить csr из веб-консоли, используя тот же формат csr и секретный ключ (для ssl-авторизации на порту 8443), но когда я пробую его через JSCEP, я получаю следующую ошибку в журналах EJBCA:

Ошибка обработки запроса SCEP.: org.cesecore.certificates.ca.SignRequestExcept ion: Нет пароля в запросе.

Я предполагаю, что ему нужны имя пользователя и код регистрации конечного объекта, подобного тому, который мне требуется вводить через веб-интерфейс, но я не вижу абсолютно никакой возможности в API JSCEP для ввода этой информации. Возможно, секретного ключа достаточно, но это кажется немного странным, поскольку пользовательский интерфейс хотел и того, и другого.

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

Хранилище ключей (анализируется из файла p12, включая пароль) и csr анализируются из файлов, а не генерируются программно. CSR от третьего лица, чьи ключи у меня нет.

Мой запрос на регистрацию через клиент jscep выглядит следующим образом:

client.enrol (сертификат, privateKey, запрос, config.getCaProfile());

Сертификат и закрытый ключ взяты из файла p12, и запрос анализируется из csr (pkcs12), переданного мне. CaProfile - это имя CA, указанное в таблице на домашней странице https::8443/ejbca/adminweb/

Пожалуйста, дайте мне знать, если мои параметры неверны или мне нужно где-то указать пароль, как я могу это сделать в API.

1 ответ

Решение

Теперь я могу сделать это для программно построенного CSR, и он работает от начала до конца, поэтому я считаю, что проблема закрыта. У меня все еще есть работа по использованию стороннего csr, но это не должно иметь большого значения.

Код ниже.

    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
    keyPairGenerator.initialize(1024);
    KeyPair entityKeyPair = keyPairGenerator.genKeyPair();

    PublicKey entityPubKey = entityKeyPair.getPublic();
    X500Principal requesterSubject = new X500Principal("CN=endEntityName");
    PKCS10CertificationRequestBuilder csrBuilder = new JcaPKCS10CertificationRequestBuilder(requesterSubject, entityPubKey); 

    DERPrintableString password = new DERPrintableString("endEntityPassword");
    csrBuilder.addAttribute(PKCSObjectIdentifiers.pkcs_9_at_challengePassword, password);

    PrivateKey entityPrivKey = entityKeyPair.getPrivate();
    JcaContentSignerBuilder csrSignerBuilder = new JcaContentSignerBuilder("SHA1withRSA");
    ContentSigner csrSigner = csrSignerBuilder.build(entityPrivKey);
    PKCS10CertificationRequest csr = csrBuilder.build(csrSigner);
Другие вопросы по тегам