Configurando o TLS para executar um aplicativo no Azure
Importante
Os Serviços de Nuvem (clássicos) estão obsoletos para todos os clientes desde 1º de setembro de 2024. Qualquer implantação em execução existente será interrompida e desligada pela Microsoft e os dados serão perdidos permanentemente a partir de outubro de 2024. 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 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 TLS para um aplicativo, deve-se primeiro obter um certificado SSL/TLS assinado por uma autoridade de certificação (AC), um parceiro confiável que emita certificados com essa finalidade. Se ainda não tiver um, você precisará obter um junto a uma empresa que venda certificados SSL/TLS.
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 SSL/TLS de uma autoridade de certificação (AC) 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 AC e pode usar o domínio cloud.net como o 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.
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. 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>
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ê ainda precisa adicionar as informações de certificado ao arquivo de configuração de serviço.
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 você atualizou os arquivos de definição de serviço e de configuração de serviço, empacote a implantação para carregamento no Azure. Caso esteja usando cspack, não use o sinalizador /generateConfigurationFile, pois ele substituirá as informações de certificado inseridas.
Etapa 3: Carregar um certificado
Conecte-se ao Portal do Azure e...
Na seção Todos os recursos do Portal, selecione seu serviço de nuvem.
Selecione Certificados.
Selecione Carregar na parte superior da área de certificados.
Forneça o Arquivo, Senha e selecione 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.
Selecione o URL do site para abrir o navegador da Web.
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.)
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
- Configuração geral do serviço de nuvem.
- Saiba como implantar um serviço de nuvem.
- Configurar um nome de domínio personalizado.
- Gerenciar seu serviço de nuvem.