Способы вызова веб-службы с использованием клиентского сертификата для проверки подлинности в приложении ASP.NET веб-приложения

Переводы статьи Переводы статьи
Код статьи: 901183 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В данной статье рассматриваются способы передачи сертификат клиента веб-службу для проверки подлинности из приложения ASP.NET веб-приложения.

Примечание Действия, описанные в данной статье, также применимы к когда вы сделать прямой HTTP-запрос, используя HttpWebRequest класс, если они не вызывают веб-службы.

ВВЕДЕНИЕ

Часто должны проходить проверку подлинности веб-службы приложения, вызывающие веб-службы. Веб-служб необходимо выполнить проверок подлинности вызова приложений до веб-службы могут выполнять авторизацию. Один метод проверки подлинности — требуют приложения, вызывающие веб-службы для представления сертификат клиента.

При запросе страницы ASP.NET приложения пытается вызвать веб-службу, которая использует проверку подлинности сертификата, может появиться сообщение об ошибке «Отказано в доступе». Когда консоль приложение или приложение Microsoft Windows Forms вызывает же веб-службы, не появляется сообщение об ошибке сообщение.

Это происходит потому, что компьютер поддерживает два различных хранилищах сертификатов:
  • В хранилище локального компьютера: ASP.NET веб-приложение будет выглядеть в этом хранилище найдите клиента сертификаты.
  • В хранилище локального пользователя: В этом хранилище найдите клиента выглядит интерактивный пользователь приложения сертификаты.
Как правило, когда приложение интерактивный пользователь устанавливает сертификат клиента сертификат клиента установлен в хранилище локального пользователя. Таким образом сертификат клиента работает для интерактивных приложений. Однако сертификат клиента не работает для ASP.NET Web приложения.

Дополнительная информация

Чтобы включить страницы ASP.NET веб-приложение для использования клиентом сертификат, необходимо установить клиентский сертификат в хранилище локального компьютера. При установке клиентского сертификата в хранилище локального компьютера клиентский сертификат доступен только для учетных записей пользователей в группу «Администраторы» и для пользователей, установивших сертификат клиента. Таким образом необходимо предоставить доступ к сертификату клиента для учетной записи пользователя, которая используется для запуска ASP.NET веб-приложения.

Примечание Необходимо наличие Microsoft.NET Framework 1.1 пакетом обновления 1 (SP1) для использования клиентские сертификаты в хранилище локального компьютера.

Кроме того, если приложение ASP.NET Веб-приложение вызывает веб-службы, необходимо экспортировать приложение сертификат клиента из сертификата, сохранить, а затем добавить клиента сертификат для вызова веб-службы.

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

Для установки сертификата клиента и предоставление доступа Чтобы клиентский сертификат для учетной записи пользователя, которая используется для запуска ASP.NET веб-приложения, выполните следующие действия.

Шаг 1: Установка сертификата клиента в хранилище локального компьютера

При наличии клиентского сертификата в файле PKCS # 12 (.pfx), можно Используйте программу настройки Microsoft Windows HTTP служб сертификатов (WinHttpCertCfg.exe) для установки сертификата клиента и предоставление доступа к сертификату клиента для дополнительных учетные записи пользователей например учетная запись сетевой службы. Чтобы сделать это, выполните следующие действия:
  1. Загрузите и установите Microsoft Windows HTTP Службы средства настройки сертификата. Чтобы получить средство, посетите веб-узел Веб-узел Майкрософт:
    http://www.Microsoft.com/downloads/details.aspx?FamilyId=c42e27ac-3409-40e9-8667-c748e422833f
  2. В командной строке выполните следующую команду:
    winhttpcertcfg -i Файл_pfx -c LOCAL_MACHINE\My - IWAM_TESTMACHINE -p PFXPassword
    Примечание Файл_pfx Имя PFX-файла. Пароль является пароль для PFX-файл. Если файл не требуется пароль, пропустить -p параметр.

    Как правило файл WinHttpCertCfg.exe находится в следующих папки:
    C:\Program Files\Windows Resource Kits\Tools
Если у вас нет доступа к PFX-файл, а у вас есть Установленные службы сертификации на компьютере под управлением Microsoft Windows Server 2003 или Microsoft Windows 2000 Server, можно запросить и установить сертификат клиента непосредственно в хранилище локального компьютера. Чтобы сделать это, выполните следующие действия.
  1. Войдите на клиентский компьютер с помощью учетной записи пользователя обладающей правами администратора.
  2. В Microsoft Internet Explorer посетите центр сертификации (ЦС) Веб-узел. Например, если сервер центра сертификации с именем CAServer, посетите следующий веб-узел:
    http://CAServer/certsrv
  3. В группе Выбор задачи, нажмите кнопку Запрос сертификата, а затем нажмите кнопку вкладка «Дополнительно» запрос сертификата.
  4. Нажмите кнопку Создать и выдать запрос к этому ЦЕНТР СЕРТИФИКАЦИИ.
  5. В Расширенный запрос сертификатаформы, введите имя и адрес электронной почты.
  6. В Нужный тип сертификатараздел, нажмите кнопку Сертификат проверки подлинности клиента.
  7. В Параметры ключа раздел, щелкните Выберите Сертификат хранилище сертификатов локального компьютера Хранилище Установите флажок и нажмите кнопку Отправить.

    Примечание Идентификатор запроса сертификата клиента.
  8. В Потенциальная ошибка сценариядиалоговое окно, нажмите кнопку Да.
  9. После сертификации выдал клиентский сертификат, нажмите кнопку Домашняя страница, а затем нажмите кнопку Представление состояния отложенного запроса сертификата.
  10. В группе Выберите нужный запрос сертификата для просмотра, выделите запрос на сертификат, отправленные на шаге 7.
  11. Нажмите кнопку Установить этот сертификат, и Нажмите кнопку Да В диалоговом окне Потенциальная ошибка сценария диалоговое окно.

Шаг 2: Настройка доступа к сертификату клиента

На этом шаге необходимо предоставить разрешения для приложения ASP.NET, используемой для Чтобы открыть клиентский сертификат, который хранится в хранилище локального компьютера. По умолчанию используется учетная запись сетевой службы учетная запись для запуска веб-приложений в Windows Server 2003. Таким образом необходимо предоставить доступ к сертификат учетной записи сетевой службы. Если у вас есть Настройка пользовательских учетных записей для запуска ASP.NET, необходимо предоставить доступ для настраиваемых учетная запись.

Примечание В Microsoft Internet Information Server (IIS) 5.0, ASP.NET выполняется под ASPNET учетную запись и не в сети службы учетных записей. Таким образом необходимо предоставить разрешения для учетной записи ASPNET на компьютере под управлением служб IIS 5.0.

Чтобы предоставить доступ для учетной записи пользователя, выполните следующую команду: команды в командной строке:
-C LOCAL_MACHINE\MY WinHttpCertCfg.exe -g -s"IssuedToName" -a "Имя учетной записи"
Примечание Имя учетной записи является Имя учетной записи локального компьютера или учетной записи домена. IssuedToName Имя компании или домена, к которому сертификат клиента был выдан. Эта команда содержит строку поиска без учета регистра. Строка поиска находит первый перечисляемые сертификат с именем субъекта, содержащий строку.

Следующая команда является примером как предоставить доступ к клиентский сертификат для учетной записи сетевой службы в Microsoft Internet информации службы (IIS) 6.0:
-C LOCAL_MACHINE\MY WinHttpCertCfg.exe -g -s"IssuedToName"-"Сетевая служба"
Следующая команда является примером о том, как предоставить доступ к клиентский сертификат для учетной записи ASPNET в IIS 5.0:
-C LOCAL_MACHINE\MY WinHttpCertCfg.exe -g -s"IssuedToName"-"aspnet"
Примечание При использовании Windows HTTP Программа настройки служб сертификации, можно объединить процесс импорта сертификата клиента и процесс настройки доступа к сертификату клиента за один шаг. Для пример, следующая команда выполняет оба процесса:
Winhttpcertcfg.exe -i Файл_pfx -c LOCAL_MACHINE\My -»Имя учетной записи

Шаг 3: Скопируйте клиентский сертификат из хранилища локального пользователя в хранилище локального компьютера

Если интерактивных приложений, таких как приложения Windows Forms или командной строки сертификат клиента, клиент имеет доступ приложение сертификат уже хранится в хранилище локального пользователя. Однако если служба приложения, такие как ASP.NET веб-приложение не может получить доступ к один сертификат клиента, сертификат клиента не может быть хранятся в хранилище локального компьютера.

Это объясняется порядок копирования клиентский сертификат в хранилище локального пользователя для с помощью мастера экспорта сертификатов в хранилище локального компьютера.

Примечание Если сертификат клиента уже есть в хранилище локального компьютера или если сертификат клиента можно установить непосредственно в хранилище локального компьютера в качестве Шаг 1, перейдите к шагу 4. Тем не менее если при выполнении шага 3, необходимо затем вернуться на шаге 2, чтобы Предоставьте доступ к сертификату клиента.

Чтобы скопировать сертификат клиента на локальном хранилище компьютера, выполните следующие действия:
  1. Нажмите кнопку Начало, нажмите кнопку Запустить, тип MMC, а затем нажмите кнопку ОК.
  2. На Файл меню, нажмите кнопку Добавление и удаление оснастки, а затем нажмите кнопку Добавить.
  3. В Добавить изолированные оснастки диалоговое окно Выберите Сертификаты, нажмите кнопку Добавить, нажмите кнопку Учетная запись компьютера, нажмите кнопку Далее, а затем нажмите кнопку Окончание.
  4. В Добавить изолированные оснастки диалоговое окно Выберите Сертификаты, нажмите кнопку Добавить, нажмите кнопку Моей учетной записи пользователя, а затем нажмите кнопку Окончание.
  5. Нажмите кнопку Закрыть, а затем нажмите кнопку ОК.
  6. Чтобы экспортировать клиентский сертификат из хранилища локального пользователя, выполните следующие действия.
    1. Разверните узел Сертификаты - текущий пользователь, Откройте группу Личные, а затем нажмите кнопку Сертификаты.
    2. Щелкните правой кнопкой мыши клиентский сертификат, нажмите кнопку Все Задачи, нажмите кнопку Экспорт, а затем нажмите кнопку Далее.
    3. Если Да, экспортировать закрытый ключ Параметр недоступно, ASP.NET веб-приложение не может использовать сертификат клиента. Необходимо получить другой сертификат клиента. Для этого следуйте инструкциям в шаге 1 и 2. В противном случае нажмите кнопку Да, Экспорт закрытого ключа, а затем нажмите кнопку Далее два раз.
    4. В Пароль поле и в Подтверждение пароля Введите пароль и выберите команду Далее.
    5. В Имя файла Введите файл имя. Нажмите кнопку Далее, а затем нажмите кнопку Окончание.
    6. В Мастер экспорта сертификатовдиалоговое окно, нажмите кнопку ОК.
  7. Для импорта сертификата клиента в хранилище локального компьютера, выполните следующие действия.
    1. Разверните узел Сертификаты (локальный компьютер), и затем разверните узел Личные.
    2. Щелкните правой кнопкой мыши Сертификаты, нажмите кнопку Все задач, нажмите кнопку Импорт, а затем нажмите кнопку Далее.
    3. В Имя файла Введите файл имя, которое указано в шаге 6e и нажмите кнопку Далее.
    4. В Пароль Введите пароль в пункте 6 d и нажмите кнопку Далее два раз.
    5. Нажмите кнопку Окончание, а затем нажмите кнопку ОК.

Шаг 4: Установите корневой сертификат центра сертификации

Если сертификат клиента уже подписан внешние Центр сертификации, например VeriSign, или если вы уже установили корень сертификат центра сертификации, можно пропустить шаг 4.

По умолчанию Windows содержит корневые сертификаты многих внешних Уже предустановленным в доверенных корневых центров сертификации Хранилище сертификатов.
Убедитесь, что установлен корневой сертификат
Чтобы убедиться, что корень установить сертификат ЦС, выполните следующие действия:
  1. Нажмите кнопку Начало, нажмите кнопку Запустить, тип MMC, а затем нажмите кнопку ОК.
  2. На Файл меню, нажмите кнопку Добавление и удаление оснастки, а затем нажмите кнопку Добавить.
  3. В Добавить изолированные оснастки диалоговое окно Выберите Сертификаты, нажмите кнопку Добавить, нажмите кнопку Учетная запись компьютера, нажмите кнопку Далее, а затем нажмите кнопку Окончание.
  4. Нажмите кнопку Закрыть, а затем нажмите кнопку ОК.
  5. Разверните узел Сертификаты (локальный компьютер), Откройте группу Доверенные корневые центры сертификации, а затем нажмите кнопку Сертификаты.
  6. В правой части окна подтверждения, указан корневой сертификат ЦС, который нужно использовать.
Установка корневого сертификата
Если корневой сертификат ЦС, который требуется использовать не в списке, необходимо установить корневой сертификат. Если корневой сертификат ЦС, который нужно использовать был выдан вам в файле сертификата например CER-файл, файл .der или PFX-файл, выполните следующие действия.
  1. Разверните узел Сертификаты (локальный компьютер), Щелкните правой кнопкой мыши Доверенные корневые центры сертификации, нажмите кнопку Все задачи, а затем нажмите кнопку Импорт.
  2. В Мастер импорта сертификатовдиалоговое окно, нажмите кнопку Далее, а затем в Файл ИМЯ Введите имя файла сертификата и нажмите кнопку Далее два раза.
  3. Нажмите кнопку Окончание, а затем нажмите кнопку ОК.
Запрашивать корневой сертификат
Если центр сертификации, который необходимо использовать включается в базу данных установки служб сертификации Microsoft, вы можете запросить корневого сертификата. Чтобы сделать это, выполните следующие действия.
  1. В обозревателе Internet Explorer посетите веб-узле ЦС. Например, если сервер центра сертификации с именем CAServer, посетите следующий веб-узел:
    http://CAServer/certsrv
  2. Нажмите кнопку Загрузите ЦС сертификатов, сертификатов цепь или CRL, а затем нажмите кнопку Загрузите ЦС Сертификат.
  3. В Загрузка файла диалоговое окно, нажмите кнопку Сохранить.
  4. В Сохранить как диалоговое окно введите место, где нужно сохранить файл сертификата и нажмите кнопку Сохранить.
  5. После сохранения файла корневой сертификат с помощью Следуйте инструкциям в разделе «Установить корневой сертификат» для установки файла сертификата в Доверенные корневые центры сертификации хранения.

Вызов веб-службы

После установки сертификата клиента в любом хранилище локального компьютера или локального пользователя, можно открыть клиентский сертификат из ASP.NET для вызова веб-службы. Действия, необходимые для доступа к клиентским сертификатом одинаковы для приложения Windows Forms или веб-приложения ASP.NET Web приложения.

Если вы используете.NET Framework 1.1, необходимо сначала DER-шифрованный файл экспорта ключа. Поскольку необходимо экспортировать ключ System.Security.Cryptography.X509Certificates.x509certificate класс содержит методы для прямой доступ к сведения сертификата из хранилища сертификатов. Таким образом приложению необходимо ознакомиться с подробностями сертификат от DER-шифрованный файл.

Примечание Расширений веб-служб 2.0 для Microsoft.NET (WSE) предоставляет способ для приложения для получения сведений о сертификате непосредственно из хранилища сертификатов.

В следующем примере C# код показывает, как вызывать веб-службу, передавая сертификат клиента Проверка подлинности.
using System.Security.Cryptography.X509Certificates;
...

  public void CallWebService()
  {
    // TODO: Replace <C:\WSClientCert.cer> with the path of your certificate file.
    string certPath = @"<C:\WSClientCert.cer>";

    // Create an instance of the Web service proxy.
    WebSvc.math mathservice = new WebSvc.math();
    // TODO: Replace <https://wsserver/securemath/math.asmx> with a valid URL.
    mathservice.Url = @"<https://wsserver/securemath/math.asmx>";

    // Create an X509Certificate object from the information 
    // in the certificate export file, and then add the certificate to the 
    // ClientCertificates collection of the Web service proxy.
    mathservice.ClientCertificates.Add(
        X509Certificate.CreateFromCertFile(certPath));

    long lngResult = 0;
    try
    {
      lngResult = mathservice.Add(Int32.Parse(operand1.Text), 
          Int32.Parse(operand2.Text));
      string result = lngResult.ToString();
    }
    catch(Exception ex)
    {
      if(ex is WebException)
      {
        WebException we = ex as WebException;
        WebResponse webResponse = we.Response;
        throw new Exception("Exception calling method. " + ex.Message);
      }
    }
  }

Расширений веб-служб 2.0 для Microsoft.NET

Расширений веб-служб 2.0 для Microsoft.NET (WSE) является Microsoft.NET Библиотека классов для создания веб-служб с помощью новейших веб-служб протоколы. Ниже перечислены эти протоколы.
  • WS-Security
  • WS-SecureConversation
  • WS-Trust.
  • WS-Policy
  • WS-SecurityPolicy
  • WS-адресации
  • WS-вложений
Примечание Не включены в WSE.NET Framework. Чтобы получить WSE, посетите веб-узел корпорации Майкрософт:
http://www.Microsoft.com/downloads/details.aspx?FamilyId = FC5F06C5-821F-41 D 3-A4FE-6C7B56423841
Не нужно использовать один из этих протоколов для доступа к веб-узла Служба, которая требует проверки подлинности сертификата клиента. Тем не менее, может потребоваться использовать Microsoft.Web.Services2.Security.X509 класс. В Microsoft.Web.Services2.Security.X509 класс содержит методы для прямой доступ к клиентский сертификат в хранилище сертификатов. При использовании этих методов не нужно экспортировать сертификат в файл.

В Следующий пример C# кода показано, как найти первый сертификат с именем SecureMathClient в хранилище локального компьютера. Затем этот пример кода использует сертификат для вызова очередь Добавить метод math веб-службы. Math веб-службы требует наличия сертификатов клиента.
...
  // TODO: Replace <SecureMathClient> with the name of the client certificate.
  string certName = "<SecureMathClient>";

  // WSE 2.0 method
  X509CertificateStore store =
    X509CertificateStore.LocalMachineStore(X509CertificateStore.MyStore);
  store.OpenRead();
  // Look for the first certificate that is named SecureMathClient.
  // Look in the local machine store.
  X509CertificateCollection col= 
    (X509CertificateCollection)store.FindCertificateBySubjectString(certName);
  X509Certificate cert =null;
  try
  { 

// This sample obtains the first matching certificate from the collection.
    cert = col[0];
  } 
  catch(Exception ex)
  {
    throw new Exception("Certificate not Found!");
  }

  // Create an instance of the Web service proxy.
  math mathservice = new math();
  // TODO: Replace <https://wsserver/securemath/math.asmx> with a valid URL.
  mathservice.Url = @"<https://wsserver/securemath/math.asmx>";
  mathservice.ClientCertificates.Add(cert);

  long lngResult = 0;
  try
  {
    lngResult = mathservice.Add(Int32.Parse(operand1.Text), 
        Int32.Parse(operand2.Text));
    result.Text = lngResult.ToString();
  }
  catch(Exception ex)
  {
    if(ex is WebException)
    {
      WebException we = ex as WebException;
      WebResponse webResponse = we.Response;
      throw new Exception("Exception calling method. " + ex.Message);
    }
  }

Ссылки

Для получения дополнительных сведений о System.Security.Cryptography.X509Certificates.x509certificate класс, посетите следующий веб-узла Microsoft Developer Network (MSDN) веб-узел:
http://msdn2.Microsoft.com/en-us/library/System.Security.Cryptography.X509Certificates.x509certificate (vs.71) .aspx
Для получения дополнительных сведений о том, как вызвать повышенной безопасности веб-узла с помощью веб-приложения ASP.NET веб-приложение, щелкните следующий номер статьи базы знаний Майкрософт:
817854ИСПРАВИТЬ: ASP.NET веб-приложения сертификат клиента не может доставить на защищенной веб-узел

Свойства

Код статьи: 901183 - Последний отзыв: 19 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft .NET Framework 1.1 на следующих платформах
    • Microsoft Internet Information Services 6.0
    • Microsoft Internet Information Services 5.0
Ключевые слова: 
kbcode kbwebservices kbcertservices kbhowto kbinfo kbmt KB901183 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:901183

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com