Azure Key Vault Certificate client library for .NET - version 4.5.1 (Biblioteca de cliente de certificados do Azure Key Vault para .NET – versão 4.5.1)
O Azure Key Vault é um serviço cloud que fornece armazenamento seguro e gestão automatizada de certificados utilizados numa aplicação na cloud. Vários certificados e várias versões do mesmo certificado podem ser mantidos no Azure Key Vault. Cada certificado no cofre tem uma política associada que controla a emissão e a duração do certificado, juntamente com as ações a serem tomadas como certificados perto da expiração.
A biblioteca de cliente de certificados do Azure Key Vault permite a gestão programática de certificados, oferecendo métodos para criar, atualizar, listar e eliminar certificados, políticas, emissores e contactos. A biblioteca também suporta a gestão de operações de certificado pendentes e a gestão de certificados eliminados.
Código fonte | Pacote (NuGet) | Documentação | de referência da APIDocumentação do | produto Exemplos | Guia de migração
Introdução
Instalar o pacote
Instale a biblioteca de cliente de certificados do Azure Key Vault para .NET com NuGet:
dotnet add package Azure.Security.KeyVault.Certificates
Pré-requisitos
- Uma subscrição do Azure.
- Uma Key Vault do Azure existente. Se precisar de criar um Key Vault do Azure, pode utilizar o Portal do Azure ou a CLI do Azure.
- Autorização para um Azure Key Vault existente com o RBAC (recomendado) ou o controlo de acesso.
Se utilizar a CLI do Azure, substitua <your-resource-group-name>
e <your-key-vault-name>
pelos seus próprios nomes exclusivos:
az keyvault create --resource-group <your-resource-group-name> --name <your-key-vault-name>
Autenticar o cliente
Para interagir com o serviço Key Vault do Azure, terá de criar uma instância da classe CertificateClient. Precisa de um URL do cofre, que poderá ver como "Nome DNS" no portal e credenciais para instanciar um objeto de cliente.
Os exemplos mostrados abaixo utilizam um DefaultAzureCredential
, que é adequado para a maioria dos cenários, incluindo ambientes de desenvolvimento e produção locais.
Além disso, recomendamos a utilização de uma identidade gerida para autenticação em ambientes de produção.
Pode encontrar mais informações sobre as diferentes formas de autenticação e os tipos de credenciais correspondentes na documentação da Identidade do Azure .
Para utilizar o DefaultAzureCredential
fornecedor mostrado abaixo ou outros fornecedores de credenciais fornecidos com o SDK do Azure, primeiro tem de instalar o pacote Azure.Identity:
dotnet add package Azure.Identity
Criar CertificateClient
Instanciar um DefaultAzureCredential
para passar para o cliente.
A mesma instância de uma credencial de token pode ser utilizada com vários clientes se estiverem a autenticar com a mesma identidade.
// Create a new certificate client using the default credential from Azure.Identity using environment variables previously set,
// including AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, and AZURE_TENANT_ID.
var client = new CertificateClient(vaultUri: new Uri(vaultUrl), credential: new DefaultAzureCredential());
Conceitos-chave
KeyVaultCertificate
A KeyVaultCertificate
é o recurso fundamental no Azure Key Vault. Irá utilizar certificados para encriptar e verificar dados encriptados ou assinados.
CertificateClient
Com um CertificateClient
, pode obter certificados do cofre, criar novos certificados e novas versões de certificados existentes, atualizar metadados de certificado e eliminar certificados. Também pode gerir emissores de certificados, contactos e políticas de gestão de certificados. Isto é ilustrado nos exemplos abaixo.
Segurança de threads
Garantimos que todos os métodos de instância de cliente são seguros para threads e independentes uns dos outros (orientação). Isto garante que a recomendação de reutilização de instâncias de cliente é sempre segura, mesmo entre threads.
Conceitos adicionais
Opções de | cliente Aceder à resposta | Operações de execução prolongada | Lidar com falhas | Diagnósticos | A gozar | Duração do cliente
Exemplos
O pacote Azure.Security.KeyVault.Certificates suporta APIs síncronas e assíncronas.
A secção seguinte fornece vários fragmentos de código com o client
criado acima, abrangendo algumas das tarefas mais comuns relacionadas com o serviço de certificados do Azure Key Vault:
Exemplos de sincronização
- Criar um certificado
- Obter um certificado
- Atualizar um certificado existente
- Listar certificados
- Eliminar um certificado
Exemplos assíncronos
- Criar um certificado de forma assíncrona
- Listar certificados de forma assíncrona
- Eliminar um certificado de forma assíncrona
Criar um certificado
StartCreateCertificate
cria um certificado a ser armazenado no Key Vault do Azure. Se já existir um certificado com o mesmo nome, será criada uma nova versão do certificado.
Ao criar o certificado, o utilizador pode especificar a política que controla a duração do certificado. Se não for especificada nenhuma política, será utilizada a política predefinida. A StartCreateCertificate
operação devolve um CertificateOperation
. O exemplo seguinte cria um certificado autoassinado com a política predefinida.
// Create a certificate. This starts a long running operation to create and sign the certificate.
CertificateOperation operation = client.StartCreateCertificate("MyCertificate", CertificatePolicy.Default);
// You can await the completion of the create certificate operation.
// You should run UpdateStatus in another thread or do other work like pumping messages between calls.
while (!operation.HasCompleted)
{
Thread.Sleep(2000);
operation.UpdateStatus();
}
KeyVaultCertificateWithPolicy certificate = operation.Value;
NOTA: consoante o emissor do certificado e os métodos de validação, a criação e assinatura de certificados podem demorar um período indeterminado de tempo. Os utilizadores só devem aguardar pelas operações de certificado quando a operação puder ser razoavelmente concluída no âmbito da aplicação, como com certificados autoassinados ou emissores com tempos de resposta bem conhecidos.
Obter um certificado
GetCertificate
obtém a versão mais recente de um certificado armazenado no Azure Key Vault juntamente com o respetivo CertificatePolicy
.
KeyVaultCertificateWithPolicy certificateWithPolicy = client.GetCertificate("MyCertificate");
GetCertificateVersion
obtém uma versão específica de um certificado no cofre.
KeyVaultCertificate certificate = client.GetCertificateVersion(certificateWithPolicy.Name, certificateWithPolicy.Properties.Version);
Atualizar um certificado existente
UpdateCertificate
atualiza um certificado armazenado no Key Vault do Azure.
CertificateProperties certificateProperties = new CertificateProperties(certificate.Id);
certificateProperties.Tags["key1"] = "value1";
KeyVaultCertificate updated = client.UpdateCertificateProperties(certificateProperties);
Listar certificados
GetCertificates
enumera os certificados no cofre, devolvendo as propriedades selecionadas do certificado. Os campos confidenciais do certificado não serão devolvidos. Esta operação requer a permissão de certificados/lista.
Pageable<CertificateProperties> allCertificates = client.GetPropertiesOfCertificates();
foreach (CertificateProperties certificateProperties in allCertificates)
{
Console.WriteLine(certificateProperties.Name);
}
Eliminar um certificado
DeleteCertificate
elimina todas as versões de um certificado armazenado no Key Vault do Azure. Quando a eliminação recuperável não está ativada para a Key Vault do Azure, esta operação elimina permanentemente o certificado. Se a eliminação recuperável estiver ativada, o certificado será marcado para eliminação e poderá ser opcionalmente removido ou recuperado até à data de remoção agendada.
DeleteCertificateOperation operation = client.StartDeleteCertificate("MyCertificate");
// You only need to wait for completion if you want to purge or recover the certificate.
// You should call `UpdateStatus` in another thread or after doing additional work like pumping messages.
while (!operation.HasCompleted)
{
Thread.Sleep(2000);
operation.UpdateStatus();
}
DeletedCertificate certificate = operation.Value;
client.PurgeDeletedCertificate(certificate.Name);
Criar um certificado de forma assíncrona
As APIs assíncronas são idênticas às suas congéneres síncronas, mas devolvem com o sufixo "Assíncrono" típico para métodos assíncronos e devolvem um Task
.
Este exemplo cria um certificado no Azure Key Vault com os argumentos opcionais especificados.
// Create a certificate. This starts a long running operation to create and sign the certificate.
CertificateOperation operation = await client.StartCreateCertificateAsync("MyCertificate", CertificatePolicy.Default);
// You can await the completion of the create certificate operation.
KeyVaultCertificateWithPolicy certificate = await operation.WaitForCompletionAsync();
Listar certificados de forma assíncrona
A listagem do certificado não depende de aguardar o GetPropertiesOfCertificatesAsync
método, mas devolve uma AsyncPageable<CertificateProperties>
que pode utilizar com a await foreach
instrução :
AsyncPageable<CertificateProperties> allCertificates = client.GetPropertiesOfCertificatesAsync();
await foreach (CertificateProperties certificateProperties in allCertificates)
{
Console.WriteLine(certificateProperties.Name);
}
Eliminar um certificado de forma assíncrona
Ao eliminar um certificado de forma assíncrona antes de o remover, pode aguardar o WaitForCompletionAsync
método na operação.
Por predefinição, este ciclo é ciclo indefinidamente, mas pode cancelá-lo ao transmitir um CancellationToken
.
DeleteCertificateOperation operation = await client.StartDeleteCertificateAsync("MyCertificate");
// You only need to wait for completion if you want to purge or recover the certificate.
await operation.WaitForCompletionAsync();
DeletedCertificate certificate = operation.Value;
await client.PurgeDeletedCertificateAsync(certificate.Name);
Resolução de problemas
Veja o nosso guia de resolução de problemas para obter detalhes sobre como diagnosticar vários cenários de falha.
Geral
Quando interage com a biblioteca de cliente de certificados do Azure Key Vault com o SDK .NET, os erros devolvidos pelo serviço correspondem aos mesmos códigos de estado HTTP devolvidos para pedidos de API REST.
Por exemplo, se tentar obter uma Chave que não existe no seu Key Vault do Azure, é devolvido um 404
erro que indica Not Found
.
try
{
KeyVaultCertificateWithPolicy certificateWithPolicy = client.GetCertificate("SomeCertificate");
}
catch (RequestFailedException ex)
{
Console.WriteLine(ex.ToString());
}
Irá reparar que são registadas informações adicionais, como o ID do Pedido de Cliente da operação.
Message:
Azure.RequestFailedException : Service request failed.
Status: 404 (Not Found)
Content:
{"error":{"code":"CertificateNotFound","message":"Certificate not found: MyCertificate"}}
Headers:
Cache-Control: no-cache
Pragma: no-cache
Server: Microsoft-IIS/10.0
x-ms-keyvault-region: westus
x-ms-request-id: 625f870e-10ea-41e5-8380-282e5cf768f2
x-ms-keyvault-service-version: 1.1.0.866
x-ms-keyvault-network-info: addr=131.107.174.199;act_addr_fam=InterNetwork;
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Strict-Transport-Security: max-age=31536000;includeSubDomains
X-Content-Type-Options: nosniff
Date: Tue, 18 Jun 2019 16:02:11 GMT
Content-Length: 75
Content-Type: application/json; charset=utf-8
Expires: -1
Passos seguintes
Estão disponíveis vários exemplos de biblioteca de cliente de certificados do Azure Key Vault neste repositório do GitHub. Estes exemplos fornecem código de exemplo para cenários adicionais normalmente encontrados ao trabalhar com o Azure Key Vault:
Sample1_HelloWorld.md - para trabalhar com certificados do Azure Key Vault, incluindo:
- Criar um certificado
- Obter um certificado existente
- Atualizar um certificado existente
- Eliminar um certificado
Sample2_GetCertificates.md - Código de exemplo para trabalhar com certificados do Azure Key Vault, incluindo:
- Criar certificados
- Listar todos os certificados no Key Vault
- Listar versões de um certificado especificado
- Eliminar certificados do Key Vault
- Listar certificados eliminados no Key Vault
Documentação Adicional
- Para obter documentação mais extensa sobre o Azure Key Vault, veja a documentação de referência da API.
- Para a biblioteca de cliente Segredos, veja Biblioteca de cliente segredos.
- Para Biblioteca de cliente chaves, veja Biblioteca de cliente de chaves.
Contribuir
Veja o CONTRIBUTING.md para obter detalhes sobre como criar, testar e contribuir para estas bibliotecas.
Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para mais detalhes, visite https://cla.microsoft.com.
Quando submete um pedido Pull, um bot do CLA determina automaticamente se tem de fornecer um CLA e decorar o PR de forma adequada (por exemplo, etiqueta, comentário). Só tem de seguir as instruções fornecidas pelo bot. Apenas terá de fazer isto uma vez em todos os repositórios com o nosso CLA.
Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, consulte as FAQ do Código de Conduta ou contacte opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.
Azure SDK for .NET