2017-04-21 1 views

Répondre

1

Vous devez déterminer si Key Vault est la solution appropriée pour votre scénario. La clé publique (par nature) n'est pas une donnée confidentielle, vous n'avez pas besoin d'un endroit sécurisé pour la stocker. Vous pouvez utiliser un service de stockage à usage général pour cela.

Si vous avez toujours besoin d'utiliser Key Vault, vous pouvez le stocker comme un secret. Les secrets Key Vault sont des séquences d'octets d'une taille maximale de 25k octets chacune.

1

Chargement des certificats de clés publiques

Azure Key Vault Explorer vous permet de charger des certificats de clés publiques (fichiers .cer).

Les certificats sont stockés en tant que clés dans le coffre-fort de clés à l'aide d'un format "standard" utilisé par cette application (puisque les fichiers .cer ne sont pas pris en charge par Azure Key Vault).

Example public key cert as stored by Azure Key Vault Explorer

Accès des certificats de clés publiques

Une fois que vous avez chargé les clés publiques dans l'Azure Key Vault, ils peuvent ensuite accéder programatically comme suit:

// load certificate based on format used by `Azure Key Vault Explorer` 
var azureServiceTokenProvider = new AzureServiceTokenProvider(); 
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback)); 
var certBundle = await kv.GetSecretAsync(secretIdentifier).ConfigureAwait(false); 

byte[] certBytes = null; 
if (certBundle.ContentType == "application/x-pkcs12") 
{ 
    certBytes = Convert.FromBase64String(certBundle.Value); 
} 
else if (certBundle.ContentType == "application/pkix-cert") 
{ 
    certBytes = certBundle?.Value.FromJson<PublicKeyCertificate>()?.Data; 
} 
if (certBytes != null && certBytes.Length > 0) 
{ 
    return new X509Certificate2(certBytes, 
     "", 
     X509KeyStorageFlags.Exportable | 
     X509KeyStorageFlags.MachineKeySet | 
     X509KeyStorageFlags.PersistKeySet); 
} 
return null; 

... 

// class used to access public key certificate stored in Key Vault 
public class PublicKeyCertificate 
{ 
    public byte[] Data; 
}