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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline sergikrus  
#1 Оставлено : 31 января 2019 г. 15:09:25(UTC)
sergikrus

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

Группы: Участники
Зарегистрирован: 05.10.2013(UTC)
Сообщений: 12
Российская Федерация
Откуда: Тюмень

Сказал(а) «Спасибо»: 2 раз
Коллеги, здравствуйте!

Имеется файл запроса на сертификат, запрос на сертификат был сгенерироват через утилиту "Рутокен ЭЦП 2.0".

Если данный запрос на сертификат загружать через Консоль управления УЦ (Пользователь -> Загрузить из файла), то сертификат выпускается.

А если я пытаюсь загрузить его через метод сервиса SubmitCertRequest то получаю ошибку:
The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs.

Пример вызова:

var rawRequest = RAHelper.MakeRawRequest(fileData, GlobalSettings.Default.RAThumbprint);

var requestId = service.SubmitCertRequest(esodr.Employee.UserIdInRA.Value.ToString(), rawRequest, "", "");

Значение переменных fileData и rawRequest во вложении Log.txt (9kb) загружен 11 раз(а).

Коллеги, что я делаю не так?

Отредактировано пользователем 31 января 2019 г. 15:10:36(UTC)  | Причина: Не указана

Offline Захар Тихонов  
#2 Оставлено : 1 февраля 2019 г. 8:10:52(UTC)
Захар Тихонов

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

Группы: Участники
Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,176
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 38 раз
Поблагодарили: 566 раз в 543 постах
Здравствуйте.

Скорее всего УЦ не может декодировать.
Подписывать требуется в der, а вы подписываете base64 с заголовками в юникоде.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline sergikrus  
#3 Оставлено : 1 февраля 2019 г. 9:21:17(UTC)
sergikrus

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

Группы: Участники
Зарегистрирован: 05.10.2013(UTC)
Сообщений: 12
Российская Федерация
Откуда: Тюмень

Сказал(а) «Спасибо»: 2 раз
Автор: Захар Тихонов Перейти к цитате
Здравствуйте.

Скорее всего УЦ не может декодировать.
Подписывать требуется в der, а вы подписываете base64 с заголовками в юникоде.


Хмм, а не подскажете как сконвертировать средствами .NET?
Offline Захар Тихонов  
#4 Оставлено : 1 февраля 2019 г. 9:32:49(UTC)
Захар Тихонов

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

Группы: Участники
Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,176
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 38 раз
Поблагодарили: 566 раз в 543 постах
В .NET отсутствуют встроенные средства для декодирования base64 с заголовками, так что тут либо вырезать их самостоятельно, либо попробовать https://docs.microsoft.c...pt-cryptstringtobinarya, либо (самое простое) изначально создавать запрос без них.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline sergikrus  
#5 Оставлено : 1 февраля 2019 г. 14:02:55(UTC)
sergikrus

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

Группы: Участники
Зарегистрирован: 05.10.2013(UTC)
Сообщений: 12
Российская Федерация
Откуда: Тюмень

Сказал(а) «Спасибо»: 2 раз
Автор: Захар Тихонов Перейти к цитате
В .NET отсутствуют встроенные средства для декодирования base64 с заголовками, так что тут либо вырезать их самостоятельно, либо попробовать https://docs.microsoft.c...pt-cryptstringtobinarya, либо (самое простое) изначально создавать запрос без них.


На самом деле изначально так и было реализовано.
Я Инициализирова запрос на сертификат из файла запроса на сертифика
CX509CertificateRequestPkcs10 req = new CX509CertificateRequestPkcs10();
req.InitializeDecode(fileData, EncodingType.XCN_CRYPT_STRING_BASE64_ANY);

В итоге подписываетмый запрос без заголовков reqCer.txt (1kb) загружен 11 раз(а).

Затем уже подписал и отправил в ЦУ:

var rawRequest = RAHelper.MakeRawRequest(req.RawData, GlobalSettings.Default.RAThumbprint);
var requestId = service.SubmitCertRequest(esodr.Employee.UserIdInRA.Value.ToString(), rawRequest, "", "");

Ошибка та же :(
Offline Захар Тихонов  
#6 Оставлено : 1 февраля 2019 г. 14:15:22(UTC)
Захар Тихонов

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

Группы: Участники
Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,176
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 38 раз
Поблагодарили: 566 раз в 543 постах
Автор: sergikrus Перейти к цитате
Автор: Захар Тихонов Перейти к цитате
В .NET отсутствуют встроенные средства для декодирования base64 с заголовками, так что тут либо вырезать их самостоятельно, либо попробовать https://docs.microsoft.c...pt-cryptstringtobinarya, либо (самое простое) изначально создавать запрос без них.


На самом деле изначально так и было реализовано.
Я Инициализирова запрос на сертификат из файла запроса на сертифика
CX509CertificateRequestPkcs10 req = new CX509CertificateRequestPkcs10();
req.InitializeDecode(fileData, EncodingType.XCN_CRYPT_STRING_BASE64_ANY);

В итоге подписываетмый запрос без заголовков reqCer.txt (1kb) загружен 11 раз(а).

Затем уже подписал и отправил в ЦУ:

var rawRequest = RAHelper.MakeRawRequest(req.RawData, GlobalSettings.Default.RAThumbprint);
var requestId = service.SubmitCertRequest(esodr.Employee.UserIdInRA.Value.ToString(), rawRequest, "", "");

Ошибка та же :(


Попробуйте подписать и отправить
reqCer1.txt (1kb) загружен 10 раз(а).
Техническую поддержку оказываем тут.
Наша база знаний.
Offline sergikrus  
#7 Оставлено : 1 февраля 2019 г. 15:38:41(UTC)
sergikrus

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

Группы: Участники
Зарегистрирован: 05.10.2013(UTC)
Сообщений: 12
Российская Федерация
Откуда: Тюмень

Сказал(а) «Спасибо»: 2 раз
Автор: Захар Тихонов Перейти к цитате

Попробуйте подписать и отправить
reqCer1.txt (1kb) загружен 10 раз(а).


Если подписать содержимое файла и отправить, то ошибка:
Неверный формат запроса.
Offline Захар Тихонов  
#8 Оставлено : 1 февраля 2019 г. 15:58:53(UTC)
Захар Тихонов

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

Группы: Участники
Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,176
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 38 раз
Поблагодарили: 566 раз в 543 постах
Автор: sergikrus Перейти к цитате


Затем уже подписал и отправил в ЦУ:

var rawRequest = RAHelper.MakeRawRequest(req.RawData, GlobalSettings.Default.RAThumbprint);
var requestId = service.SubmitCertRequest(esodr.Employee.UserIdInRA.Value.ToString(), rawRequest, "", "");

Ошибка та же :(


Без подробностей не понять где ошибка. Распиши полностью весь процесс.

Возможно вам поможет certutil. Проверьте что certutil успешно парсит запрос/подписанный запрос. Если не парсится, то и УЦ не примет.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline sergikrus  
#9 Оставлено : 4 февраля 2019 г. 10:08:55(UTC)
sergikrus

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

Группы: Участники
Зарегистрирован: 05.10.2013(UTC)
Сообщений: 12
Российская Федерация
Откуда: Тюмень

Сказал(а) «Спасибо»: 2 раз
Автор: Захар Тихонов Перейти к цитате

Без подробностей не понять где ошибка. Распиши полностью весь процесс.

Возможно вам поможет certutil. Проверьте что certutil успешно парсит запрос/подписанный запрос. Если не парсится, то и УЦ не примет.


Алгоритм следующий:

1. Читаем файл запроса на сертификат:
string fileData = Encoding.UTF8.GetString(fileContentStream.ToArray());
Значение fileData есть во вложении в первом посте.

2. Инициализируем запрос на сертификат:
CX509CertificateRequestPkcs10 req = new CX509CertificateRequestPkcs10();
req.InitializeDecode(fileData, EncodingType.XCN_CRYPT_STRING_BASE64_ANY);

3. Подписываем запрос на сертификат:
var adminCert = GetCert(certForSigning);

var content = Encoding.Unicode.GetBytes(req.RawData);
var submitted = Sign(content, adminCert);
var approved = Sign(submitted, adminCert);
var rawRequest = Convert.ToBase64String(approved);

4. Отправляем подписанный запрос на сертификат:
var requestId = service.SubmitCertRequest(UserIdIn, rawRequest, "", "");

На первый взгляд ошибки не вижу, может у меня уже глаз замылен. А может я в принципе не корректно использую метод отправки запроса на сертификат, не посмотрите своим свежим взглядом?

Админский сертификат действующий, с этим сертификатом все другие действия с сервисом проходят. Проблема именно с запросом из файла, другими способами запрос генерируется и в УЦ уходит без ошибок.
Offline Захар Тихонов  
#10 Оставлено : 4 февраля 2019 г. 10:26:02(UTC)
Захар Тихонов

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

Группы: Участники
Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,176
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 38 раз
Поблагодарили: 566 раз в 543 постах
Автор: sergikrus Перейти к цитате
Автор: Захар Тихонов Перейти к цитате

Без подробностей не понять где ошибка. Распиши полностью весь процесс.

Возможно вам поможет certutil. Проверьте что certutil успешно парсит запрос/подписанный запрос. Если не парсится, то и УЦ не примет.


Алгоритм следующий:

1. Читаем файл запроса на сертификат:
string fileData = Encoding.UTF8.GetString(fileContentStream.ToArray());
Значение fileData есть во вложении в первом посте.

2. Инициализируем запрос на сертификат:
CX509CertificateRequestPkcs10 req = new CX509CertificateRequestPkcs10();
req.InitializeDecode(fileData, EncodingType.XCN_CRYPT_STRING_BASE64_ANY);

3. Подписываем запрос на сертификат:
var adminCert = GetCert(certForSigning);

var content = Encoding.Unicode.GetBytes(req.RawData);
var submitted = Sign(content, adminCert);
var approved = Sign(submitted, adminCert);
var rawRequest = Convert.ToBase64String(approved);

4. Отправляем подписанный запрос на сертификат:
var requestId = service.SubmitCertRequest(UserIdIn, rawRequest, "", "");

На первый взгляд ошибки не вижу, может у меня уже глаз замылен. А может я в принципе не корректно использую метод отправки запроса на сертификат, не посмотрите своим свежим взглядом?

Админский сертификат действующий, с этим сертификатом все другие действия с сервисом проходят. Проблема именно с запросом из файла, другими способами запрос генерируется и в УЦ уходит без ошибок.


В первом сообщении base64 с заголовками в юникоде.
Пришлите как вы подписываете в der.
Техническую поддержку оказываем тут.
Наша база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.