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의 일부 구성 섹션에 대한 암호화를 지원합니다. 다음 구성 섹션의 데이터는 암호화할 수 없습니다
.
<런타임>
<mscorlib>
<스타트업>
<시스템.런타임.리모팅>
<configProtectedData>
<위성 어셈블리>
<암호화 설정>
<암호화 이름 매핑>
<암호화 클래스>
2단계: RSA 키 컨테이너 생성 RSA 키 컨테이너를 생성하려면 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)와 –pc 스위치를 사용하십시오. 애플리케이션 Web.config 파일의 configProtectedData 섹션에 지정된 RsaProtectedConfigurationProvider에서 사용하는 키 컨테이너를 식별하는 이름을 키 컨테이너에 제공해야 합니다. 새로 생성된 RSA 키 컨테이너를 내보낼 수 있도록 하려면 -exp 옵션을 포함해야 합니다.
예를 들어 다음 명령은 내보낼 수 있는 컴퓨터 수준 키 컨테이너인 ABeenKeys라는 RSA 키 컨테이너를 만듭니다.
aspnet_regiis -pc "ABeenKeys"–exp
3단계: web.config를 수정하여 키 컨테이너 식별
Web.config 파일을 편집하여 사용할 키 컨테이너를 식별합니다.
web.config에 추가하여 ABeenKeys라는 시스템 수준 RSA 키 컨테이너의 경우 <configuration>에 xmlns 특성을 추가합니다.
<configuration xmlns=" http://schemas.microsoft.com/.NetConfiguration/v2.0 ">ABeenKeys라는 시스템 수준 RSA 키 컨테이너를 사용하는 saProtectedConfigurationProvider.
<configProtectedData > <providers> <add name="ABeenProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, processorArchitecture=MSIL" keyContainerName="ABeenKeys"/> </providers > </configProtectedData>
4단계: web.config 파일의 <connectionStrings> 섹션 암호화
> aspnet_regiis -pe "connectionStrings" -app "/connectionTest"
에서 구성 섹션을 암호화합니다
.
5단계: RSA 키 컨테이너에 대한 액세스 권한 부여는 사용자 권한을 부여해야 하는 다음 코드에 의해 결정될 수 있습니다.
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
기본적으로 RSA 키 컨테이너는 해당 컨테이너가 위치한 서버의 NTFS ACL(액세스 제어 목록)에 의해 엄격하게 보호됩니다. 이는 암호화 키에 액세스할 수 있는 사람을 제한하여 암호화된 정보의 보안을 강화합니다. ASP.NET에서 RSA 키 컨테이너를 사용하려면 먼저 ASP.NET 애플리케이션의 프로세스 ID에 RSA 키 컨테이너에 대한 읽기 액세스 권한을 부여해야 합니다. -pa 스위치와 함께 Aspnet_regiis.exe 도구를 사용하여 ASP.NET 응용 프로그램의 ID에 RSA 키 컨테이너에 대한 읽기 권한을 부여할 수 있습니다. 예를 들어 다음 명령은 Windows Server 2003 NETWORK SERVICE 계정에 ABeenKeys라는 시스템 수준 RSA 키 컨테이너에 대한 읽기 액세스 권한을 부여합니다.
aspnet_regiis -pa "ABeenKeys" "NT AUTHORITYNETWORK SERVICE"
알아채다:
RSA 키 컨테이너가 사용자 수준 컨테이너인 경우 Windows 프로필에 키가 저장된 사용자로 로그인해야 하며 사용자 수준 RSA 키 컨테이너에 대한 액세스 권한을 부여하려면 -pku 옵션을 포함해야 합니다.
컴퓨터 구성에 지정된 기본 RsaProtectedConfigurationProvider를 사용하려면 먼저 기본 공급자에 대해 지정된 키 컨테이너인 NetFrameworkConfigurationKey라는 컴퓨터 키 컨테이너에 대한 애플리케이션의 Windows ID 액세스 권한을 부여해야 합니다. 예를 들어 다음 명령은 기본 RsaProtectedConfigurationProvider에서 사용하는 RSA 키 컨테이너에 대한 액세스 권한을 NETWORK SERVICE 계정에 부여합니다.
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITYNETWORK 서비스"
NetFrameworkConfigurationKey RSA 키 컨테이너는 Aspnet_regiis.exe 도구에서 실행한 명령에 대한 기본 키 컨테이너입니다. 따라서 위 명령을 다음과 같이 실행할 수도 있습니다:
aspnet_regiis -pa "NT AUTHORITYNETWORK SERVICE"
코드 다운로드