kolmapäev, 4. märts 2009

ASP.NET web.config faili krüptimine

Käima ajamiseks tuli päev otsa guugeldada. Tänud lõpuks nendele meestele
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/88b15d6b-9baa-4f4d-8942-137185bfdf56/


ASP.NET-i Veebirakendusel või WebServicel vaja turvalisuse tõstmiseks ConnectionStrings osa ära krüptida
Käima sain sellise asjaga, kasutame RSA-d

1. Loome Machine level eksporditava RSA key containeri
aspnet_regiis on programm mille leiab serveril tavaliselt C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 kataloogist

aspnet_regiis -pc "KampusKey" -exp

KampusKey on nüüd selle RSA võtme konteineri nimi, mis pannakse serveri kataloogi
C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys

edasi tuleb vaadata mis konto all sul see veebirakendus/veebiteenus töötab

Teed eraldi ASPX lehe, kust selle teada saad

this.LabelIdentity.Text = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

või vaatad IIS-i manageri alt, mis basseinis sul rakendus ujub (Application Pool)

ja annab sellele kontole (tavaliselt NT AUTHORITY\NETWORK SERVICE) RSA võtme konteinerile ligipääsu õiguse

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

Peab mainima, et NETWORK SERVICE on turvalisuse koha pealt üsna hea konto veebirakenduste jooksutamiseks, veelgi parem oleks kohe endale selgeks teha
kuidas luua veebirakenduse jaoks omaette väheste õigustega konto
http://msdn.microsoft.com/en-us/library/ms998297.aspx


rakenduse web.config failis tuleb nüüd lisada rida

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0" >
<configSections>
</configSections>

<configProtectedData defaultProvider="RsaProtectedConfigurationProvider" >
<providers>
<add name="KampusVoti" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" keyContainerName="KampusKey" useMachineContainer="true" />
</providers>
</configProtectedData>

<connectionStrings>
<add name="TurukampusConnectionString" connectionString="Data Source=SQLBAAS;Initial Catalog=KAMPUS;User ID=KAMPUS868;Password=HKSDF6834" providerName="System.Data.SqlClient"/>
</connectionStrings>

</configuration>


ja nüüd krüptib selle connectionStrings osa ära

aspnet_regiis –pef "connectionStrings“ “d:\cw-turukampus_webservice” –prov “KampusVoti”

d:\cw-turukampus_webservice on see kataloog serveril ,kus sul rakenduse failid on ja

–prov “KampusVoti” peab kokku lengema web.config failis configProtectedData lisatud provider nimega, see sunnik oli juhendis mainimata

muidu ei tööta saad veateate
Parser Error Message:
Failed to decrypt using provider 'RsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened.


Rakenduses töötab asi ühtemoodi, IIS ise krüptib/dekrüptib connectrionStrings osa lahti

using System.Web.Configuration;

System.Configuration.ConnectionStringsSection konnc = WebConfigurationManager.GetSection("connectionStrings") as System.Configuration.ConnectionStringsSection;
this.Label1.Text = konnc.ConnectionStrings["TurukampusConnectionString"].ConnectionString.Trim();
Blogged with the Flock Browser