Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
АРМ выдает ошибку если в запросе на сертификат есть кириллица
Статус: Активный участник
Группы: Участники
Зарегистрирован: 06.03.2012(UTC) Сообщений: 177
Сказал(а) «Спасибо»: 57 раз Поблагодарили: 11 раз в 8 постах
|
Автор: Евгений Пономаренко  Добавлю к этому, что кодировать элементы DN надо все же в bitmap string Типа: DWORD selectRDNAttrType(SHARED_rdnValue& item) { DWORD result=CERT_RDN_BMP_STRING; if(item) { //// FSB directive #795 if(!strcmp(item->oid,"1.2.643.100.1") || !strcmp(item->oid,"1.2.643.100.3") || !strcmp(item->oid,"1.2.643.3.131.1.1") || !strcmp(item->oid,"1.2.643.100.5")) // INN,OGRN,OGRNIP,SNILS result=CERT_RDN_NUMERIC_STRING; else if(!strcmp(item->oid,"1.2.840.113549.1.9.1")) // E result=CERT_RDN_IA5_STRING; else if(!strcmp(item->oid,"2.5.4.6") || !strcmp(item->oid,"1.2.840.113549.1.9.2")) // C, UN result=CERT_RDN_PRINTABLE_STRING; else result=CERT_RDN_BMP_STRING; } return result; } Иначе возможны проблемы с изготовленными по этому запросу сертификатами и Криптопро CSP/Linux Об этом я писал здесь: https://www.cryptopro.ru...sts&t=7502#post48113 CryptEncodeObject наше все. Пробуйте ее использовать. С BMP вы можете попасть в ситуацию когда криптопро уц посчитает, что там должно быть printablestring, и ваш запрос не пройдет контроль кодирования DN. Хотя и уц не должен так думать, но такую логику заложили в контроль. Править баг/или не баг никто не будет по многим причинам. Контроль, конечно, можно и отключить и использовать бмп. Тут уж каждый сам решает. Отредактировано пользователем 9 сентября 2014 г. 14:42:51(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:Иначе возможны проблемы с изготовленными по этому запросу сертификатами и Криптопро CSP/Linux Об этом я писал здесь: https://www.cryptopro.ru...sts&t=7502#post48113 А в окне просмотра сертификата такие же проблемы? Пробовали на более новой версии CSP? |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 03.05.2012(UTC) Сообщений: 176 Откуда: Екатеринбург
Сказал(а) «Спасибо»: 48 раз Поблагодарили: 23 раз в 19 постах
|
Автор: Kirill Sobolev  А в окне просмотра сертификата такие же проблемы? Пробовали на более новой версии CSP?
В окне просмотра сертификата, или где-либо еще под win проблем нет никаких. Столкнулись совершенно случайно, когда ИС на centos/cryptopro csp 3.6r3 отказалась их обрабатывать. Путем анализа сертификатов, создаваемых криптопро УЦ 1.5r2, выяснилось, что кодировка полей, содержащих кириллицу, идет именно в bitmap. На этом все и закончилось. Новые версии не проверял.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:В окне просмотра сертификата, или где-либо еще под win проблем нет никаких. Столкнулись совершенно случайно, когда ИС на centos/cryptopro csp 3.6r3 отказалась их обрабатывать. Если столкнетесь еще раз, попробуйте обновить CSP. Все-таки R3 уже достаточно давно вышла. Если проблема не пропадет, пришлите, пожалуйста, пример - попробуем у себя воспроизвести. |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 26.08.2010(UTC) Сообщений: 38 Откуда: Санкт-Петербург
Сказал(а) «Спасибо»: 21 раз
|
Автор: Kirill Sobolev  Цитата:Заменил CERT_RDN_PRINTABLE_STRING на CERT_RDN_UTF8_STRING. Помимо замены нужно еще и Value правильно закодировать. Цитата:Использовал CertStrToName(), как с параметром CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG, так и CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG. CertStrToName служит для другой цели. Допустим, у Вас есть готовая строка субъекта вида "CN=Иванов Иван, L=Москва, C=RU, E=iva@nov.com", которую Вы хотите закодировать в ASN.1. Вот для этого как раз CertStrToName и предназначена. Попробуйте начать с обратного - возьмите готовый PKCS#10 запрос, сделанный, например, в АРМ Администратора и распарсите его в своей программе. Будет видно, каким образом заполняется структура CERT_NAME_INFO. Мне кажется если я буду пытаться распарсить запрос у меня появится ещё больше вопросов Пытался закодировать EditContainerName в utf8, не получилось, по прежнему выдаёт ошибку. Код:
string utf8(const wstring &str) {
string new_str;
int len = WideCharToMultiByte(CP_UTF8, 0, str.c_str(), str.length(), NULL, 0, NULL, NULL);
if (len > 0) {
new_str.resize(len);
WideCharToMultiByte(CP_UTF8, 0, str.c_str(), str.length(), &new_str[0], len, NULL, NULL);
}
return new_str;
}
А не проще ли взять и составить подобную строку из EditContainerName, EditLocality и т.д. , а затем эту строку закодировать CertStrToName()? Много ли нужно изменить в моей функции bool createRequest(char* path, CERT_NAME_INFO RDNs); для того что бы составить запрос с CertStrToName(), а не как я пытаюсь это сделать с заполнением CERT_NAME_INFO? Отредактировано пользователем 9 сентября 2014 г. 16:35:31(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:А не проще ли взять и составить подобную строку из EditContainerName, EditLocality и т.д. , а затем эту строку закодировать CertStrToName()? Много ли нужно изменить в моей функции bool createRequest(char* path, CERT_NAME_INFO RDNs); для того что бы составить запрос с CertStrToName(), а не как я пытаюсь это сделать с заполнением CERT_NAME_INFO? Строку надо составлять с учетом требований RFC 1779, за исключением Цитата:Names that contain quotes are enclosed within double quotation marks. Empty strings are enclosed within double quotation marks. Strings that contain consecutive spaces are not enclosed within quotation marks. RDN values of type CERT_RDN_ENCODED_BLOB or CERT_RDN_OCTET_STRING are formatted in hexadecimal. |
|
|
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Встраивание
»
АРМ выдает ошибку если в запросе на сертификат есть кириллица
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close