Статус: Участник
Группы: Участники
Зарегистрирован: 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.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,398  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 12
|
ЭЭЭ!!! Это в смысле что не в ту ветку? Или что вообще не по адресу? Ну да, тут не по CSP, а по TLS скорее. Ветки то отдельной по TLS нету. Вопрос по реализации TLS, которая поставляется вместе с CSP CryptoPro 3.0.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,398  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Если речь о Windows, то все проверки осуществляет MS. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 12
|
Хорошо. Т.е. не по адресу. Понимаю, что вы вовсе и не обязаны отвечать на вопросы, непосредственно не касающиеся вышей реализации. И все же может быть вы подскажете, возможно ли осуществлять проверку сертификата при серверной аутентификации по полному DN, а не только по СN. Судя по наличию идентификатора CERT_E_CN_NO_MATCH, проверка все же осуществляется по CN.
Однако, не совсем понятен такой момент. Насколько я понимаю, единтсвенным обязательным атрибутом имени при получении сертификата является CN. Может ли быть такое, что разными лицами будут получены сертификаты с одинаковыми CN, но с различными другими атрибутами имени? Тестовый УЦ в нашей организации позволяет получать сертификаты с одинаковыми CN при условии, что это будет одобрено администратором. Хотя возможно тут дело в неправильно настройке именно нашего УЦ. И если возможно получение сертификатов с одинаковыми CN, то как же тогда быть с проверкой цепочки через функцию CertVerifyCertificateChainPolicy с политикой верификации CERT_CHAIN_POLICY_SSL, если возможна валидация только по CN.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,398  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Эта политика проверяется по CN - сверяется с адресом сервера. Как Вы себе представляете DNS-адрес сервера в виде DN? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 12
|
Спасибо большое. У меня было не совсем правильное понимание процесса верификации по данной политике. А есть ли какие-нибудь средства для работы с DN (проверка на правильность записи, возможность получить составляющую имени и пр.), или все необходимо реализовывать самому. (нашел только CertStrToName и CertNameToStr).
|
|
|
|
Статус: Эксперт
Группы: Администраторы, Участники Зарегистрирован: 01.12.2008(UTC) Сообщений: 54 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 14 раз в 9 постах
|
DN можно декодировать/кодировать в CERT_NAME_INFO с помощью CryptDecodeObject(X509_NAME)/CryptEncodeObject(X509_NAME). В CERT_NAME_INFO есть отдельные компоненты имени.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 12
|
Большое спасибо за подсказку. Попробуем.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 09.10.2008(UTC) Сообщений: 12
|
Маленькое дополнение к теме. Может кому пригодится. Вот что ответил Кирилл Соболев на вопрос про работу с именами. Kirill Sobolev написал: Надо декодировать Subject из блоба в структуру CERT_NAME_INFO при помощи CryptDecodeObject и затем воспользоваться функциями CertFindRDNAttr, CertRDNValueToStr.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close