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

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline MCR  
#11 Оставлено : 9 сентября 2014 г. 14:37:41(UTC)
MCR

Статус: Активный участник

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

Offline Kirill Sobolev  
#12 Оставлено : 9 сентября 2014 г. 15:32:28(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Цитата:
Иначе возможны проблемы с изготовленными по этому запросу сертификатами и Криптопро CSP/Linux
Об этом я писал здесь: https://www.cryptopro.ru...sts&t=7502#post48113

А в окне просмотра сертификата такие же проблемы?
Пробовали на более новой версии CSP?
Техническую поддержку оказываем тут
Наша база знаний
Offline Евгений Пономаренко  
#13 Оставлено : 9 сентября 2014 г. 15:41:19(UTC)
Евгений Пономаренко

Статус: Активный участник

Группы: Участники
Зарегистрирован: 03.05.2012(UTC)
Сообщений: 176
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 48 раз
Поблагодарили: 23 раз в 19 постах
Автор: Kirill Sobolev Перейти к цитате

А в окне просмотра сертификата такие же проблемы?
Пробовали на более новой версии CSP?


В окне просмотра сертификата, или где-либо еще под win проблем нет никаких.
Столкнулись совершенно случайно, когда ИС на centos/cryptopro csp 3.6r3 отказалась их обрабатывать.
Путем анализа сертификатов, создаваемых криптопро УЦ 1.5r2, выяснилось, что кодировка полей, содержащих кириллицу, идет именно в bitmap. На этом все и закончилось. Новые версии не проверял.
Offline Kirill Sobolev  
#14 Оставлено : 9 сентября 2014 г. 15:59:22(UTC)
Кирилл Соболев

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

Группы: Участники
Зарегистрирован: 25.12.2007(UTC)
Сообщений: 1,733
Мужчина
Откуда: КРИПТО-ПРО

Поблагодарили: 177 раз в 168 постах
Цитата:
В окне просмотра сертификата, или где-либо еще под win проблем нет никаких.
Столкнулись совершенно случайно, когда ИС на centos/cryptopro csp 3.6r3 отказалась их обрабатывать.

Если столкнетесь еще раз, попробуйте обновить CSP. Все-таки R3 уже достаточно давно вышла.
Если проблема не пропадет, пришлите, пожалуйста, пример - попробуем у себя воспроизвести.
Техническую поддержку оказываем тут
Наша база знаний
Offline manigu  
#15 Оставлено : 9 сентября 2014 г. 16:29:11(UTC)
manigu

Статус: Активный участник

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



Мне кажется если я буду пытаться распарсить запрос у меня появится ещё больше вопросов Anxious

Пытался закодировать 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)  | Причина: Не указана

Offline Kirill Sobolev  
#16 Оставлено : 9 сентября 2014 г. 16:59:35(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.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.