Configurando o TLS para um aplicativo no Azure

Importante

Os Serviços na Nuvem (clássicos) foram preteridos para todos os clientes a partir de 1º de setembro de 2024. Todas as implantações em execução existentes serão interrompidas e encerradas pela Microsoft e os dados serão perdidos permanentemente a partir de outubro de 2024. Novas implantações devem usar o novo modelo de implantação baseado no Azure Resource Manager Serviços de Nuvem do Azure (suporte estendido).

Transport Layer Security (TLS), anteriormente conhecida como criptografia SSL (Secure Socket Layer), é o método mais comumente usado para proteger dados enviados pela Internet. Esta tarefa comum discute como especificar um ponto de extremidade HTTPS para uma função Web e como carregar um certificado TLS/SSL para proteger seu aplicativo.

Nota

Os procedimentos nesta tarefa aplicam-se aos Serviços de Nuvem do Azure; para Serviços de Aplicativos, consulte isto.

Esta tarefa usa uma implantação de produção. Informações sobre como usar uma implantação de preparo são fornecidas no final deste artigo.

Leia Como criar e implantar um Serviço de Nuvem do Azure (clássico) primeiro se você ainda não criou um serviço de nuvem.

Etapa 1: Obter um certificado TLS/SSL

Para configurar o TLS para um aplicativo, primeiro você precisa obter um certificado TLS/SSL assinado por uma Autoridade de Certificação (CA), um parceiro confiável que emite certificados para essa finalidade. Se você ainda não tem um, você precisa obter um de uma empresa que vende certificados TLS / SSL.

O certificado deve atender aos seguintes requisitos para certificados TLS/SSL no Azure:

  • O certificado deve conter uma chave pública.
  • O certificado deve ser criado para troca de chaves, exportável para um arquivo de troca de informações pessoais (.pfx).
  • O nome do assunto do certificado deve corresponder ao domínio usado para acessar o serviço de nuvem. Não é possível obter um certificado TLS/SSL de uma autoridade de certificação (CA) para o domínio cloudapp.net. Você deve adquirir um nome de domínio personalizado para usar ao acessar seu serviço. Quando você solicita um certificado de uma autoridade de certificação, o nome do assunto do certificado deve corresponder ao nome de domínio personalizado usado para acessar seu aplicativo. Por exemplo, se o seu nome de domínio personalizado for contoso.com você solicitaria um certificado da sua CA para *.contoso.com ou www.contoso.com.
  • O certificado deve usar um mínimo de criptografia de 2048 bits.

Para fins de teste, você pode criar e usar um certificado autoassinado. Um certificado autoassinado não é autenticado por meio de uma autoridade de certificação e pode usar o domínio cloudapp.net como a URL do site. Por exemplo, a tarefa a seguir usa um certificado autoassinado no qual o nome comum (CN) usado no certificado é sslexample.cloudapp.net.

Em seguida, você deve incluir informações sobre o certificado em seus arquivos de definição e configuração de serviço.

Etapa 2: Modificar os arquivos de definição e configuração do serviço

Seu aplicativo deve ser configurado para usar o certificado e um ponto de extremidade HTTPS deve ser adicionado. Como resultado, os arquivos de definição e configuração de serviço precisam ser atualizados.

  1. Em seu ambiente de desenvolvimento, abra o arquivo de definição de serviço (CSDEF), adicione uma seção Certificados na seção WebRole e inclua as seguintes informações sobre o certificado (e certificados intermediários):

    <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>
    

    A seção Certificados define o nome do nosso certificado, sua localização e o nome da loja onde ele está localizado.

    As permissões (permissionLevel atributo) podem ser definidas como um dos seguintes valores:

    Valor da permissão Description
    limitedOrElevated (Padrão) Todos os processos de função podem acessar a chave privada.
    elevado Somente processos elevados podem acessar a chave privada.
  2. No arquivo de definição de serviço, adicione um elemento InputEndpoint na seção Endpoints para habilitar HTTPS:

    <WebRole name="CertificateTesting" vmsize="Small">
    ...
        <Endpoints>
            <InputEndpoint name="HttpsIn" protocol="https" port="443"
                certificate="SampleCertificate" />
        </Endpoints>
    ...
    </WebRole>
    
  3. No arquivo de definição de serviço, adicione um elemento Binding na seção Sites. Este elemento adiciona uma associação HTTPS para mapear o ponto de extremidade para seu site:

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

    Todas as alterações necessárias no arquivo de definição de serviço foram concluídas, mas você ainda precisa adicionar as informações do certificado ao arquivo de configuração do serviço.

  4. No arquivo de configuração de serviço (CSCFG), ServiceConfiguration.Cloud.cscfg, adicione um valor de Certificados com o do seu certificado. O exemplo de código a seguir fornece detalhes da seção Certificados, exceto para o valor da impressão digital.

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

(Este exemplo usa sha1 para o algoritmo de impressão digital. Especifique o valor apropriado para o algoritmo de impressão digital do certificado.)

Agora que você atualizou os arquivos de definição e configuração de serviço, empacote sua implantação para carregar no Azure. Se você estiver usando cspack, não use o sinalizador /generateConfigurationFile , pois isso substitui as informações do certificado inseridas.

Passo 3: Carregar um certificado

Conecte-se ao portal do Azure e...

  1. Na seção Todos os recursos do Portal, selecione seu serviço de nuvem.

    Publique o seu serviço na nuvem

  2. Selecione Certificados.

    Clique no ícone de certificados

  3. Selecione Carregar na parte superior da área de certificados.

    Clique no item de menu Carregar

  4. Forneça o Arquivo, Senha e selecione Carregar na parte inferior da área de entrada de dados.

Etapa 4: Conectar-se à instância de função usando HTTPS

Agora que sua implantação está em execução no Azure, você pode se conectar a ela usando HTTPS.

  1. Selecione o URL do site para abrir o navegador da Web.

    Clique no URL do Site

  2. No navegador da Web, modifique o link para usar https em vez de http e visite a página.

    Nota

    Se você estiver usando um certificado autoassinado, quando navegar para um ponto de extremidade HTTPS associado ao certificado autoassinado, poderá ver um erro de certificado no navegador. Usar um certificado assinado por uma autoridade de certificação confiável elimina esse problema; Enquanto isso, você pode ignorar o erro. (Outra opção é adicionar o certificado autoassinado ao armazenamento de certificados da autoridade de certificação confiável do usuário.)

    Pré-visualização do site

    Gorjeta

    Se quiser usar o TLS para uma implantação de preparo em vez de uma implantação de produção, primeiro você precisará determinar a URL usada para a implantação de preparo. Depois que o serviço de nuvem for implantado, a URL para o ambiente de preparo será determinada pelo GUID da ID de Implantação neste formato:https://deployment-id.cloudapp.net/

    Crie um certificado com o nome comum (CN) igual ao URL baseado em GUID (por exemplo, 328187776e774ceda8fc57609d404462.cloudapp.net). Use o portal para adicionar o certificado ao seu serviço de nuvem em estágios. Em seguida, adicione as informações do certificado aos arquivos CSDEF e CSCFG, reempacote seu aplicativo e atualize sua implantação em estágios para usar o novo pacote.

Próximos passos