Экспорт (0) Печать
Развернуть все

Настройка SSL-сертификата для конечной точки HTTPS

Обновлено: Февраль 2014 г.

Чтобы добавить конечную точку HTTPS к роли в службе Windows Azure и сопоставить ее с SSL-сертификатом, необходимо выполнить следующие действия.

  1. Получите SSL-сертификат в центре сертификатов (CA). Дополнительные сведения см. в разделе Получение SSL-сертификата.

  2. Добавьте сертификат к хранилищу сертификатов для размещенной службы. Дополнительные сведения см. в разделе Передайте сертификат в Windows Azure.

  3. Добавьте отпечаток сертификата в файл конфигурации службы. Дополнительные сведения см. в разделе Добавьте отпечаток сертификата в файл конфигурации службы.

  4. Обновите файл определения службы, чтобы идентифицировать сертификат для размещенной службы. Дополнительные сведения см. в разделе Добавьте сертификат в файл определения службы.

  5. Настройте конечную точку HTTPS в файле определения службы и свяжите ее с сертификатом. Дополнительные сведения см. в разделе Настройка конечной точки HTTPS.

  6. Настройте запись CNAME для имени домена, для которого выпущен SSL-сертификат, чтобы направить трафик к службе. Дополнительные сведения о настройке CNAME см. в разделе Настройка пользовательского имени домена для облачной службы Windows Azure.

При тестировании конечной точки HTTPS в среде разработки вся проверка подлинности производится с помощью самозаверяющего сертификата для 127.0.0.1. Дополнительные сведения см. в подразделе Тестирование конечной точки HTTPS в эмуляторе вычислений далее в этом разделе.

SSL-сертификат, который используется для защиты конечной точки в Windows Azure, должен иметь следующие функции.

  • Сертификат должен содержать закрытый ключ.

  • Целью сертификата должна быть проверка подлинности на сервере.

  • Имя субъекта для сертификата должно соответствовать имени домена, используемого для доступа к службе.

  • Требует минимального размера ключа шифрования 2048 бит.

noteПримечание
При использовании в разработке службы инструментов Windows Azure для Microsoft Visual Studio можно настроить конечные точки HTTPS с помощью страниц свойств для роли.

Windows Azure предоставляет безопасное хранилище сертификатов, где можно хранить сертификаты для размещенной службы. При ассоциировании сертификата со службой и отправке сертификата в хранилище Windows Azure автоматически разворачивает сертификат на виртуальных машинах, на которых запущены экземпляры ролей. Дополнительные сведения о хранилище сертификатов см. в разделе Управление сертификатами.

Чтобы отправить сертификат в хранилище сертификатов, выполните шаги, описанные в разделе Добавление нового сертификата в хранилище сертификатов.

Отпечаток сертификата в файле конфигурации службы связывает логическое имя сертификата, указанное в файле определения службы, с сертификатом в хранилище. Сохранение отпечатка в файле конфигурации службы обеспечивает раздельное хранение данных сертификата и пакета службы. Это позволяет вам или ИТ-менеджеру обновлять сертификат без необходимости заново развертывать службу.

Чтобы указать сертификат и его отпечаток в файле конфигурации службы, измените файл конфигурации и добавьте коллекцию Certificates к записи для роли. Добавьте элемент Certificate к коллекции Certificates и укажите логическое имя сертификата. Следует использовать то же имя, что было указано в файле определения службы. Наконец, укажите отпечаток сертификата и алгоритм, использованный для формирования отпечатка, как показано в этом примере:


<ServiceConfiguration serviceName="MyService">
  <Role name=" MyWorkerRole">
    <Instances count="5" />    
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <Certificates>
      <Certificate name="MySSLCert" thumbprint="8420C0773626D5137A820156EB5BD9D6FDB9BEE9" thumbprintAlgorithm="sha1"/>
    </Certificates>  
  </Role>
</ServiceConfiguration>

Дополнительные сведения о том, как получить отпечаток сертификата, см. в подразделе «Создание сертификата x.509 v3» раздела Создание сертификата службы для Windows Azure.

Чтобы связать сертификат с конечной точкой HTTPS, укажите логическое имя сертификата, которое будет использоваться для определения его в службе. Необходимо также обозначить, где сертификат хранится на виртуальной машине, на которой выполняется экземпляр роли.

В файле определения службы добавьте элемент Certificates для определения роли. В коллекции Certificates добавьте запись для своего сертификата, как показано в этом примере:


  <WorkerRole name="MyWorkerRole" vmsize="Small">
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <LocalResources>
      . . .
    </LocalResources>
    <Endpoints>
      . . .
    </Endpoints>
    <Certificates>
      <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
  </WorkerRole>
</ServiceDefinition>

В этом примере местоположение хранилища имеет значение LocalMachine, а имя хранилища имеет значение My. Эти два атрибута показывают, куда на виртуальной машине будет установлен сертификат (определяется здесь как MySSLCert).

Для атрибута сертификата name можно выбрать любое удобное имя. Это имя будет использоваться только для указания сертификата в определении конечной точки HTTPS и в файле конфигурации службы.

Чтобы добавить конечную точку HTTPS к роли, измените файл определения службы и добавьте элемент InputEndpoint в коллекцию Endpoints для роли. Укажите имя для конечной точки, протокол (HTTPS) и порт. Выберите логическое имя для сертификата, который вы определили в коллекции роли Certificates.

В следующей процедуре показано, как добавить вводную конечную точку HTTP для веб-роли, которая прослушивает порт 80 и определяет также конечную точку HTTPS, которая прослушивает порт 443.

  1. Откройте файл ServiceDefinition.csdef для своей службы в текстовом редакторе.

  2. Добавьте элемент коллекции Certificates, который содержит элемент Certificate, в элемент роли для роли, которая должна поддерживать SSL. Установите атрибут имени для имени сертификата. Установите атрибуты storeLocation и storeName, чтобы указать расположение сертификата на виртуальной машине.

        
    <Certificates>
       <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
    
    
  3. Добавьте элемент коллекции Endpoints, который содержит элементы InputEndpoint, в элемент роли для роли, которая должна поддерживать SSL. Установите атрибут certificate конечной точки ввода HttpsIn для сопоставления с именем сертификата, указанным в коллекции сертификатов.

       
    <Endpoints>
       <InputEndpoint name="HttpIn" protocol="http" port="80" />
       <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MySSLCert" />
    </Endpoints>
    
    
  4. Сохраните файл.

Завершенное определение службы будет напоминать следующий пример.


<ServiceDefinition name="MyService">
  <WorkerRole name="MyWorkerRole">
    <ConfigurationSettings>
      . . .
    </ConfigurationSettings>
    <LocalResources>
      . . .
    </LocalResources>
    <Endpoints>
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
      <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MySSLCert" />
    </Endpoints>
    <Certificates>
      <Certificate name="MySSLCert" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
  </WorkerRole>
</ServiceDefinition>

По умолчанию эмулятор вычислений использует самозаверяющий сертификат для IP-адреса 127.0.0.1, которому соответствует localhost. Если возникла проблема при установке или настройке сертификата, настроенного в предыдущих шагах, эмулятор вычислений будет по умолчанию проверять подлинность для этого самозаверяющего сертификата вместо пользовательского сертификата. Если развертывание по умолчанию использует SSL-сертификат для 127.0.0.1, даже если определен другой сертификат, убедитесь, что ваш пользовательский сертификат не имеет ошибок и правильно установлен.

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

При выполнении размещенной службы в эмуляторе вычислений Windows Azure порт SSL может быть установлен на отличный от 443 (часто 444 или 445). Если указанный порт недоступен (443 для конечной точки HTTPS), эмулятор вычислений будет увеличивать номер порта, пока не найдет свободный порт.

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

Для определения того, используется ли порт 443, можно использовать команду NETSTAT в командной строке. Дополнительные сведения о команде NETSTAT см. в разделе Netstat.

При отсутствии сертификата, который был выдан центром сертификации, можно сформировать самозаверяющий сертификат для использования со службой Windows Azure.

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

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

См. также

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

Управление сертификатами

Показ:
© 2014 Microsoft