ASP.NET 보호 설정을 사용하는 경우 공개 키를 사용하여 구성을 어떻게 암호화 할 수 있습니까?ASP.NET 보호 설정 - 공개 키로 암호화하는 방법?
공개 키 파일을 내보낼 수 있습니다. 그런 다음 공개 키를 사용하여 나중에 배포 할 수 있도록 다른 서버의 구성 파일을 암호화하고 싶습니다. 그러나 aspnet_regiis가 내 보낸 공개 키를 사용하는 방법을 알아낼 수 없습니다.
기본적으로 공개 키를 컨테이너로 가져 와서 암호화했습니다. 그러나 기존 키를 사용하여 암호화하는 대신 기존의 공개 키를 덮어 쓰는 완전히 새로운 키 쌍을 만듭니다. 아래의 스크립트에서 각 복사 된 파일의 이름을 connections.config로 다시 변경하고 해독하려고하면 두 번째 (connectionstring_build.encrypted)가 성공하는 반면 첫 번째 (connectionstring_server.encrypted)는 실패하고 새 키 쌍이 만들어졌습니다. (이는 경우 aspnet_regiis 기능을 테스트하기 위해 단지 예입니다 그것의 나의 실제 사용은, 분명히, 약간 다른 것 편집.) : 여기
내가 시도 접근 방식을 보여줍니다 배치 파일이REM delete container in case it already exists
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pz "MyKeys"
REM create container
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pc "MyKeys"
REM export key
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -px "MyKeys" "publicKey.xml"
REM encrypt file
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" . -prov "MyProvider"
REM copy encrypted file for later comparison
copy connections.config connectionstring_server.encrypted
pause
REM decrypt file
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pdf "connectionStrings" .
REM delete continer
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pz "MyKeys"
REM import public key
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pi "MyKeys" publicKey.xml
REM encrypt file with just public key - THIS DOES NOT WORK CORRECTLY, it creates a new keypair
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" . -prov "MyProvider"
REM copy back encrypted file
copy connections.config connectionstring_build.encrypted
pause
REM decrypt file
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pdf "connectionStrings" .
<connectionStrings>
<add name="SomConnectionName" connectionString="Data Source=somedatasource; Initial Catalog=somedatabase; Integrated Security=SSPI; Persist Security Info=False;" providerName="System.Data.SqlClient" />
</connectionStrings>
:
그리고 여기 샘플 web.config를
<?xml version="1.0"?>
<configuration>
<configProtectedData>
<providers>
<add name="MyProvider" keyContainerName="MyKeys" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" useMachineContainer="true" />
</providers>
</configProtectedData>
<connectionStrings configSource="connections.config" />
</configuration>
그리고 해당 connections.config입니다
편집 : 다음과 같이 개인 키를 내보낼 수도 있습니다. 실제로 암호화가 작동 할 수는 있지만 개인 키를 암호화 할 필요는 없습니다. 내가 원하는 것은 설정 파일을 사용할 서버에 개인 키를 남겨두고 공개 키를보다 접근하기 쉬운 장소에 저장하는 것입니다. 이렇게 간단히 aspnet_regiis의 제한을 할 수없는 것입니까?