Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
A partir de 28 de julho de 2025, as alterações nos Certificados Gerenciados do Serviço de Aplicativo (ASMC) afetarão a forma como os certificados são emitidos e renovados em determinados cenários. Embora a maioria dos clientes não precise tomar medidas, recomendamos revisar nossa postagem detalhada no blog do ASMC para obter mais informações.
No código do aplicativo, você pode acessar os certificados públicos ou privados que você adiciona ao Serviço de Aplicativo do Azure. O código do aplicativo pode atuar como um cliente e acessar um serviço externo que requer autenticação de certificado. Também pode precisar executar tarefas criptográficas. Este artigo mostra como usar certificados públicos ou privados no código do aplicativo.
Essa abordagem para usar certificados em seu código usa a funcionalidade TLS (Transport Layer Security) no Serviço de Aplicativo, que exige que seu aplicativo esteja na camada Básica ou superior. Se o aplicativo estiver na camada Gratuita ou Compartilhada, você poderá incluir o arquivo de certificado no repositório do aplicativo.
Ao permitir que o Serviço de Aplicativo gerencie seus certificados SSL (TLS/Secure Sockets Layer), você pode manter os certificados e o código do aplicativo separadamente e proteger seus dados confidenciais.
Pré-requisitos
Para seguir este artigo, confira:
Localizar a impressão do polegar
No portal do Azure, no painel esquerdo, selecione Serviços de Aplicativo><nome-do-aplicativo>.
No painel esquerdo do aplicativo, selecione Certificados. Em seguida, selecione Traga seus próprios certificados (.pfx) ou certificados de chave pública (.cer).
Localize o certificado que você deseja usar e copie a impressão digital.
Tornar o certificado acessível
Para acessar um certificado no código do seu aplicativo, adicione sua impressão digital à configuração do aplicativo WEBSITE_LOAD_CERTIFICATES
. Execute o seguinte comando no Azure Cloud Shell:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_CERTIFICATES=<comma-separated-certificate-thumbprints>
Para tornar todos os certificados acessíveis, defina o valor como *
.
Quando WEBSITE_LOAD_CERTIFICATES
definido como *
, todos os certificados adicionados anteriormente são acessíveis ao código do aplicativo. Se você adicionar um certificado ao seu aplicativo mais tarde, reinicie o aplicativo para tornar o novo certificado acessível ao seu aplicativo. Para obter mais informações, consulte Atualizar ou renovar um certificado.
Carregar certificados em aplicativos do Windows
A WEBSITE_LOAD_CERTIFICATES
configuração do aplicativo torna os certificados especificados acessíveis ao seu aplicativo hospedado pelo Windows no repositório de certificados do Windows, no Usuário Atual\Meu.
No código C#, você acessa o certificado usando a impressão digital do certificado. O código a seguir carrega um certificado com a impressão digital E661583E8FABEF4C0BEF694CBC41C28FB81CD870
.
using System;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
string certThumbprint = "E661583E8FABEF4C0BEF694CBC41C28FB81CD870";
bool validOnly = false;
using (X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser))
{
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = certStore.Certificates.Find(
X509FindType.FindByThumbprint,
// Replace below with your certificate's thumbprint
certThumbprint,
validOnly);
// Get the first cert with the thumbprint
X509Certificate2 cert = certCollection.OfType<X509Certificate2>().FirstOrDefault();
if (cert is null)
throw new Exception($"Certificate with thumbprint {certThumbprint} was not found");
// Use certificate
Console.WriteLine(cert.FriendlyName);
// Consider to call Dispose() on the certificate after it's being used, available in .NET 4.6 and later
}
No código Java, você acessa o certificado do Windows-MY
repositório usando o campo Nome Comum da Entidade . Para obter mais informações, consulte o certificado de chave pública. O código a seguir mostra como carregar um certificado de chave privada:
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.PrivateKey;
...
KeyStore ks = KeyStore.getInstance("Windows-MY");
ks.load(null, null);
Certificate cert = ks.getCertificate("<subject-cn>");
PrivateKey privKey = (PrivateKey) ks.getKey("<subject-cn>", ("<password>").toCharArray());
// Use the certificate and key
...
Para idiomas que não dão suporte ou oferecem suporte insuficiente para o repositório de certificados do Windows, consulte Carregar um certificado de um arquivo.
Carregar um certificado de um arquivo
Se você precisar carregar um arquivo de certificado carregado manualmente, é melhor carregar o certificado usando FTPS (File Transfer Protocol Secure) em vez do Git, por exemplo. Mantenha dados confidenciais como um certificado privado fora do controle do código-fonte.
ASP.NET e ASP.NET Core no Windows devem acessar o repositório de certificados mesmo se você carregar um certificado de um arquivo. Para carregar um arquivo de certificado em um aplicativo .NET do Windows, carregue o perfil de usuário atual com o seguinte comando no Cloud Shell:
az webapp config appsettings set --name <app-name> --resource-group <resource-group-name> --settings WEBSITE_LOAD_USER_PROFILE=1
Essa abordagem para usar certificados em seu código usa a funcionalidade TLS no Serviço de Aplicativo, que exige que seu aplicativo esteja na camada Básica ou superior.
O exemplo de C# a seguir carrega um certificado público de um caminho relativo em seu aplicativo:
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("~/<relative-path-to-cert-file>");
var cert = new X509Certificate2(bytes);
// Use the loaded certificate
Para ver como carregar um certificado TLS/SSL de um arquivo em Node.js, PHP, Python ou Java, consulte a documentação da respectiva linguagem ou plataforma Web.
Carregar certificados em contêineres do Linux/Windows
A WEBSITE_LOAD_CERTIFICATES
configuração do aplicativo torna os certificados especificados acessíveis aos contêineres personalizados do Windows ou linux (incluindo contêineres internos do Linux) como arquivos. Os arquivos são encontrados nos seguintes diretórios:
Plataforma de contêiner | Certificados públicos | Certificados privados |
---|---|---|
Contêiner do Windows | C:\appservice\certificates\public |
C:\appservice\certificates\private |
Contêiner do Linux | /var/ssl/certs |
/var/ssl/private |
Os nomes de arquivo de certificado são as impressões digitais do certificado.
Observação
O Serviço de Aplicativo injeta os caminhos de certificado em contêineres do Windows como as seguintes variáveis de ambiente: WEBSITE_PRIVATE_CERTS_PATH
, , WEBSITE_INTERMEDIATE_CERTS_PATH
e WEBSITE_PUBLIC_CERTS_PATH
WEBSITE_ROOT_CERTS_PATH
. É melhor fazer referência ao caminho do certificado com as variáveis de ambiente em vez de codificar o caminho do certificado, caso os caminhos do certificado mudem no futuro.
Além disso, os contêineres do Windows Server Core e do Windows Nano Server carregam os certificados no repositório de certificados automaticamente, em LocalMachine\My
. Para carregar os certificados, siga o mesmo padrão mostrado em Carregar certificados em aplicativos do Windows. Para contêineres baseados no Windows Nano, use os caminhos de arquivo, conforme mostrado em Carregar um certificado de um arquivo.
O código C# a seguir mostra como carregar um certificado público em um aplicativo Linux.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("/var/ssl/certs/<thumbprint>.der");
var cert = new X509Certificate2(bytes);
// Use the loaded certificate
O código C# a seguir mostra como carregar um certificado privado em um aplicativo Linux.
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
...
var bytes = File.ReadAllBytes("/var/ssl/private/<thumbprint>.p12");
var cert = new X509Certificate2(bytes);
// Use the loaded certificate
Para ver como carregar um certificado TLS/SSL de um arquivo em Node.js, PHP, Python ou Java, consulte a documentação da respectiva linguagem ou plataforma Web.
Atualizar ou renovar um certificado
Quando você renova um certificado e o adiciona ao seu aplicativo, ele obtém uma nova impressão digital, que também deve ser tornada acessível. O funcionamento depende do tipo de certificado.
Se você carregar manualmente o certificado público ou privado :
- Se você listar impressões digitais explicitamente em
WEBSITE_LOAD_CERTIFICATES
, adicione a nova impressão digital à configuração do aplicativo. - Se
WEBSITE_LOAD_CERTIFICATES
estiver definido como*
, reinicie o aplicativo para tornar o novo certificado acessível.
Se você renovar um certificado no Azure Key Vault, como com um certificado do Serviço de Aplicativo, a sincronização diária do Key Vault fará a atualização necessária automaticamente quando seu aplicativo sincroniza com o certificado renovado.
- Se
WEBSITE_LOAD_CERTIFICATES
contiver a impressão digital antiga do certificado renovado, a sincronização diária atualizará a impressão digital antiga para a nova impressão digital automaticamente. - Se
WEBSITE_LOAD_CERTIFICATES
estiver definido como*
, a sincronização diária tornará o novo certificado acessível automaticamente.