In asp.net2.0 gibt es eine neue Funktion zum Verschlüsseln einiger Daten in web.config. Sie können RSAProtectedConfigurationProvider und DPAPIProtectedConfigurationProvider zum Verschlüsseln verwenden. In diesem Artikel werden die Schritte zur Verwendung von RSAProtectedConfigurationProvidert und Schlüsselcontainer auf Computerebene erläutert.
1. Stellen Sie zunächst fest, ob der zu verschlüsselnde Konfigurationsabschnitt in web.config verschlüsselt werden kann.
2. Erstellen Sie einen RSA-Schlüsselcontainer
. 3. Identifizieren Sie den Schlüsselcontainer, der in web.config verwendet werden soll.
4. Verschlüsseln Sie web.config.
5. Erteilen Sie Zugriffsberechtigungen für Der RSA-Schlüsselcontainer
Schritt 1: Stellen Sie zunächst fest, ob der zu verschlüsselnde Konfigurationsabschnitt in web.config verschlüsselt werden kann
ASP.NET 2.0 unterstützt die Verschlüsselung einiger Konfigurationsabschnitte von Web.config. Die Daten in den folgenden Konfigurationsabschnitten können nicht verschlüsselt werden:
<processModel>
<Laufzeit>
<mscorlib>
<Startup>
<system.runtime.remoting>
<configProtectedData>
<satelliteassemblies>
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
Schritt 2: Erstellen Sie einen RSA-Schlüsselcontainer. Verwenden Sie zum Erstellen eines RSA-Schlüsselcontainers das ASP.NET IIS-Registrierungstool (Aspnet_regiis.exe) und den Schalter –pc. Sie müssen dem Schlüsselcontainer einen Namen geben, der den Schlüsselcontainer identifiziert, der vom RsaProtectedConfigurationProvider verwendet wird, der im Abschnitt configProtectedData der Web.config-Datei der Anwendung angegeben ist. Um sicherzustellen, dass der neu erstellte RSA-Schlüsselcontainer exportiert werden kann, muss die Option -exp enthalten sein.
Der folgende Befehl erstellt beispielsweise einen RSA-Schlüsselcontainer mit dem Namen ABeenKeys, bei dem es sich um einen exportierbaren Schlüsselcontainer auf Maschinenebene handelt.
aspnet_regiis -pc "ABeenKeys"–exp
Schritt 3: Ändern Sie web.config, um den Schlüsselcontainer zu identifizieren
Bearbeiten Sie die Datei Web.config, um den zu verwendenden Schlüsselcontainer zu identifizieren.
Fügen Sie <configProtectedData> zu web.config hinzu, um den Schlüsselcontainer auf Maschinenebene mit dem Namen ABeenKeys zu konfigurieren.
<configuration xmlns=" http://schemas.microsoft.com/.NetConfiguration/v2.0 ">saProtectedConfigurationProvider unter Verwendung eines RSA-Schlüsselcontainers auf Maschinenebene namens ABeenKeys.
<configProtectedData > <providers> <add name="ABeenProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral,processorArchitecture=MSIL" keyContainerName="ABeenKeys"/> </providers > </configProtectedData>
Schritt 4: Verschlüsseln Sie den Abschnitt <connectionStrings> Ihrer web.config-Datei
Verschlüsseln Sie den Konfigurationsabschnitt in Ihrer web.config-Datei
> aspnet_regiis -pe "connectionStrings" -app "/connectionTest"
Schritt 5: Das Gewähren des Zugriffs auf den RSA-Schlüsselcontainer kann durch den folgenden Code bestimmt werden, für den Benutzerberechtigungen erteilt werden sollen:
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
Standardmäßig sind RSA-Schlüsselcontainer durch die NTFS-Zugriffskontrollliste (ACL) auf dem Server, auf dem sie sich befinden, streng geschützt. Dies erhöht die Sicherheit verschlüsselter Informationen, indem der Zugriff auf die Verschlüsselungsschlüssel eingeschränkt wird. Bevor ASP.NET den RSA-Schlüsselcontainer verwenden kann, muss der Prozessidentität der ASP.NET-Anwendung Lesezugriff auf den RSA-Schlüsselcontainer gewährt werden. Sie können das Tool „Aspnet_regiis.exe“ mit dem Schalter „-pa“ verwenden, um der Identität einer ASP.NET-Anwendung Leseberechtigung für den RSA-Schlüsselcontainer zu erteilen. Der folgende Befehl gewährt beispielsweise dem Windows Server 2003-Netzwerkdienstkonto Lesezugriff auf einen RSA-Schlüsselcontainer auf Maschinenebene mit dem Namen ABeenKeys:
aspnet_regiis -pa "ABeenKeys" "NT AUTHORITYNETWORK SERVICE"
Beachten:
Wenn es sich beim RSA-Schlüsselcontainer um einen Container auf Benutzerebene handelt, müssen Sie als der Benutzer angemeldet sein, in dessen Windows-Profil der Schlüssel gespeichert ist, und Sie müssen die Option -pku einschließen, um Zugriff auf den RSA-Schlüsselcontainer auf Benutzerebene zu gewähren.
Um den in der Computerkonfiguration angegebenen Standard-RsaProtectedConfigurationProvider zu verwenden, müssen Sie zunächst der Windows-Identität der Anwendung Zugriff auf den Computerschlüsselcontainer mit dem Namen NetFrameworkConfigurationKey gewähren, bei dem es sich um den für den Standardanbieter angegebenen Schlüsselcontainer handelt. Der folgende Befehl gewährt beispielsweise dem NETWORK SERVICE-Konto Zugriff auf den RSA-Schlüsselcontainer, der vom Standard-RsaProtectedConfigurationProvider verwendet wird.
aspnet_regiis -pa „NetFrameworkConfigurationKey“ „NT AUTHORITYNETWORK SERVICE“
Der NetFrameworkConfigurationKey RSA-Schlüsselcontainer ist der Standardschlüsselcontainer für Befehle, die vom Tool Aspnet_regiis.exe ausgegeben werden. Daher kann der obige Befehl auch wie folgt ausgegeben werden:
aspnet_regiis -pa „NT AUTHORITYNETWORK SERVICE“
Code-Download