ใน asp.net2.0 มีฟังก์ชันใหม่ในการเข้ารหัสข้อมูลบางอย่างใน web.config คุณสามารถใช้ RSAProtectedConfigurationProvider และ DPAPIProtectedConfigurationProvider เพื่อเข้ารหัสได้ บทความนี้จะอธิบายขั้นตอนการใช้ RSAProtectedConfigurationProvidert และคอนเทนเนอร์คีย์ระดับคอมพิวเตอร์สำหรับการเข้ารหัส
1. ขั้นแรกตรวจสอบว่าส่วนการกำหนดค่าใน web.config ที่จะเข้ารหัสสามารถเข้ารหัสได้หรือไม่
2. สร้างคอนเทนเนอร์คีย์ RSA
3. ระบุคอนเทนเนอร์คีย์ที่จะใช้ใน web.config
4. เข้ารหัส web.config
5. ให้สิทธิ์การเข้าถึงแก่ คอนเทนเนอร์คีย์ RSA
ขั้นตอนที่ 1: ขั้นแรกตรวจสอบว่าส่วนการกำหนดค่าใน web.config ที่จะเข้ารหัสสามารถเข้ารหัสได้หรือไม่
ASP.NET 2.0 รองรับการเข้ารหัสของส่วนการกำหนดค่าบางส่วนของ Web.config ข้อมูลในส่วนการกำหนดค่าต่อไปนี้ไม่สามารถเข้ารหัสได้:
<processModel>
<รันไทม์>
<mscorlib>
<เริ่มต้น>
<system.runtime.remoting>
<configProtectedData>
<การประกอบดาวเทียม>
<การตั้งค่าการเข้ารหัส>
<การแมป cryptoNameMapping>
<คลาสเข้ารหัสลับ>
ขั้นตอนที่ 2: สร้างคอนเทนเนอร์คีย์ RSA หากต้องการสร้างคอนเทนเนอร์คีย์ RSA โปรดใช้เครื่องมือการลงทะเบียน ASP.NET IIS (Aspnet_regiis.exe) และสวิตช์ –pc คุณต้องตั้งชื่อคอนเทนเนอร์คีย์ที่ระบุคอนเทนเนอร์คีย์ที่ใช้โดย RsaProtectedConfigurationProvider ที่ระบุในส่วน configProtectedData ของไฟล์ Web.config ของแอปพลิเคชัน เพื่อให้แน่ใจว่าสามารถส่งออกคอนเทนเนอร์คีย์ RSA ที่สร้างขึ้นใหม่ได้ จะต้องรวมตัวเลือก -exp ไว้ด้วย
ตัวอย่างเช่น คำสั่งต่อไปนี้จะสร้างคอนเทนเนอร์คีย์ RSA ชื่อ ABeenKeys ซึ่งเป็นคอนเทนเนอร์คีย์ระดับเครื่องที่ส่งออกได้
aspnet_regiis -pc "ABeenKeys"–exp
ขั้นตอนที่ 3: แก้ไข web.config เพื่อระบุคอนเทนเนอร์คีย์
แก้ไขไฟล์ Web.config เพื่อระบุคอนเทนเนอร์คีย์ที่จะใช้
เพิ่ม <configProtectedData> ลงใน web.config เพื่อกำหนดค่าคอนเทนเนอร์คีย์ RSA ระดับเครื่องที่ชื่อ ABeenKeys ให้เพิ่มแอตทริบิวต์ xmlns ใน <configuration>
<configuration xmlns=" http://schemas.microsoft.com/.NetConfiguration/v2.0 ">saProtectedConfigurationProvider โดยใช้คอนเทนเนอร์คีย์ RSA ระดับเครื่องชื่อ ABeenKeys
<configProtectedData > <ผู้ให้บริการ> <add name="ABeenProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, processorArchitecture=MSIL" keyContainerName="ABeenKeys"/> </providers > </configProtectedData>
ขั้นตอนที่ 4: เข้ารหัสส่วน <connectionStrings> ของไฟล์ web.config ของคุณ
เข้ารหัสส่วนการกำหนดค่าในไฟล์ web.config ของคุณ
> aspnet_regiis -pe "connectionStrings" -app "/connectionTest"
ขั้นตอนที่ 5: การให้สิทธิ์การเข้าถึงคอนเทนเนอร์คีย์ RSA สามารถกำหนดได้โดยรหัสต่อไปนี้ซึ่งควรให้สิทธิ์ผู้ใช้
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
ตามค่าเริ่มต้น คอนเทนเนอร์คีย์ RSA จะได้รับการป้องกันอย่างแน่นหนาโดยรายการควบคุมการเข้าถึง NTFS (ACL) บนเซิร์ฟเวอร์ที่รายการเหล่านั้นอยู่ สิ่งนี้จะเพิ่มความปลอดภัยของข้อมูลที่เข้ารหัสโดยการจำกัดผู้ที่สามารถเข้าถึงคีย์การเข้ารหัส ก่อนที่ ASP.NET จะสามารถใช้คอนเทนเนอร์คีย์ RSA ได้ ข้อมูลเฉพาะตัวของกระบวนการของแอปพลิเคชัน ASP.NET ต้องได้รับสิทธิ์การเข้าถึงแบบอ่านไปยังคอนเทนเนอร์คีย์ RSA คุณสามารถใช้เครื่องมือ Aspnet_regiis.exe กับสวิตช์ -pa เพื่อให้ข้อมูลประจำตัวของแอปพลิเคชัน ASP.NET สิทธิ์ในการอ่านไปยังคอนเทนเนอร์คีย์ RSA ตัวอย่างเช่น คำสั่งต่อไปนี้ให้สิทธิ์การเข้าถึงบัญชี Windows Server 2003 NETWORK SERVICE แบบอ่านไปยังคอนเทนเนอร์คีย์ RSA ระดับเครื่องชื่อ ABeenKeys:
aspnet_regiis -pa "ABeenKeys" "NT AUTHORITYNETWORK SERVICE"
สังเกต:
หากคอนเทนเนอร์คีย์ RSA เป็นคอนเทนเนอร์ระดับผู้ใช้ คุณต้องเข้าสู่ระบบในฐานะผู้ใช้ที่โปรไฟล์ Windows มีคีย์เก็บไว้ และคุณต้องรวมตัวเลือก -pku เพื่อให้สิทธิ์การเข้าถึงคอนเทนเนอร์คีย์ RSA ระดับผู้ใช้
เมื่อต้องการใช้ RsaProtectedConfigurationProvider เริ่มต้นที่ระบุในการกำหนดค่าคอมพิวเตอร์ คุณต้องให้สิทธิ์การเข้าถึงข้อมูลเฉพาะตัวของ Windows ของแอปพลิเคชันแก่คอนเทนเนอร์คีย์คอมพิวเตอร์ชื่อ NetFrameworkConfigurationKey ซึ่งเป็นคอนเทนเนอร์คีย์ที่ระบุสำหรับผู้ให้บริการเริ่มต้น ตัวอย่างเช่น คำสั่งต่อไปนี้ให้สิทธิ์บัญชีบริการเครือข่ายเข้าถึงคอนเทนเนอร์คีย์ RSA ที่ใช้โดยค่าเริ่มต้น RsaProtectedConfigurationProvider
aspnet_regiis -pa "NetFrameworkConfigurationKey" "บริการ NT AUTHORITYNETWORK"
คอนเทนเนอร์คีย์ RSA NetFrameworkConfigurationKey คือคอนเทนเนอร์คีย์เริ่มต้นสำหรับคำสั่งที่ออกโดยเครื่องมือ Aspnet_regiis.exe ดังนั้นคำสั่งข้างต้นยังสามารถออกได้ดังต่อไปนี้:
ดาวน์โหลดรหัส
aspnet_regiis -pa "NT AUTHORITYNETWORK SERVICE"