Поделиться через


Как создать временные сертификаты для использования во время разработки

При разработке безопасной службы или клиента с помощью Windows Communication Foundation (WCF) часто необходимо использовать сертификат X.509 в качестве учетных данных. Обычно этот сертификат является частью цепи сертификатов, корневой центр которых находится в хранилище «Доверенные корневые центры сертификации» на компьютере. Наличие цепи сертификатов позволяет ограничить набор сертификатов, корневой центр которых, как правило, принадлежит организации или подразделению. Для эмуляции этого во время разработки можно создать два сертификата, чтобы выполнить требования безопасности. Первый сертификат является самозаверяющим и помещается в хранилище «Доверенные корневые центры сертификации». Второй сертификат создается из первого и помещается как в хранилище «Личное» на локальном компьютере, так и в хранилище «Личное» текущего пользователя. В данном разделе содержится пошаговое руководство по созданию этих двух сертификатов с использованием средства Certificate Creation Tool (MakeCert.exe), предоставляемого пакетом SDK .NET Framework.

ms733813.Important(ru-ru,VS.100).gif Примечание
Сертификаты, создаваемые средством для создания сертификатов, предоставляются только для проверки. При развертывании службы или клиента убедитесь, что используется соответствующий сертификат, предоставленный центром сертификации. Этот сертификат может предоставляться сервером сертификации Windows Server 2003 организации или третьей стороны.

По умолчанию средство Certificate Creation Tool (MakeCert.exe) создает сертификаты, корневой центр которых называется «Корневое агентство». Поскольку «Корневое агентство» не является хранилищем «Доверенные корневые центры сертификации», сертификаты не защищены. Создание самозаверяющего сертификата, помещенного в хранилище «Доверенные корневые центры сертификации», позволяет создать среду разработки, более точно моделирующую среду развертывания.

Дополнительные сведения созданию и использованию сертификатов см. в разделе Работа с сертификатами. Дополнительные сведения использованию сертификата в качестве учетных данных см. в разделе Защита служб и клиентов. Руководство по использованию технологии Microsoft Authenticode см. в разделе Обзор и учебники по Authenticode.

Создание самозаверяющего сертификата корневого центра и экспорт закрытого ключа

  1. Используйте средство MakeCert.exe со следующими коммутаторами.

    1. -n subjectName. Задает имя субъекта. Согласно правилам, к имени субъекта добавляется префикс "CN = " для "Common Name".

    2. -r. Указывает, что сертификат самозаверяющий.

    3. -sv privateKeyFile. Указывает файл, содержащий контейнер закрытого ключа.

    Например, следующая команда создает самозаверяющий сертификат с именем субъекта "CN=TempCA".

    makecert -n "CN=TempCA" -r -sv TempCA.pvk TempCA.cer
    

    Будет предложено указать пароль для защиты закрытого ключа. Этот пароль необходим при создании сертификата, подписанного этим корневым сертификатом.

Создание нового сертификата, подписанного сертификатом корневого центра

  1. Используйте средство MakeCert.exe со следующими коммутаторами.

    1. -sk subjectKey. Расположение контейнера ключей субъекта, содержащего закрытый ключ. Если контейнер ключей не существует, он будет создан. Если ни один из параметров (-sk и sv) не используется, контейнер ключей с именем JoeSoft создается по умолчанию.

    2. -n subjectName. Задает имя субъекта. Согласно правилам, к имени субъекта добавляется префикс "CN = " для "Common Name".

    3. -iv issuerKeyFile. Задает файл закрытого ключа издателя.

    4. -ic issuerCertFile. Задает расположение сертификата издателя.

    Например, следующая команда создает сертификат, подписанный сертификатом корневого центра TempCA, с именем субъекта "CN=SignedByCA", используя закрытый ключ издателя.

    makecert -sk SignedByCA -iv TempCA.pvk -n "CN=SignedByCA" -ic TempCA.cer SignedByCA.cer -sr currentuser -ss My
    

Установка сертификата в хранилище «Доверенные корневые центры сертификации»

После создания самозаверяющего сертификата его можно установить в хранилище «Доверенные корневые центры сертификации». Компьютер доверяет любым сертификатам, подписанным этим сертификатом в этой точке. Поэтому удалите сертификат из хранилища, если он больше не требуется. При удалении этого сертификата корневого центра все другие сертификаты, подписанные им, становятся неавторизованными. Сертификаты корневого центра представляют собой лишь механизм, с помощью которого при необходимости можно ограничить группу сертификатов. Например, в одноранговых приложениях обычно нет необходимости использовать корневой центр, поскольку идентификация отдельного элемента просто доверяется в предоставленном с ним сертификате.

Установка самозаверяющего сертификата в хранилище «Доверенные корневые центры сертификации»

  1. Откройте оснастку сертификата. Дополнительные сведения см. в разделе Как просматривать сертификаты с помощью оснастки консоли MMC.

  2. Откройте папку, чтобы сохранить сертификат: Локальный компьютер либо Текущий пользователь.

  3. Откройте папку Доверенные корневые центры сертификации.

  4. Щелкните правой кнопкой мыши папку Сертификаты, выберите пункт Все задачи, а затем выберите Импортировать.

  5. Следуйте инструкциям мастера на экране, чтобы импортировать TempCa.cer в хранилище.

Использование сертификатов с WCF

После настройки временных сертификатов их можно использовать для разработки решений WCF, задающих сертификаты как тип учетных данных клиента. Например, в следующей конфигурации XML в качестве типа учетных данных клиента задается безопасность сообщения и сертификат.

Задание сертификата как типа учетных данных клиента

  • В файле конфигурации для службы используйте следующий XML, чтобы настроить режим безопасности сообщения и задать тип учетных данных клиента для сертификата.

    <bindings>     
      <wsHttpBinding>
        <binding name="CertificateForClient">
          <security>
            <message clientCredentialType="Certificate" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    

В файле конфигурации для клиента используйте следующий XML для указания того, что сертификат найден в хранилище пользователя и может быть найден посредством поиска значения "CohoWinery" в поле SubjectName.

<behaviors>
  <endpointBehaviors>
    <behavior name="CertForClient">
      <clientCredentials>
        <clientCertificate findValue="CohoWinery" x509FindType="FindBySubjectName" />
       </clientCredentials>
     </behavior>
   </endpointBehaviors>
</behaviors>

Дополнительные сведения об использовании сертификатов в WCF см. в разделе Работа с сертификатами.

Безопасность

Не забудьте удалить любые временные сертификаты корневого центра из папки Доверенные корневые центры сертификации и папки Личное, щелкнув правой кнопкой мыши сертификат и выбрав Удалить.

См. также

Задачи

Как просматривать сертификаты с помощью оснастки консоли MMC

Основные понятия

Работа с сертификатами

Другие ресурсы

Защита служб и клиентов