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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ga24  
#1 Оставлено : 27 января 2009 г. 23:15:22(UTC)
ga24

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

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

Для валидации цепочки сертификатов используется функция

CertVerifyCertificateChainPolicy(
IN LPCSTR pszPolicyOID,
IN PCCERT_CHAIN_CONTEXT pChainContext,
IN PCERT_CHAIN_POLICY_PARA pPolicyPara,
IN OUT PCERT_CHAIN_POLICY_STATUS pPolicyStatus
);

Соответственно, параметр pPolicyPara формируется следующем образом:
ZeroMemory(&polHttps, sizeof(HTTPSPolicyCallbackData));
polHttps.cbStruct = sizeof(HTTPSPolicyCallbackData);
polHttps.dwAuthType = AUTHTYPE_SERVER;
polHttps.fdwChecks = dwCertFlags;
polHttps.pwszServerName = pwszServerName;

memset(&PolicyPara, 0, sizeof(PolicyPara));
PolicyPara.cbSize = sizeof(PolicyPara);
PolicyPara.pvExtraPolicyPara = &polHttps;

Можно polHttps.pwszServerName записывать полное имя из сертификата, или допустимо использование только CN?
Собственно, работает у меня только для CN. Пробовал в вашем примере по SSPI при проверке цепочки
передавать полное имя в таком виде, как оно представлено в сертификате. Результатом была ошибка с идентификатором
CERT_E_CN_NO_MATCH.



Offline Максим Коллегин  
#2 Оставлено : 28 января 2009 г. 0:09:34(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
А причем тут CSP?
Знания в базе знаний, поддержка в техподдержке
Offline ga24  
#3 Оставлено : 28 января 2009 г. 15:37:49(UTC)
ga24

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

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

ЭЭЭ!!!
Это в смысле что не в ту ветку?
Или что вообще не по адресу?
Ну да, тут не по CSP, а по TLS скорее.
Ветки то отдельной по TLS нету.
Вопрос по реализации TLS, которая поставляется вместе с CSP CryptoPro 3.0.
Offline Максим Коллегин  
#4 Оставлено : 28 января 2009 г. 15:42:42(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Если речь о Windows, то все проверки осуществляет MS.
Знания в базе знаний, поддержка в техподдержке
Offline ga24  
#5 Оставлено : 28 января 2009 г. 16:03:42(UTC)
ga24

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

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

Хорошо. Т.е. не по адресу.
Понимаю, что вы вовсе и не обязаны отвечать на вопросы, непосредственно не касающиеся вышей реализации.
И все же может быть вы подскажете, возможно ли осуществлять проверку сертификата при серверной аутентификации по полному DN, а не только по СN.
Судя по наличию идентификатора CERT_E_CN_NO_MATCH, проверка все же осуществляется по CN.

Однако, не совсем понятен такой момент. Насколько я понимаю, единтсвенным обязательным атрибутом имени при получении сертификата является CN.
Может ли быть такое, что разными лицами будут получены сертификаты с одинаковыми CN, но с различными другими атрибутами имени?
Тестовый УЦ в нашей организации позволяет получать сертификаты с одинаковыми CN при условии, что это будет одобрено администратором.
Хотя возможно тут дело в неправильно настройке именно нашего УЦ.
И если возможно получение сертификатов с одинаковыми CN, то как же тогда быть с проверкой цепочки через функцию CertVerifyCertificateChainPolicy с политикой верификации CERT_CHAIN_POLICY_SSL, если возможна валидация только по CN.
Offline Максим Коллегин  
#6 Оставлено : 28 января 2009 г. 17:14:04(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 37 раз
Поблагодарили: 719 раз в 623 постах
Эта политика проверяется по CN - сверяется с адресом сервера. Как Вы себе представляете DNS-адрес сервера в виде DN?
Знания в базе знаний, поддержка в техподдержке
Offline ga24  
#7 Оставлено : 28 января 2009 г. 17:30:53(UTC)
ga24

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

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

Спасибо большое. У меня было не совсем правильное понимание процесса верификации по данной политике.
А есть ли какие-нибудь средства для работы с DN (проверка на правильность записи, возможность получить составляющую имени и пр.), или все необходимо реализовывать самому.
(нашел только CertStrToName и CertNameToStr).
Offline pavelvn  
#8 Оставлено : 28 января 2009 г. 18:03:35(UTC)
pavelvn

Статус: Эксперт

Группы: Администраторы, Участники
Зарегистрирован: 01.12.2008(UTC)
Сообщений: 54
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 14 раз в 9 постах
DN можно декодировать/кодировать в CERT_NAME_INFO с помощью CryptDecodeObject(X509_NAME)/CryptEncodeObject(X509_NAME). В CERT_NAME_INFO есть отдельные компоненты имени.
Offline ga24  
#9 Оставлено : 28 января 2009 г. 20:08:05(UTC)
ga24

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

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

Большое спасибо за подсказку. Попробуем.
Offline ga24  
#10 Оставлено : 1 февраля 2009 г. 17:44:30(UTC)
ga24

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

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

Маленькое дополнение к теме. Может кому пригодится.
Вот что ответил Кирилл Соболев на вопрос про работу с именами.

Kirill Sobolev написал:

Надо декодировать Subject из блоба в структуру CERT_NAME_INFO при помощи CryptDecodeObject и затем воспользоваться функциями CertFindRDNAttr, CertRDNValueToStr.


RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.