Configurar o TLS para uma aplicação no Azure

Importante

Serviços Cloud (clássico) foi preterido para novos clientes e será descontinuado a 31 de agosto de 2024 para todos os clientes. As novas implementações devem utilizar o novo modelo de implementação baseado em Resource Manager do Azure Serviços Cloud (suporte alargado).

O Transport Layer Security (TLS), anteriormente conhecido como encriptação SSL (Secure Socket Layer), é o método mais utilizado para proteger os dados enviados pela Internet. Esta tarefa comum descreve como especificar um ponto final HTTPS para uma função Web e como carregar um certificado TLS/SSL para proteger a sua aplicação.

Nota

Os procedimentos nesta tarefa aplicam-se ao Azure Serviços Cloud; para serviços aplicacionais, veja isto.

Esta tarefa utiliza uma implementação de produção. As informações sobre a utilização de uma implementação de teste são fornecidas no final deste tópico.

Leia isto primeiro se ainda não tiver criado um serviço cloud.

Passo 1: Obter um certificado TLS/SSL

Para configurar o TLS para uma aplicação, primeiro tem de obter um certificado TLS/SSL assinado por uma Autoridade de Certificação (AC), um terceiro fidedigno que emite certificados para esta finalidade. Se ainda não tiver um, tem de obter um de uma empresa que vende certificados TLS/SSL.

O certificado tem de cumprir os seguintes requisitos para certificados TLS/SSL no Azure:

  • O certificado tem de conter uma chave pública.
  • O certificado tem de ser criado para troca de chaves, exportável para um ficheiro do Personal Information Exchange (.pfx).
  • O nome do requerente do certificado tem de corresponder ao domínio utilizado para aceder ao serviço cloud. Não é possível obter um certificado TLS/SSL a partir de uma autoridade de certificação (AC) para o domínio cloudapp.net. Tem de adquirir um nome de domínio personalizado para utilizar quando aceder ao seu serviço. Quando pede um certificado de uma AC, o nome do requerente do certificado tem de corresponder ao nome de domínio personalizado utilizado para aceder à sua aplicação. Por exemplo, se o seu nome de domínio personalizado for contoso.com pediria um certificado à SUA AC para *.contoso.com ou www.contoso.com.
  • O certificado tem de utilizar uma encriptação mínima de 2048 bits.

Para fins de teste, pode criar e utilizar um certificado autoassinado. Um certificado autoassinado não é autenticado através de uma AC e pode utilizar o domínio cloudapp.net como URL do site. Por exemplo, a tarefa seguinte utiliza um certificado autoassinado no qual o nome comum (CN) utilizado no certificado é sslexample.cloudapp.net.

Em seguida, tem de incluir informações sobre o certificado na definição do serviço e nos ficheiros de configuração do serviço.

Passo 2: Modificar a definição do serviço e os ficheiros de configuração

A aplicação tem de ser configurada para utilizar o certificado e tem de ser adicionado um ponto final HTTPS. Como resultado, a definição do serviço e os ficheiros de configuração do serviço têm de ser atualizados.

  1. No seu ambiente de desenvolvimento, abra o ficheiro de definição de serviço (CSDEF), adicione uma secção Certificados na secção WebRole e inclua as seguintes informações sobre o certificado (e certificados intermédios):

    <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 secção Certificados define o nome do nosso certificado, a respetiva localização e o nome do arquivo onde está localizado.

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

    Valor de Permissão Descrição
    limitedOrElevated (Predefinição) Todos os processos de função podem aceder à chave privada.
    elevado Apenas os processos elevados podem aceder à chave privada.
  2. No ficheiro de definição de serviço, adicione um elemento InputEndpoint na secção Pontos finais para ativar HTTPS:

    <WebRole name="CertificateTesting" vmsize="Small">
    ...
        <Endpoints>
            <InputEndpoint name="HttpsIn" protocol="https" port="443"
                certificate="SampleCertificate" />
        </Endpoints>
    ...
    </WebRole>
    
  3. No ficheiro de definição de serviço, adicione um elemento Enlace na secção Sites . Este elemento adiciona um enlace HTTPS para mapear o ponto final para o 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 ao ficheiro de definição de serviço foram concluídas; mas, ainda tem de adicionar as informações do certificado ao ficheiro de configuração do serviço.

  4. No ficheiro de configuração do serviço (CSCFG), ServiceConfiguration.Cloud.cscfg, adicione um valor de Certificados com o do certificado. O seguinte exemplo de código fornece detalhes da secção Certificados , exceto o valor thumbprint.

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

(Este exemplo utiliza sha1 para o algoritmo de thumbprint. Especifique o valor adequado para o algoritmo de thumbprint do certificado.)

Agora que a definição do serviço e os ficheiros de configuração do serviço foram atualizados, empacote a implementação para carregamento para o Azure. Se estiver a utilizar cspack, não utilize o sinalizador /generateConfigurationFile , uma vez que irá substituir as informações do certificado que acabou de inserir.

Passo 3: Carregar um certificado

Ligue-se ao portal do Azure e...

  1. Na secção Todos os recursos do Portal, selecione o seu serviço cloud.

    Publicar o seu serviço cloud

  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 Ficheiro, Palavra-passe e, em seguida, clique em Carregar na parte inferior da área de introdução de dados.

Passo 4: ligar à instância de função com HTTPS

Agora que a implementação está em execução no Azure, pode ligar-se à mesma através de HTTPS.

  1. Clique no URL do Site para abrir o browser.

    Clique no URL do Site

  2. No browser, modifique a ligação para utilizar https em vez de http e, em seguida, visite a página.

    Nota

    Se estiver a utilizar um certificado autoassinado, quando navega para um ponto final HTTPS associado ao certificado autoassinado, poderá ver um erro de certificado no browser. A utilização de um certificado assinado por uma autoridade de certificação fidedigna elimina este problema; entretanto, pode ignorar o erro. (Outra opção é adicionar o certificado autoassinado ao arquivo de certificados de autoridade de certificação fidedigna do utilizador.)

    Pré-visualização do site

    Dica

    Se quiser utilizar o TLS para uma implementação de teste em vez de uma implementação de produção, primeiro terá de determinar o URL utilizado para a implementação de teste. Assim que o seu serviço cloud tiver sido implementado, o URL para o ambiente de teste é determinado pelo GUID do ID de Implementaçã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). Utilize o portal para adicionar o certificado ao seu serviço cloud faseado. Em seguida, adicione as informações do certificado aos seus ficheiros CSDEF e CSCFG, volte a empacotar a aplicação e atualize a implementação faseada para utilizar o novo pacote.

Passos seguintes