Форум КриптоПро
»
КриптоПро УЦ
»
КриптоПро УЦ 2.0
»
Получение сертификата по запросу PKCS#10 через ИВП
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.12.2016(UTC) Сообщений: 127 Откуда: Таганрог Сказал «Спасибо»: 15 раз
|
День добрый, коллеги! Т.к. существующие штатные средства не помогли, вынужден решать свою задачу с автоматический выдачей сертификатов, уже программным способом. Уточняю архитектуру системы. 1) Клиенты формируют запрос на сертификат в стандартном формате PKCS#10, через различные механизмы в браузере (плагины всякие). 2) Запрос приходит на сервер, на котором живет наше приложение, одной из функций которого является обеспечение автоматизированной выдачи сертификат для электронной подписи документов. 3) Серверная часть отсылает запрос на сертификат от имени существующего пользователя УЦ. 4) Получает сертификат и отсылает его клиенту. В локальной сети серверной части присутствует КриптоПро УЦ 2.0. Наше серверное приложение по факту является физически одним единственным его пользователем (ну в своем контексте). Т.е., если я правильно понимаю, правомерно запрашивать выдачу сертификатов по файлам запросов, указывая в качестве пользователя УЦ администратора УЦ ? Пытаюсь отправить запрос на УЦ, вот так (С#), согласно документации (ЖТЯИ.00078-01 90 05. ПАК . Руководство программиста): Код:
string requestFile = "PKCS#10_file_data";
byte[] requestFileRAW = Encoding.UTF8.GetBytes(requestFile);
HttpWebRequest rqst = (HttpWebRequest)WebRequest.Create("https://" + CA_SERVER + "/ui/2/api/certrequest");
rqst.Method = "POST";
rqst.UserAgent = "UrlRetriever {Mozilla MSIE 6 Win 2000}";
rqst.KeepAlive = true;
rqst.ContentType = "application/octet-stream";
rqst.ContentLength = requestFileRAW.Length;
rqst.Headers.Add("Authorization", "Basic/ 1b27843a13abbf8f019cce738a115de115c6d940=="); // Отпечаток сертификата администратора ЦС.
rqst.ClientCertificates.Add(cert); // cert - сертификат корневого УЦ, размещенный в системном хранилище доверенных корневых ЦС
Stream dataStream = rqst.GetRequestStream();
dataStream.Write(requestFileRAW, 0, requestFileRAW.Length);
dataStream.Close();
// Получаем ответ
HttpWebResponse response = (HttpWebResponse)rqst.GetResponse();
// Читаем ответ
Stream responseStream = response.GetResponseStream();
StreamReader readStream = new StreamReader(responseStream);
List<object> list = new List<object>();
string currResponse = readStream.ReadToEnd();
list.Add(currResponse);
foreach(string s in list) {
Console.WriteLine(s);
}
Понятно, что само тело запроса - фонарь, но по идее я должен же получить какой-то вразумительный ответ на это? А приходит web-страница логина на УЦ! Шо делать, куда копать?! Потом еще один странный момент. До первого корректного указания отпечатка сертификата в атрибуте Authorization получаю строго 401-ю ошибку, в вот потом - можно менять параметры авторизации как угодно - все ОКейно! Думал может сокет зависает - так нет, корректно умирает (смотрел при помощи TCPview).
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Здравствуйте
Физически приложение является оператором УЦ, а вот пользователей УЦ как раз много - каждый клиент фактически является пользователем. Поэтому подход "запрашивать выдачу сертификатов по файлам запросов, указывая в качестве пользователя УЦ администратора УЦ" работать не будет. И по этой причине не получится использовать httpApi, для Вашей задачи нужно использовать ИВП УЦ 2.0. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.12.2016(UTC) Сообщений: 127 Откуда: Таганрог Сказал «Спасибо»: 15 раз
|
Спасибо за отклик! Автор: Kirill Sobolev пользователей УЦ как раз много - каждый клиент фактически является пользователем Я правильно понимаю, что каждый клиент моей системы в итоге должен быть зарегистрирован как пользователь УЦ? Я видел пример кода на VB.NET где создается запрос в формате PKCS#10, потом подписывается и отправляется на УЦ. Как раз думаю в направлении - если я возьму "извне" (от клиента) этот запрос уже в виде файла, подпишу его при помощи сертификата Администратора УЦ (он же оператор?) и отправлю УЦ за сертификатом, то такой вариант сработает? Ко мне кроме самого файла запроса приезжает имя клиента (сейчас пока используется MS ЦС, и он регистрируется как пользователь в ЦС), т.е. мне помощи ИВП так же при надо предварительно зарегистрировать нового пользователя УЦ? Отредактировано пользователем 22 августа 2017 г. 15:24:06(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
1 пользователь поблагодарил Кирилл Соболев за этот пост.
|
|
|
Форум КриптоПро
»
КриптоПро УЦ
»
КриптоПро УЦ 2.0
»
Получение сертификата по запросу PKCS#10 через ИВП
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close