Статус: Участник
Группы: Участники
Зарегистрирован: 03.08.2021(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 3 раз
|
Добрый день! Есть задача выпустить сертификат на пользователя, из приложения, написанного на Java. Основная загвоздка в том, что это нужно сделать с админскими правами. Т.е. в ЦР добавить себя, как пользователя (если до этого не было) и СРАЗУ ЖЕ ПОДТВЕРДИТЬ + в ЦС выпустить сертификат и его тоже СРАЗУ ЖЕ ПОДТВЕРДИТЬ. Ключи и запросы на выпуск сертификата производится на стороне JAVA. Есть ли понятные шаги, как это сделать? Интересует именно взаимодействие между программами.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.08.2021(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 3 раз
|
Добрый вечер! С предыдущей проблемой +- разобрался. Сейчас ребром стал вопрос формирования правильного запроса на выпуск сертификата. В запросе должен присутствовать шаблон (oid = 1.2.643.2.2.46.0.8) Как его правильно добавить в java? на данный момент я пробую передать просто строку с oid через PKCS10CertificationRequestBuilder.addExtension(new ASN1ObjectIdentifier("1.3.6.1.4.1.311.21.7"),false, new ASN1ObjectIdentifier(" 1.2.643.2.2.46.0.8")); Однако гугл подсказывает, что шаблон - это не просто строка, а НЕЧТО более сложное. Подскажите, пожалуйста, что именно нужно добавить в Extension и в каком виде Отредактировано пользователем 19 октября 2021 г. 18:10:31(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Да, нужно добавить закодированное расширение CertificateTemplate от MSFT. Код: CertificateTemplateOID ::= SEQUENCE {
templateID OBJECT IDENTIFIER,
templateMajorVersion INTEGER (0..4294967295) OPTIONAL,
templateMinorVersion INTEGER (0..4294967295) OPTIONAL
}
https://docs.microsoft.c...9-4a83-9064-0d20af8b2ccf |
|
1 пользователь поблагодарил Кирилл Соболев за этот пост.
|
SPAlex оставлено 22.10.2021(UTC)
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 03.08.2021(UTC) Сообщений: 10
Сказал(а) «Спасибо»: 3 раз
|
Да, спасибо! Уже понял, что не добавил именно информацию о версиях. В Java сделал так: X500Principal sub = new X500Principal(simpleStr); PKCS10CertificationRequestBuilder p10Builder = new JcaPKCS10CertificationRequestBuilder( sub, keyPair.getPublic()); String userTemplate = "1.2.643.2.2.46.0.8"; ASN1ObjectIdentifier oid = new ASN1ObjectIdentifier("1.3.6.1.4.1.311.21.7");
ASN1EncodableVector encodableVector = new ASN1EncodableVector(); encodableVector.add(new ASN1ObjectIdentifier(userTemplate)); encodableVector.add(new ASN1Integer(1)); encodableVector.add(new ASN1Integer(0));
ExtensionsGenerator extensionsGenerator = new ExtensionsGenerator(); extensionsGenerator.addExtension(oid, false, new DERSequence(encodableVector)); p10Builder.addAttribute(PKCSObjectIdentifiers.pkcs_9_at_extensionRequest, extensionsGenerator.generate());
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,927 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Еще можно примерно так: Код:
final String szOID_CERTIFICATE_TEMPLATE = "1.3.6.1.4.1.311.21.7"; // OID расширения в запросе
final OID OID_CERTIFICATE_TEMPLATE = new OID(szOID_CERTIFICATE_TEMPLATE);
final OID selectedTemplateOid = new OID(template.getOid());
final CertificateTemplate certificateTemplate = new CertificateTemplate(new Asn1ObjectIdentifier(selectedTemplateOid.value), new Asn1Integer(1), new Asn1Integer(0));
final Asn1DerEncodeBuffer buffer = new Asn1DerEncodeBuffer();
certificateTemplate.encode(buffer);
final byte[] encodedCertificateTemplate = buffer.getMsgCopy();
final Asn1OctetString certificateTemplateValue = new Asn1OctetString(encodedCertificateTemplate);
final Extension templateExtension = new Extension(new Asn1ObjectIdentifier(OID_CERTIFICATE_TEMPLATE.value), certificateTemplateValue);
req.addExtension(templateExtension); <-- созданный ранее GostCertificateRequest
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close