웹 암호화.config 파일 2
이전 글은 DataProtectionConfigurationProvider로 웹 암호화를 소개했습니다.config 파일 방법
그러나 그는 암호화된 파일은 본 컴퓨터에서만 복호화할 수 있고 여러 대의 서버가 있으면 각 컴퓨터가 단독으로 암호화해야 하기 때문에 배치에 불리하다.
RSAProtectedConfigurationProvider를 이용하여 암호화하면 이 문제를 해결할 수 있다.
본고는 RSAProtectedConfigurationProvider를 이용하여 여러 대의 서버를 배치하는 방법을 소개한다.
RSA 키 만들기
실행 명령: aspnet_regiis -pc "LiuwuNetKeys"-exp
2 가상 디렉토리 이름은 EncryptWebConfig이고 웹을 추가합니다.config 파일은 다음과 같습니다.
XML-Code:
<configProtectedData>
<providers>
<add
keyContainerName="LiuwuNetKeys"
useMachineContainer="true"
description="Liuwu.net Keys"
name="LiuwuNetProvider"
type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</configProtectedData>
<connectionStrings>
<add name="Conn" connectionString="Data Source=liuwu;User ID=liuwu;Password=liuwu;" />
</connectionStrings>
주로 config 파일에 configProtectedData 프로필을 추가합니다.
3 암호화
실행 명령 aspnet_regiis -pe "connectionStrings"-app "/EncryptWebConfig"-prov "LiuwuNetProvider"
여기서/EncryptWebConfig는 가상 디렉터리의 이름이고, LiuwuNetProvider는 이전 ConfigProtectedData 구성 섹션에서 설정한 이름입니다.
암호화된 연결 문자열은 다음과 같습니다.
<connectionStrings configProtectionProvider="LiuwuNetProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>RoOicEmyEeyGt216zRdwRXVaBWB2rRn+znQN59Y9/U55dEWtYdY3/HnVzIzS/BTeJ6JMOkXWLXFSjSNrA8LY22ya65r8FBI8byOCEFJ5nd1sIpnCA4Fhm72JEKhojGXo1kMURCfSQd8BdHCAJskMrsG3/bGJconC8TyyfEXTgcM=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>JTALo/rdj0zMzN2i0oFwP3wD6jQXijxpUjOc/5bBpOvP+dPQ2+rRDQXN5h+kzUWkB1vO4WSG9dDXif8Keud2QAJPU4eh4oc6pZ35sR6Ks/WzMqhnqPJi4GZ3yjodD+tuhgY2Cu94Q60R+IY4/DZ2iqrj4rNi51UCaFa7iF/CpOp6dMDkEu8ema0Asvfomj6R</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
4 분배 권한
이 때 프로그램을 실행하면 다음과 같은 오류가 발생할 수 있습니다.
분석기 오류 메시지: 공급자 LiuwuNetProvider를 사용하여 복호화할 수 없습니다.RSA 키 컨테이너를 열 수 없습니다.
이것은 웹 서버의 실행 계정이 RSA 용기에 접근할 수 있는 충분한 권한이 없기 때문에 우리는 그에게 권한을 분배해야 한다. win2003의 시스템에서 웹 서버의 실행 계정은 NT Authority\Network Service,
실행 명령:aspnet_regiis -pa "LiuwuNetKeys""NT Authority\Network Service"
LiuwuNetKeys가 첫 번째로 만든 키 이름
이제 프로그램이 정상적으로 실행될 수 있습니다.
5 키 내보내기
실행 명령:aspnet_regiis -px "LiuwuNetKeys""d:\LiuwuNetKeys.xml"-pri
LiuwuNetKeys는 D디스크로 내보내는 첫 번째 키 이름입니다.xml 파일
이 컴퓨터에서 작업이 완료되었습니다. 복호화하려면 aspnet_regiis -pd "connectionStrings"-app "/EncryptWebConfig"
6 다른 기계에 배치
다른 기계에서 암호화된 웹만config 파일을 복사해서 aspnet_ 실행하기regiis -pi "LiuwuNetKeys""d:\LiuwuNetKeys.xml"하면 됩니다. 권한 분배도 기억하세요.
주: 여기는 가상 디렉터리만 사용하고 실제 경로도 사용할 수 있습니다. 구체적인 매개 변수는 명령줄에서 aspnet_regiis 구체적인 도움말 보기.