26.07.2007 16:08:48При проверки цепочки сертификата выдает CERT_TRUST_IS_SELF_SIGNED Ответов: 10
Dim
Ситуация следующая.
Есть служба. В определенный момент времени она пытается получить личный сертификат. Получает его и проверяет цепочку. Проверка выдает CERT_TRUST_IS_SELF_SIGNED. Помогает только перезапуск службы. Что это за ошибка? Описание в MSDN очень скудное.
 
Ответы:
26.07.2007 17:56:36Kirill Sobolev
Это значит что проверяемый сертификат самоподписанный. Это не ошибка, просто констатация факта.
27.07.2007 10:46:23dim
Я тоже так думал.
Но ведь он не самоподписанный. Может быть причина в том , что в один момент времени сертификат пытаются получить сразу несколько потоков. Хотя потом потоки в разное время пытаются получить сертификат.
27.07.2007 13:36:55Kirill Sobolev
Потоки тут непричем. А где этот статус возвращается?
27.07.2007 14:29:27Dim
Есть некая функция которая ищет сертификат в заданом хранилище, по серийному номеру и издателю. После того как найден сертификат, проводим проверку цепочки:
CertCreateCertificateChainEngine()
CertGetCertificateChain(,,,,,,,&pChainContext)
и после вызова в pChainContext->TrustStatus.dwErrorStatus получаем кучу всякого и в том числе CERT_TRUST_IS_SELF_SIGNED. Подобная ситуация возникает от случая к случаю.
27.07.2007 15:08:21Kirill Sobolev
Понятно.
CERT_TRUST_IS_SELF_SIGNED - это константа, которая может быть в поле pChainContext->TrustStatus.dwInfoStatus. Равна она 0x00000008. Если же это значение присутствует в dwErrorStatus, то оно имеет совершенно другой смысл - CERT_TRUST_IS_NOT_SIGNATURE_VALID, неверная ЭЦП сертификата, и тут действительно могут быть проблемы при проверке подписи в многопоточном приложении - зависит от криптопровайдера.
27.07.2007 16:36:21Dim
Использую КриптоПро. Какой криптопровайдер незнаю. Как можно посмотреть?
27.07.2007 16:53:04Kirill Sobolev
Если подпись сертификатов в цепочки гостовая, то криптопровайдер КриптоПро CSP. Версию можно посмотрть в Панель управления - КриптоПро CSP.
27.07.2007 16:59:22Dim
Тогда у меня КриптоПро CSP.
Как от этой ошибки избавиться?
30.07.2007 10:01:40Kirill Sobolev
Какой версии?
31.07.2007 12:16:47Dim
Версия 3.03.3293.
И я вот, что вспомнил такая ситуация возникала во второй версии, в однопоточном приложении. Потом рассосалось само собой.