Configurando o TLS para executar um aplicativo no Azure

Importante

Os Serviços de Nuvem (clássicos) agora foram preteridos para novos clientes e serão desativados em 31 de agosto de 2024 para todos os clientes. As novas implantações devem usar o novo modelo de implantação baseado no Azure Resource Manager Serviços de Nuvem do Azure (suporte estendido) .

Protocolo TLS, antes conhecido como criptografia SSL (Secure Socket Layer), é o método mais 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.

Observação

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

Essa tarefa usa uma implantação de produção. Informações sobre o uso de uma implantação de preparo são fornecidas no final deste tópico.

Leia isto primeiro se você ainda não tiver criado um serviço de nuvem.

Etapa 1: obter um certificado TLS/SSL

Para configurar TLS para um aplicativo, deve-se primeiro obter um certificado TLS/SSL assinado por uma Autoridade de Certificação (CA), um terceiro confiável que emita certificados com essa finalidade. Se ainda não tiver um, será necessário obtê-lo junto a uma empresa que venda 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 Troca de Informações Pessoais (.pfx).
  • O nome de 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 quando acessar o serviço. Quando você solicitar um certificado de uma autoridade de certificação, o nome de assunto do certificado deve corresponder ao nome de domínio personalizado usado para acessar o aplicativo. Por exemplo, se o nome de domínio personalizado for contoso.com, você pode solicitar um certificado da autoridade de certificação para *.contoso.com ou www.contoso.com.
  • O certificado deve usar, no mínimo, uma 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 na qual o nome comum (CN) utilizado no certificado é sslexample.cloudapp.net.

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

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

O aplicativo deve ser configurado para usar o certificado, e um ponto de extremidade HTTPS deve ser adicionado. Dessa forma, os arquivos de definição e configuração do serviço precisam ser atualizados.

  1. No ambiente de desenvolvimento, abra o arquivo de definição de serviço (CSDEF), adicione uma seção Certificados dentro da seção WebRole e inclua as seguintes informações sobre o certificado (e os 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, seu local e o nome do repositório no qual está localizado.

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

    Valor da permissão Descrição
    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 dentro da seção Pontos de extremidade 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 de Associação dentro da seção Sites. Este elemento adiciona uma associação HTTPS para mapear o ponto de extremidade para o site:

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

    Todas as alterações obrigatórias no arquivo de definição de serviço foram concluídas, mas você continua precisando adicionar as informações de certificado ao arquivo de configuração de serviço.

  4. Em seu 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 de 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 os arquivos de definição e configuração do serviço foram atualizados, empacote a implantação para carregamento no Azure. Se você está usando cspack, não use o sinalizador /generateConfigurationFile, pois ele substituirá as informações de certificado que você acabou de inserir.

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

    Publicar o serviço de nuvem

  2. Clique em Certificados.

    Clique no ícone de certificados

  3. Clique em Carregar na parte superior da área de certificados.

    Clique no item de menu Carregar

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

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

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

  1. Clique na URL do Site para abrir o navegador da Web.

    Clique na URL do site

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

    Observação

    Se estiver usando um certificado autoassinado, ao navegar até um ponto de extremidade HTTPS associado com o certificado autoassinado, você poderá ver um erro de certificado no navegador. O uso de um certificado assinado por uma certificação confiável elimina esse problema; enquanto isso, você pode ignorar o erro. (Outra opção é adicionar o certificado autoassinado ao repositório de certificado da autoridade de certificado confiável do usuário.)

    Visualização de site

    Dica

    Se quiser usar TLS em uma implantação de preparação em lugar de uma implantação da produção, será necessário determinar primeiro o URL usado na implantação de preparação. Após o serviço de nuvem ter sido implantado, a URL para o ambiente de preparo será determinada pelo GUID da ID da Implantação neste formato: https://deployment-id.cloudapp.net/

    Criar um certificado com o nome comum (CN) igual à URL baseada em GUID (por exemplo, 328187776e774ceda8fc57609d404462.cloudapp.net). Use o portal para adicionar o certificado ao serviço de nuvem preparado. Em seguida, adicione as informações de certificado aos arquivos CSDEF e CSCFG, reempacote seu aplicativo e atualize a implantação preparada usando o novo pacote.

Próximas etapas