2012-06-22 3 views
0

У меня проблема с PKCS #7, что заставляет меня гайки. Вот это вещь:Ошибка цепи и подтверждающий сертификат

  1. У меня есть ASP.NET WebService, что делает запросы на другой сторонний сервер и получает PKCS # 7 подписал маркер в ответ (это на самом деле не важно, где этот маркер приходит от). Затем мой веб-сервис проверяет подпись (и срок действия) токена и возвращает вложенные данные пользователю, который вызвал метод.

  2. Веб-сервис настроен для работы в выделенном пуле приложений, который работает под учетной записью пользователя в Windows, AD, IIS 6.

  3. Чтобы выполнить проверку, я делаю это (подпись имеет маркер):

    public static byte[] VerifyAndExtractEnvelopedData(byte[] signature) 
    { 
        if (signature == null) 
         throw new ArgumentNullException("signature"); 
    
        // Decode the signature 
        SignedCms cms = new SignedCms(); 
        cms.Decode(signature); 
        cms.CheckSignature(false); 
    
        if (cms.Detached) 
         throw new InvalidOperationException("Cannot extract enveloped content from a detached signature."); 
    
        return cms.ContentInfo.Content; 
    } 
    
  4. Я развернул веб-службу (IIS 6). Когда я пытаюсь запустить упомянутую выше WebMethod, при проверке подписи, я получаю ошибку:

    A certificate chain could not be built to a trusted root authority

Для того чтобы упростить вещи, я написал заявление с точно таким же кодом немного Windows Forms. Я зарегистрировался в интерактивном режиме на том же сервере, на котором размещается веб-служба, используя ту же учетную запись пользователя в пуле приложений. Запустите там EXE-файл, и он отлично работает, т. Е. Смог отлично проверить подпись. IMO, это исключает любую проблему, например, отсутствующий сертификат certificate authority (CA) и т. Д. (На самом деле у меня есть файл .CER подписывающего лица, я открываю его в Windows, и он сообщает мне, что цепочка в порядке).

Так что, по-видимому, единственное отличие состоит в том, что в первом случае мой процесс является веб-сервисом, а во втором - рабочим файлом EXE. Что еще может произойти, что мешает мне выполнить проверку в первом случае?

ответ

0

Я думаю, что вы можете попасть в разные магазины доверия на полагающейся стороне, см. Certificate stores.

Кроме того, ознакомьтесь с соответствующими сертификатами с PKIF, PITT, Portecle или аналогичными инструментами для достоверности, правильных идентификаторов OID, цепочки и т. Д.

Смежные вопросы