Wir erhalten den folgenden Fehler (in asp.net Website), wenn die Verschlüsselung angewendet.
Parser-Fehlermeldung: Entschlüsselung mit Anbieter 'RsaProtectedConfigurationProvider' fehlgeschlagen. Fehlermeldung des Providers: Der RSA-Schlüsselcontainer konnte nicht geöffnet werden.
Hinweis: Bitte beachten Sie die unten aufgeführten Schritte, die wir durchgeführt haben. (Wir haben die ACL-Erlaubnis für NT Authority erteilt \Network Dienst auf NetFrameworkConfigurationKey)
Hinweis: Wir verwenden Windows Authentication Enabled und ASP.NET Impersonation Enabled in IIS7 . Es läuft in Windows Server 2008 . Der Zugriff wird auf der Grundlage gesteuert, ob ein Benutzer Teil einer zulässigen AD-Gruppe ist (die in der Konfigurationsdatei aufgeführt wird).
Der interessante Teil ist, dass dieser Fehler auftritt, wenn Benutzer der Gruppe1 (von Standort1) darauf zugreifen. Wenn Benutzer der Gruppe2 (von Standort2) versuchen, darauf zuzugreifen, tritt der Fehler nicht auf.
Haben Sie eine Idee, wie man das korrigieren kann?
Wir haben die unten aufgeführten Schritte aus unserem Verteilungsdokument befolgt.
- Führen Sie das Befehlsfenster im Administratormodus aus. (In Windows Server 2008 geben Sie cmd ein und drücken STRG+SHIFT+ENTER)
- Gehen Sie zum Ordner C:\Windows\Microsoft.Net\Framework\v4.0.30319\ mit dem Befehl change directory (cd).
- Geben Sie den folgenden Befehl ein, um einen RSA-Schlüsselcontainer zu erstellen. aspnet_regiis -pc "NetFrameworkConfigurationKey" -exp
- Geben Sie Folgendes ein (um eine ACL für den Zugriff auf den RSA Key Container hinzuzufügen) und drücken Sie die Eingabetaste aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT Authority \Network Dienst"
- Geben Sie Folgendes ein (nachdem Sie den markierten Text durch den Ort ersetzt haben, an dem der Dienst bereitgestellt wird) und drücken Sie die Eingabetaste, um die Verbindungszeichenfolge in der Web.Config des Dienstes zu verschlüsseln. aspnet_regiis.exe -pef "connectionStrings" " C:\MyWCF\ServiceName "
- Geben Sie Folgendes ein (nachdem Sie den markierten Text durch den Ort ersetzt haben, an dem die Website bereitgestellt wird) und drücken Sie die Eingabetaste, um die Verbindungszeichenfolge in der Web.Config der Website zu verschlüsseln. aspnet_regiis.exe -pef "connectionStrings" " C:\MyWeb\WebsiteName "
- Geben Sie Folgendes ein (nachdem Sie den hervorgehobenen Text durch den Ort ersetzt haben, an dem die Datei web.config für die Website verfügbar ist) und drücken Sie die Eingabetaste, um die sessionState-Werte in der Web.Config der Website zu verschlüsseln. aspnet_regiis.exe -pef "system.web/sessionState" " C:\MyWeb\WebsiteName "
- Überprüfen Sie, ob die Verbindungszeichenfolgen und SessionState-Werte verschlüsselt sind.
- Überprüfen Sie die folgenden Angaben im Abschnitt configProtectedData in Machine.Config.
- Überprüfen Sie, dass defaultProvider="RsaProtectedConfigurationProvider"
- Überprüfen Sie, dass keyContainerName="NetFrameworkConfigurationKey"
Hinweis: Der Standardspeicherort für machine.config ist C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config