Partager via


Importation et exportation des conteneurs de clé RSA de la configuration protégée

Mise à jour : novembre 2007

La configuration protégée permet de créer, de supprimer, d'exporter et d'importer des conteneurs de clé RSA lors de l'utilisation du RsaProtectedConfigurationProvider. Ces fonctions s'avèrent utiles dans un scénario de batterie de serveurs Web où le même fichier Web.config chiffré sera déployé sur plusieurs serveurs. Dans ce cas, le même conteneur de clé RSA doit également être déployé sur ces serveurs. À cette fin, vous devez créer un conteneur de clé RSA pour l'application, l'exporter dans un fichier XML et l'importer sur chaque serveur qui doit déchiffrer le fichier chiffré Web.config.

La création de conteneurs de clé RSA peut être également utile sur un serveur Web unique qui héberge plusieurs applications ASP.NET. En créant un conteneur de clé RSA pour chaque application ou pour chaque ensemble d'applications d'un client unique, vous pouvez renforcer la sécurité des informations de configuration sensibles d'une application en vérifiant que le fichier Web.config d'une application ne peut pas être déchiffré à l'aide du conteneur de clé RSA d'une autre application.

Création d'un Conteneur de clé RSA

Pour créer un conteneur de clé RSA, vous utilisez l'outil d'inscription (Aspnet_regiis.exe) d'ASP.NET IIS avec le commutateur –pc. Vous devez attribuer un nom au conteneur de clé identifiant le conteneur de clé utilisé par l'objet RsaProtectedConfigurationProvider spécifié dans la section configProtectedData du fichier Web.config de votre application. Pour garantir que le conteneur de clé RSA nouvellement créé peut être exporté, vous devez inclure l'option -exp.

Par exemple, la commande suivante crée un conteneur de clé RSA nommé SampleKeys qui est un conteneur de clé ordinateur exportable.

aspnet_regiis -pc "SampleKeys"–exp

L'exemple suivant illustre la section configProtectedData d'un fichier Web.config. La section spécifie un objet RsaProtectedConfigurationProvider qui utilise un conteneur de clé RSA au niveau ordinateur nommé SampleKeys.

<configProtectedData>
   <providers>
      <add name="SampleProvider" 
           type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,
                 Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
                 processorArchitecture=MSIL"
           keyContainerName="SampleKeys" 
           useMachineContainer="true" />
   </providers>
</configProtectedData>
Remarque :

Pour se défendre contre les clés de chiffrement et de déchiffrement pour les sections de configuration protégées qui sont supprimées involontairement, les conteneurs de clé RSA ne sont pas supprimés si le .NET Framework est désinstallé.

Octroi de l'autorisation d'accéder à un conteneur de clé RSA

Par défaut, les conteneurs de clé RSA sont fermement protégés par les listes de contrôle d'accès NTFS du serveur où ils sont installés. La sécurité des informations chiffrées s'en trouve améliorée grâce à la restriction des personnes autorisées à accéder à la clé de chiffrement.

Avant qu'ASP.NET ne puisse utiliser un conteneur de clé RSA, l'identité de processus de votre application ASP.NET doit être autorisée à y accéder en lecture. Pour plus d'informations sur la définition et la détermination de l'identité de votre application ASP.NET, consultez Emprunt d'identité ASP.NET.

Vous pouvez utiliser l'outil Aspnet_regiis.exe avec le commutateur -pa pour donner à l'identité de votre application ASP.NET l'autorisation de lire un conteneur de clé RSA. Par exemple, la commande suivante octroie au compte SERVICE RÉSEAU Windows Server 2003 l'accès en lecture au conteneur de clé RSA ordinateur nommé SampleKeys.

aspnet_regiis -pa "SampleKeys" "NT AUTHORITY\NETWORK SERVICE"
Remarque :

Si le conteneur de clé RSA est un conteneur de niveau utilisateur, vous devez être connecté en tant qu'utilisateur dans le profil Windows où la clé est stockée et inclure l'option -pku pour accorder l'accès au conteneur de clé RSA de niveau utilisateur. Pour plus d'informations, consultez Description des conteneurs de clé RSA au niveau de l'ordinateur et au niveau de l'utilisateur.

Pour utiliser l'objet RsaProtectedConfigurationProvider par défaut spécifié dans la configuration machine, vous devez d'abord accorder l'accès d'identité Windows de l'application au conteneur de clé de niveau ordinateur intitulé NetFrameworkConfigurationKey, qui est le conteneur de clé spécifié pour le fournisseur par défaut. Par exemple, la commande suivante octroie au compte SERVICE RÉSEAU l'accès au conteneur de clé RSA utilisé par l'objet RsaProtectedConfigurationProvider par défaut :

aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"

Le conteneur de clé NetFrameworkConfigurationKey RSA constitue le conteneur de clé par défaut pour les commandes émises par l'outil Aspnet_regiis.exe. Par conséquent, la commande précédente peut aussi être émise comme la commande suivante :

aspnet_regiis -pa "NT AUTHORITY\NETWORK SERVICE"

Exportation d'un conteneur de clé RSA

Pour exporter un conteneur de clé RSA vers un fichier XML, vous pouvez utiliser l'outil Aspnet_regiis.exe avec le commutateur –px. Vous pouvez utiliser le fichier XML comme sauvegarde du conteneur de clé RSA ou pour importer le conteneur de clé RSA sur un autre serveur. La partie clé privée du conteneur de clé RSA est obligatoire pour pouvoir déchiffrer les informations chiffrées. Pour utiliser le conteneur de clé exporté sur un autre serveur, vous devrez importer également la clé privée. Vous pouvez inclure la clé privée dans votre fichier XML en spécifiant l'option –pri lors de l'exportation de la clé. Vous devez également spécifier si le conteneur de clé exporté est de niveau ordinateur ou utilisateur. Pour exporter un conteneur de clé utilisateur, vous devez ouvrir une session sous le nom d'utilisateur dont la clé est stockée dans le profil Windows. Pour spécifier une clé de niveau utilisateur, incluez l'option -pku lorsque vous exportez les informations de la clé de chiffrement ; sinon la clé exportée proviendra du magasin de clés de l'ordinateur. Pour plus d'informations sur les clés de chiffrement ordinateur et utilisateur, consultez Description des conteneurs de clé RSA au niveau de l'ordinateur et au niveau de l'utilisateur.

Par exemple, la commande suivante exporte le conteneur de clé RSA ordinateur nommé SampleKeys vers le fichier nommé keys.xml et inclut les informations de la clé privée.

aspnet_regiis -px "SampleKeys" keys.xml -pri
Remarque :

Pour des raisons de sécurité, après avoir exporté un conteneur de clé RSA vers un fichier XML, copiez le fichier XML dans un emplacement externe au serveur et supprimez le fichier XML du serveur. Cela réduit le risque qu'un utilisateur malveillant n'accède à votre conteneur de clé RSA et sa capacité à déchiffrer les fichiers Web.config chiffrés à l'aide de ce conteneur de clé RSA.

Importation d'un conteneur de clé RSA

Vous pouvez utiliser l'outil Aspnet_regiis.exe avec le commutateur –pi pour importer un conteneur de clé RSA depuis un fichier XML. Vous devez également spécifier si le conteneur de clé importé est de niveau ordinateur ou utilisateur. Pour importer un conteneur de clé utilisateur, vous devez ouvrir une session sous le nom d'utilisateur dont la clé sera stockée dans le profil Windows. Pour spécifier une clé de niveau utilisateur, incluez l'option -pku lorsque vous exportez les informations de la clé de chiffrement ; sinon, la clé exportée sera importée dans le magasin de clés de l'ordinateur.

Par exemple, la commande suivante importe un conteneur de clé RSA ordinateur nommé SampleKeys depuis le fichier keys.xml.

aspnet_regiis -pi "SampleKeys" keys.xml

L'identité de l'application ASP.NET qui utilise le conteneur de clé RSA importé doit se voir accorder l'autorisation de lire le contenu du conteneur de clé RSA. Pour plus d'informations, consultez Octroi de l'autorisation d'accéder à un conteneur de clé RSA, plus haut dans cette rubrique.

Suppression d'un conteneur de clé RSA

Pour supprimer un conteneur de clé RSA, vous pouvez utiliser l'outil Aspnet_regiis.exe avec le commutateur –pz. Avant de supprimer un conteneur de clé RSA, vérifiez que vous avez exporté la clé vers un fichier XML afin qu'elle puisse être importée ultérieurement, ou qu'il n'y a pas d'informations chiffrées avec le conteneur de clé RSA qui devra être éventuellement déchiffré.

Lors de la suppression d'un conteneur de clé RSA, vous devez spécifier le nom du conteneur de clé et identifier le conteneur en tant qu'ordinateur ou utilisateur. Pour supprimer un conteneur de clé utilisateur, vous devez ouvrir une session sous le nom d'utilisateur dont la clé est stockée dans le profil Windows.

Par exemple, la commande suivante supprime le conteneur de clé RSA ordinateur nommé SampleKeys.

aspnet_regiis -pz "SampleKeys"

Voir aussi

Tâches

Procédure pas à pas : création et exportation d'un conteneur de clé RSA

Autres ressources

Chiffrement des informations de configuration à l'aide de la configuration protégée