Настройка TLS для приложения в Azure

Важно!

Облачные службы (классическая версия) объявлены устаревшими для новых клиентов. Их поддержка будет полностью прекращена 31 августа 2024 года. Для новых развертываний следует использовать Облачные службы Azure с расширенной поддержкой . Это новая модель развертывания на основе Azure Resource Manager.

Протокол шифрования TLS, который ранее назывался SSL, является самым распространенным способом защиты данных, передаваемых через Интернет. Эта общая задача включает определение конечной точки HTTPS для веб-роли и передачу TLS/SSL-сертификата, чтобы обеспечить безопасность приложения.

Примечание

Процедуры в этом задании применяются для облачных служб Azure. Информацию о процедурах для служб приложений см. в этом разделе.

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

Если вы еще не создали облачную службу, сначала прочтите эту статью .

Шаг 1. Получение TLS/SSL-сертификата

Чтобы настроить протокол TLS для приложения, сначала необходимо получить TLS/SSL-сертификат, подписанный центром сертификации, т. е. доверенным сторонним поставщиком, который выдает сертификаты для этой цели. Если у вас еще нет сертификата, нужно получить его в компании, которая продает TLS/SSL-сертификаты.

Для TLS/SSL-сертификатов в Azure действуют следующие требования:

  • Сертификат должен содержать открытый ключ.
  • Сертификат должен быть создан для обмена ключами, которые можно экспортировать в файл обмена личной информацией (PFX-файл).
  • Имя субъекта сертификата должно совпадать с именем домена, которое используется для обращения к облачной службе. Вы не можете получить от центра сертификации TLS/SSL-сертификат для домена cloudapp.net. Необходимо получить имя пользовательского домена для использования при получении доступа к службе. При запросе сертификата из ЦС имя субъекта сертификата должно соответствовать имени личного домена, который используется для доступа к вашему приложению. Например, если вы используете домен contoso.com, необходимо запросить сертификат из центра сертификации для *.contoso.com или www.contoso.com.
  • Сертификат должен использовать как минимум 2048-разрядное шифрование.

В целях тестирования вы можете создать и использовать самозаверяющий сертификат. Самозаверяющий сертификат не прошел аутентификацию через ЦС, и можно использовать домен cloudapp.net в качестве URL-адреса веб-сайта. Например, в приведенной ниже задаче используется самозаверяющий сертификат, в котором задано общее имя sslexample.cloudapp.net.

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

Шаг 2. Изменение файлов определения службы и конфигурации

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

  1. В среде разработки откройте файл определения службы (CSDEF), добавьте раздел Certificates внутри раздела WebRole и добавьте следующие сведения о сертификате (и промежуточных сертификатах).

     <WebRole name="CertificateTesting" vmsize="Small">
     ...
         <Certificates>
             <Certificate name="SampleCertificate"
                         storeLocation="LocalMachine"
                         storeName="My"
                         permissionLevel="limitedOrElevated" />
             <!-- IMPORTANT! Unless your certificate is either
             self-signed or signed directly by the CA root, you
             must include all the intermediate certificates
             here. You must list them here, even if they are
             not bound to any endpoints. Failing to list any of
             the intermediate certificates may cause hard-to-reproduce
             interoperability problems on some clients.-->
             <Certificate name="CAForSampleCertificate"
                         storeLocation="LocalMachine"
                         storeName="CA"
                         permissionLevel="limitedOrElevated" />
         </Certificates>
     ...
     </WebRole>
    

    В разделе Certificates определяется имя сертификата, его расположение и имя хранилища, в котором он находится.

    Разрешениям (атрибутуpermissionLevel) можно присвоить одно из приведенных ниже значений.

    Значение разрешения Описание
    limitedOrElevated (По умолчанию). Все процессы роли могут получить доступ к закрытому ключу.
    elevated Доступ к закрытому ключу могут получить только процессы повышенного уровня.
  2. В файле определения службы добавьте элемент InputEndpoint в раздел Endpoints, чтобы включить протокол HTTPS.

     <WebRole name="CertificateTesting" vmsize="Small">
     ...
         <Endpoints>
             <InputEndpoint name="HttpsIn" protocol="https" port="443"
                 certificate="SampleCertificate" />
         </Endpoints>
     ...
     </WebRole>
    
  3. В файле определения службы добавьте элемент Binding в раздел Sites. Этот элемент добавляет привязку HTTPS для сопоставления конечной точки с вашим сайтом:

     <WebRole name="CertificateTesting" vmsize="Small">
     ...
         <Sites>
             <Site name="Web">
                 <Bindings>
                     <Binding name="HttpsIn" endpointName="HttpsIn" />
                 </Bindings>
             </Site>
         </Sites>
     ...
     </WebRole>
    

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

  4. В файле конфигурации службы (CSCFG-файл) ServiceConfiguration.Cloud.cscfg в разделе Certificates добавьте значения из своего сертификата. Следующий пример кода содержит в разделе Certificates все значения, кроме значения thumbprint.

     <Role name="Deployment">
     ...
         <Certificates>
             <Certificate name="SampleCertificate"
                 thumbprint="9427befa18ec6865a9ebdc79d4c38de50e6316ff"
                 thumbprintAlgorithm="sha1" />
             <Certificate name="CAForSampleCertificate"
                 thumbprint="79d4c38de50e6316ff9427befa18ec6865a9ebdc"
                 thumbprintAlgorithm="sha1" />
         </Certificates>
     ...
     </Role>
    

(В этом примере в качестве алгоритма отпечатка используется SHA1. Укажите соответствующее значение для алгоритма отпечатка сертификата.)

Теперь, когда файлы определения службы и конфигурации службы обновлены, создайте пакет развертывания для передачи в Azure. Если используется cspack, не используйте флаг /generateConfigurationFile, так как это приведет к перезаписи сведений о сертификате, которые вы только что добавили.

Шаг 3. Отправка сертификата

Подключитесь к порталу Azure и выполните следующие действия.

  1. В разделе портала Все ресурсы выберите облачную службу.

    Publish your cloud service

  2. Щелкните Сертификаты.

    Click the certificates icon

  3. Щелкните Отправить в верхней части области сертификатов.

    Click the Upload menu item

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

Шаг 4. Подключение к экземпляру роли с использованием HTTPS

Теперь, когда развертывание готово и работает в Azure, вы можете подключиться к нему, используя HTTPS.

  1. Щелкните URL-адрес сайта, чтобы открыть веб-браузер.

    Click the Site URL

  2. В веб-браузере измените ссылку, указав https вместо http, и перейдите на страницу.

    Примечание

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

    Site preview

    Совет

    Если вы хотите использовать TLS для промежуточного развертывания вместо производственного, вам нужно сначала определить URL-адрес, используемый для промежуточного развертывания. После развертывания облачной службы URL-адрес промежуточной среды определяется по идентификатору развертыванияhttps://deployment-id.cloudapp.net/ GUID и имеет следующий формат:

    Создайте сертификат с общим именем, значение которого равно URL-адресу на основе GUID (например, 328187776e774ceda8fc57609d404462.cloudapp.net). С помощью портала добавьте этот сертификат в промежуточную облачную службу. Затем добавьте сведения об этом сертификате в CSDEF- и CSCFG-файлы, перепакуйте приложение и обновите промежуточное развертывание для использования нового пакета.

Дальнейшие действия