Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline SPAlex  
#1 Оставлено : 12 октября 2021 г. 10:37:43(UTC)
SPAlex

Статус: Участник

Группы: Участники
Зарегистрирован: 03.08.2021(UTC)
Сообщений: 10

Сказал(а) «Спасибо»: 3 раз
Добрый день! Есть задача выпустить сертификат на пользователя, из приложения, написанного на Java. Основная загвоздка в том, что это нужно сделать с админскими правами. Т.е. в ЦР добавить себя, как пользователя (если до этого не было) и СРАЗУ ЖЕ ПОДТВЕРДИТЬ + в ЦС выпустить сертификат и его тоже СРАЗУ ЖЕ ПОДТВЕРДИТЬ. Ключи и запросы на выпуск сертификата производится на стороне JAVA.
Есть ли понятные шаги, как это сделать? Интересует именно взаимодействие между программами.
Offline SPAlex  
#2 Оставлено : 19 октября 2021 г. 18:07:53(UTC)
SPAlex

Статус: Участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Кирилл Соболев  
#3 Оставлено : 22 октября 2021 г. 10:22:22(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
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Кирилл Соболев за этот пост.
SPAlex оставлено 22.10.2021(UTC)
Offline SPAlex  
#4 Оставлено : 22 октября 2021 г. 10:26:13(UTC)
SPAlex

Статус: Участник

Группы: Участники
Зарегистрирован: 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());
Offline Евгений Афанасьев  
#5 Оставлено : 22 октября 2021 г. 11:25:33(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,910
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Еще можно примерно так:
Код:

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
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.