Habilitar a comunicação HTTPS nos Serviços de Nuvem do Azure (suporte estendido)
Artigo
A comunicação com os Serviços de Nuvem do Microsoft Azure (suporte estendido) é feita usando o protocolo HTTPS (Hypertext Transfer Protocol Secure). Este artigo discute como habilitar a comunicação HTTPS para Serviços de Nuvem (suporte estendido).
As etapas gerais para implantar um projeto de Serviços de Nuvem (suporte estendido) no Azure são as seguintes:
Prepare seu certificado.
Configurar seu projeto.
Empacote o arquivo de projeto nos arquivos de definição de serviço (.csdef), configuração de serviço (.cscfg) e pacote de serviço (.cspkg) do serviço de nuvem.
Altere a configuração do recurso Serviços de Nuvem (suporte estendido), se necessário. Por exemplo, você pode fazer qualquer uma das seguintes modificações:
Atualize a URL do pacote.
Defina a configuração de URL.
Atualize a configuração de segredos do sistema operacional.
Implante e atualize o novo projeto no Azure.
Observação
O projeto pode ser implantado por meio de vários métodos diferentes, como usar as seguintes ferramentas:
Visual Studio
Um modelo do ARM (modelo do Azure Resource Manager)
Uma ferramenta de CI/CD (integração contínua e entrega contínua), como o Azure DevOps
Independentemente do método de implantação, as etapas gerais de implantação são as mesmas.
As duas primeiras dessas etapas são necessárias para todos os métodos de implantação. Essas etapas são discutidas na seção Alterações de código. As etapas restantes também são importantes, mas nem sempre exigem intervenção manual do usuário. Por exemplo, as etapas podem ser executadas automaticamente por uma ferramenta como o Visual Studio. As últimas três dessas etapas são discutidas na seção Alterações de configuração.
Alterações de código
Para fazer as alterações de código para preparar seu certificado e configurar seu projeto, execute as seguintes etapas:
Anote a impressão digital do certificado (uma cadeia de caracteres hexadecimal de 40 dígitos).
No arquivo de configuração de serviço (.cscfg) do seu projeto, adicione a impressão digital do certificado à função na qual você deseja usar o certificado. Por exemplo, se você quiser usar o certificado como o certificado SSL para se comunicar com um WebRole, poderá adicionar um código XML semelhante ao seguinte snippet como WebRole1 o primeiro filho do elemento raiz ServiceConfiguration :
Você pode personalizar o nome do certificado, mas ele deve corresponder ao nome do certificado usado no arquivo de definição de serviço (.csdef).
No arquivo de definição de serviço (.csdef), adicione os elementos a seguir.
XPath pai
Elementos a serem adicionados
Atributos a serem usados
/ServiceDefinition/WebRole/Sites/Site/Bindings
Binding
nome, nome do ponto de extremidade
/ServiceDefinition/WebRole/Endpoints
InputEndpoint
nome, protocolo, porta, certificado
/ServiceDefinition/WebRole
Certificates/Certificate
nome, storeLocation, storeName, permissionLevel
O Certificates elemento deve ser adicionado diretamente após a tag de fechamento Endpoints . Ele não contém nenhum atributo. Ele contém apenas elementos filho Certificate .
Por exemplo, seu arquivo de definição de serviço pode ser semelhante ao seguinte código XML:
Neste exemplo, o arquivo de definição de serviço é modificado para associar um ponto de extremidade de HttpsIn entrada para o protocolo HTTPS na porta 443. Ele usa o Certificate1 certificado para um repositório que tem um nome e um local de LocalMachine apenas para um nível de My permissão limitado ou elevado. Os nomes de InputEndpoint certificado nos elementos e Certificate correspondem entre si. Eles também correspondem ao nome do certificado que foi usado no arquivo de configuração de serviço (.cscfg) da etapa anterior.
Alterações de configuração
As instruções para alterar a configuração do serviço de nuvem diferem de acordo com a forma como o serviço de nuvem foi implantado. Essas instruções são mostradas nas guias a seguir. Cada guia representa um método diferente de implantação.
Carregue os arquivos gerados do pacote de serviços (<project-name.cspkg>) e da configuração do serviço de nuvem (ServiceConfiguration.Cloud.cscfg) em um contêiner de conta de armazenamento para o serviço de nuvem.
Observação
Você também precisará carregar o arquivo de definição de serviço (ServiceDefinition.csdef) usando o mesmo processo descrito para os outros dois arquivos.
Gere uma URL de assinatura de acesso compartilhado (SAS) para cada um dos arquivos carregados.
No portal do Azure, retorne à página Visão geral do serviço de nuvem e selecione Atualizar.
Na página Atualizar serviço de nuvem, faça as seguintes alterações na guia Noções básicas:
No campo Local da definição de pacote/configuração/serviço, selecione Do blob.
No campo Carregar um pacote (.cspkg, .zip), siga estas etapas:
Selecione o link Procurar .
Selecione a conta de armazenamento e o contêiner para os quais você carregou os arquivos.
Na página de contêiner, selecione o arquivo correspondente (nesse caso, nome-do-projeto.cspkg) e, em seguida, <selecione o botão Selecionar.>
Para o campo Carregar uma configuração (.cscfg) (e o arquivo ServiceConfiguration.Cloud.cscfg ), repita o subprocedimento descrito na etapa anterior.
Para o campo Carregar uma definição de serviço (.csdef) (e arquivo ServiceDefinition.csdef ), repita o subprocedimento novamente.
Selecione a guia Configuração.
No campo Key Vault, selecione o cofre de chaves no qual você carregou o certificado (anteriormente na seção Alterações de código). Depois que o certificado é encontrado no cofre de chaves selecionado, o certificado listado exibe um Status de Encontrado.
Para implantar o projeto recém-configurado, selecione o botão Atualizar .
Carregue o arquivo do pacote de serviço gerado (<project-name.cspkg>) em um contêiner de conta de armazenamento para seu serviço de nuvem.
Observação
Apesar do que é declarado nas instruções, você não precisa carregar o arquivo de configuração do serviço de nuvem (ServiceConfiguration.Cloud.cscfg). Somente o arquivo do pacote de serviço precisa ser carregado aqui.
Gere uma URL de SAS (assinatura de acesso compartilhado) para o arquivo de pacote de serviço carregado.
No script do PowerShell a seguir, substitua os espaços reservados no início do script pelos valores reais de cada variável e execute o script para atualizar o serviço de nuvem:
Carregue os arquivos gerados do pacote de serviços (<project-name.cspkg>) e da configuração do serviço de nuvem (ServiceConfiguration.Cloud.cscfg) em um contêiner de conta de armazenamento para o serviço de nuvem.
Gere uma URL de assinatura de acesso compartilhado (SAS) para cada um dos arquivos carregados.
Obtenha os seguintes valores na página de certificado do cofre de chaves no portal do Azure:
URL do certificado do cofre de chaves
ID da assinatura
Nome do grupo de recursos no qual o cofre de chaves é implantado
Nome do serviço para o cofre de chaves
No modelo original do ARM para o serviço de nuvem, localize a osProfile propriedade. Se o projeto de serviço de nuvem original der suporte apenas à comunicação HTTP, a osProfile propriedade estará vazia ("osProfile": {}). Para permitir que o serviço de nuvem recupere o certificado correto do cofre de chaves correto, especifique qual cofre de chaves você deseja usar no modelo do ARM. Você pode usar um parâmetro para representar esse valor. Ou você pode codificar o valor no modelo do ARM, conforme mostrado no exemplo a seguir:
No texto JSON do modelo do ARM, o id valor no sourceVault parâmetro faz parte da URL da página Key Vault no portal do Azure. O certificateUrl valor é a URL do certificado do cofre de chaves que você encontrou anteriormente. Os formatos de texto para esses valores são mostrados na tabela a seguir.
Implante seu modelo do ARM atualizado contendo novos parâmetros, como o token SAS do pacote, o token SAS de configuração e muito mais. Para ver como declarar e especificar esses parâmetros, você pode examinar um arquivo de modelo do ARM de exemplo e um arquivo de parâmetros de modelo do ARM de exemplo. Em seguida, aguarde a conclusão da implantação.
Observação
Se você receber uma mensagem de erro informando que o endereço IP público está sendo usado, remova o endereço IP público do arquivo de configuração de serviço (.cscfg) e do arquivo de parâmetros de modelo do ARM. Não remova a declaração de endereço IP público do próprio arquivo de modelo do ARM.
Esta seção descreve como usar o SDK do Azure e o C# para fazer as alterações de configuração corretas. Para usar com êxito o SDK para implantar o projeto de serviço de nuvem e modificar a configuração relacionada, você deve registrar um aplicativo na ID do Microsoft Entra. Para fazer o registro, consulte o artigo Usar o portal para criar um aplicativo do Microsoft Entra e uma entidade de serviço que pode acessar recursos . A tabela a seguir descreve as etapas específicas a serem seguidas e a subseção correspondente a ser lida nesse artigo.
Etapa
Link da subseção
Atribua à sua assinatura a função de proprietário do seu aplicativo
Carregue o arquivo do pacote de serviço gerado (<project-name.cspkg>) em um contêiner de conta de armazenamento para seu serviço de nuvem.
Observação
Apesar do que é declarado nas instruções, você não precisa carregar o arquivo de configuração do serviço de nuvem (ServiceConfiguration.Cloud.cscfg). Somente o arquivo do pacote de serviço precisa ser carregado aqui.
Gere uma URL de SAS (assinatura de acesso compartilhado) para o arquivo de pacote de serviço carregado.
Obtenha os seguintes valores na página de certificado do cofre de chaves no portal do Azure:
URL do certificado do cofre de chaves
ID da assinatura
Nome do grupo de recursos no qual o cofre de chaves é implantado
Nome do serviço para o cofre de chaves
Faça o download do projeto de exemplo (um arquivo compactado) e extraia seu conteúdo.
Abra o arquivo SDKSample\CreateCloudService\CreateCloudService\LoginHelper.cs em um editor de texto. InitializeServiceClient No método, substitua os tenantIdvalores das variáveis , clientIde clientCredentials string pelos valores da ID do locatário, ID do aplicativo e segredo do aplicativo, respectivamente. Esses valores são os que você copiou quando registrou seu aplicativo.
Abra o arquivo SDKSample\CreateCloudService\CreateCloudService\Program.cs em um editor de texto. Main No método, substitua alguns dos valores inicializados das variáveis declaradas no início do método. A tabela a seguir mostra os nomes das variáveis e os valores que você deve usar para elas.
Nome da variável
Novo valor
m_subId
A ID da assinatura que contém o serviço de nuvem
csrgName
O nome do grupo de recursos que contém o serviço de nuvem
csName
O nome do recurso do serviço de nuvem
kvrgName
O nome do grupo de recursos que contém o recurso do cofre de chaves
kvName
O nome do recurso do cofre de chaves
kvsubid
A ID da assinatura que contém o cofre de chaves (isso pode ser diferente da ID da assinatura do serviço de nuvem)
secretidentifier
A URL do certificado do cofre de chaves
filename
O caminho local para o arquivo de configuração do serviço (ServiceConfiguration.Cloud.cscfg)
packageurl
A URL SAS para o arquivo do pacote de serviço (project-name.cspkg>)<
No painel Gerenciador de Soluções do Visual Studio, clique com o botão direito do mouse no nó do projeto e selecione Gerenciar Pacotes NuGet. Na guia Procurar , pesquise, selecione e instale os seguintes pacotes:
Microsoft.Azure.Management.ResourceManager
Microsoft.Azure.Management.Compute
Microsoft.Azure.Management.Storage
Azure.Identity
Microsoft.Rest.ClientRuntime.Azure.Authentication
Execute o projeto e aguarde até que as mensagens apareçam no painel Saída . Se o painel exibir "sair com código 0", a atualização e a implantação deverão estar funcionando com êxito. Se exibir "sair com o código 1", talvez seja necessário verificar se há mensagens de erro para revisar os problemas.
No Visual Studio, você precisa fazer duas alterações de configuração. Você define a configuração do serviço para que o contexto local esteja alinhado com o contexto da nuvem e, em seguida, especifica onde o cofre de chaves está localizado.
Para a configuração do serviço, copie o conteúdo do contexto de nuvem (o arquivo ServiceConfiguration.Cloud.cscfg ) e cole-o no contexto local (o arquivo ServiceConfiguration.Local.cscfg ). Você tem uma configuração diferente ou ainda precisa do arquivo de configuração local para outros usos? Se uma das condições for verdadeira, preserve os certificate elementos do contexto local existente.
No painel Gerenciador de Soluções do Visual Studio, clique com o botão direito do mouse no nó do projeto e selecione Publicar. Prossiga com o assistente Publicar Aplicativo do Azure até chegar à guia Configurações . Nessa guia, defina o campo Cofre de chaves como o local no qual o cofre de chaves é salvo. Por fim, selecione o botão Publicar e aguarde a conclusão da implantação.
Depois de fazer as alterações de configuração, os clientes poderão se comunicar com seu site de serviços de nuvem usando o protocolo HTTPS. Se o certificado for autoassinado, o navegador poderá relatar um aviso de que o certificado não é seguro, mas o navegador não bloqueará a conexão.