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


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

Внимание

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

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

Примечание.

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

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

Узнайте , как создать и развернуть облачную службу 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>
    

    Раздел "Сертификаты" определяет имя сертификата, его расположение и имя хранилища, в котором он расположен.

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

    Значение разрешения Description
    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. В разделе портала Все ресурсы выберите облачную службу.

    Публикация облачной службы

  2. Выберите Сертификаты.

    Щелкните значок сертификатов

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

    Щелкните элемент

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

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

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

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

    Щелкните URL-адрес сайта

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

    Примечание.

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

    Предварительный просмотр сайта

    Совет

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

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

Следующие шаги