Как включить пароль при регистрации 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);