2013-04-20 35 views
5

W mojej aplikacji Windows próbuję szyfrować połączenia punkt ciąg app.config pliku, część ciąg połączenia mojego pliku app.config jestNie można odszyfrować za pomocą dostawcy "RsaProtectedConfigurationProvider"?

<connectionStrings> 
<add name="SQLiteDB" connectionString="Data Source=|DataDirectory|database.s3db;  
Version=3;password=mypassword;" providerName="System.Data.Sqlite"/> 
</connectionStrings> 

aw .cs złożyć jestem szyfrując je jak

Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); 
ConfigurationSection section = config.GetSection("connectionStrings") as ConnectionStringsSection; // could be any section 

if (!section.IsReadOnly()) 
{ 
section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider"); 
section.SectionInformation.ForceSave = true; 
config.Save(ConfigurationSaveMode.Full); 
} 

po uruchomieniu tego kodu otrzymuję zaszyfrowany ciąg połączenia w innym app.config, plik app.config znajduje się w folderze bin \ debug, a nazwa tego pliku .config to nazwaofapplication.exe.config.

Problemem jest to, kiedy zrobiłem konfigurację tej aplikacji i uruchomić na innym komputerze, jeśli daje błąd, że:

System.Configuration.ConfigurationErrorsException: Failed to decrypt using provider 'RsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened. 

robie to pierwszy raz, więc nie wiem, jak rozwiązać ten problem, źle w stucked to.

Odpowiedz

3

Plik app.config zostanie zaszyfrowany przy użyciu certyfikatu na komputerze lokalnym. Ten certyfikat nie będzie obecny na drugim komputerze. W związku z tym nie będzie można odszyfrować pliku app.config.

Aby to zadziałało, musisz wyeksportować klucz szyfrowania na swoim komputerze, a następnie zaimportować go na drugim komputerze. Poniższy artykuł pokazuje, jak to zrobić: Instrukcja: Creating and Exporting an RSA Key Container

+0

FYI, lub może być nawet o zaimportowane klucze do innej maszyny, w moim przypadku o pozwolenie. Kiedy debugowanie na VS nie może odszyfrować, ale po otwarciu VS jako administrator. Zacząłem go odszyfrowywać. – enterbutton

6

Użycie tego polecenia aspnet_regiis -PA

Otwórz konsolę CMD -execute jak przez administratora

C:\Windows\system32>aspnet_regiis -pa "NetFrameworkConfigurationKey" "myDomain\myUser" 
Microsoft (R) ASP.NET RegIIS versión 4.0.30319.33440 
Utilidad de administración que instala y desinstala ASP.NET en el equipo local. 
Copyright (C) Microsoft Corporation. Todos los derechos reservados. 
Agregando ACL para el acceso al contenedor de claves RSA... 
Con éxito 

Więcej nazwy:

Ɖiamond ǤeezeƦ answer

The RsaProtectedConfigurationProvider sometimes fails when encrypting an application configuration file

ASP.NET Encryption - aspnet_regiis - Farm

Encrypting and Decrypting Web.config Sections in .NET 4.0

+0

Kiquenet, uratowałeś mój dzień! Po aktualizacji mojego laptopa z Win7 na Win10 ciągle otrzymywałem ten błąd. Wszystko, co musiałem zrobić, to uruchomić 'aspnet_regiis'as opisany. Teraz wszystko znowu działa jak czar! –

Powiązane problemy